@@ -597,7 +597,7 @@ func (dm *KubeArmorDaemon) backupKubeArmorContainerPolicy(policy tp.SecurityPoli
597
597
}
598
598
}
599
599
600
- func (dm * KubeArmorDaemon ) restoreKubeArmorHostPolicies () {
600
+ func (dm * KubeArmorDaemon ) restoreKubeArmorPolicies () {
601
601
if _ , err := os .Stat (cfg .PolicyDir ); err != nil {
602
602
kg .Warn ("Policies dir not found for restoration" )
603
603
return
@@ -607,15 +607,42 @@ func (dm *KubeArmorDaemon) restoreKubeArmorHostPolicies() {
607
607
if policyFiles , err := os .ReadDir (cfg .PolicyDir ); err == nil {
608
608
for _ , file := range policyFiles {
609
609
if data , err := os .ReadFile (cfg .PolicyDir + file .Name ()); err == nil {
610
- var hostPolicy tp.HostSecurityPolicy
611
- if err := json .Unmarshal (data , & hostPolicy ); err == nil {
612
- dm .HostSecurityPolicies = append (dm .HostSecurityPolicies , hostPolicy )
610
+
611
+ var k struct {
612
+ Metadata map [string ]string `json:"metadata"`
613
+ }
614
+
615
+ err := json .Unmarshal (data , & k )
616
+ if err != nil {
617
+ kg .Errf ("Failed to unmarshal policy: %v" , err )
618
+ continue
619
+ }
620
+
621
+ if _ , ok := k .Metadata ["namespaceName" ]; ok { // ContainerPolicy contains namespaceName
622
+ var containerPolicy tp.K8sKubeArmorPolicy
623
+ if err := json .Unmarshal (data , & containerPolicy ); err == nil {
624
+ containerPolicy .Metadata .Name = k .Metadata ["policyName" ]
625
+ dm .ParseAndUpdateContainerSecurityPolicy (tp.K8sKubeArmorPolicyEvent {
626
+ Type : "ADDED" ,
627
+ Object : containerPolicy ,
628
+ })
629
+ }
630
+
631
+ } else { // HostSecurityPolicy
632
+ var hostPolicy tp.HostSecurityPolicy
633
+ if err := json .Unmarshal (data , & hostPolicy ); err == nil {
634
+ dm .HostSecurityPolicies = append (dm .HostSecurityPolicies , hostPolicy )
635
+ } else {
636
+ kg .Errf ("Failed to unmarshal host policy: %v" , err )
637
+ }
613
638
}
614
639
}
615
640
}
616
641
617
642
if len (policyFiles ) != 0 {
618
- dm .UpdateHostSecurityPolicies ()
643
+ if len (dm .HostSecurityPolicies ) != 0 {
644
+ dm .UpdateHostSecurityPolicies ()
645
+ }
619
646
} else {
620
647
kg .Warn ("No policies found for restoration" )
621
648
}
0 commit comments