@@ -37,7 +37,9 @@ func (dm *KubeArmorDaemon) HandleFile(file string) {
37
37
break
38
38
}
39
39
}
40
- f .Close ()
40
+
41
+ defer f .Close ()
42
+
41
43
w , err := fsnotify .NewWatcher ()
42
44
if err != nil {
43
45
log .Fatal ("Error creating new watcher:" , err )
@@ -92,60 +94,6 @@ func (dm *KubeArmorDaemon) HandleFile(file string) {
92
94
}
93
95
94
96
func (dm * KubeArmorDaemon ) handleContainerCreate (container tp.Container ) {
95
- // endpoint := types.EndPoint{}
96
-
97
- // dm.ContainersLock.Lock()
98
- // defer dm.ContainersLock.Unlock()
99
- // if _, ok := dm.Containers[container.ContainerID]; !ok {
100
- // dm.Containers[container.ContainerID] = container
101
- // } else if dm.Containers[container.ContainerID].PidNS == 0 && dm.Containers[container.ContainerID].MntNS == 0 {
102
- // c := dm.Containers[container.ContainerID]
103
- // c.MntNS = container.MntNS
104
- // c.PidNS = container.PidNS
105
- // c.AppArmorProfile = container.AppArmorProfile
106
- // dm.Containers[c.ContainerID] = c
107
- // dm.EndPointsLock.Lock()
108
- // for idx, endPoint := range dm.EndPoints {
109
- // if endPoint.NamespaceName == container.NamespaceName && endPoint.EndPointName == container.EndPointName && kl.ContainsElement(endPoint.Containers, container.ContainerID) {
110
-
111
- // // update apparmor profiles
112
- // if !kl.ContainsElement(endPoint.AppArmorProfiles, container.AppArmorProfile) {
113
- // dm.EndPoints[idx].AppArmorProfiles = append(dm.EndPoints[idx].AppArmorProfiles, container.AppArmorProfile)
114
- // }
115
-
116
- // if container.Privileged && dm.EndPoints[idx].PrivilegedContainers != nil {
117
- // dm.EndPoints[idx].PrivilegedContainers[container.ContainerName] = struct{}{}
118
- // }
119
-
120
- // endpoint = dm.EndPoints[idx]
121
-
122
- // break
123
- // }
124
- // }
125
- // dm.EndPointsLock.Unlock()
126
- // }
127
-
128
- // if len(dm.OwnerInfo) > 0 {
129
- // container.Owner = dm.OwnerInfo[container.EndPointName]
130
- // }
131
-
132
- // if dm.SystemMonitor != nil && cfg.GlobalCfg.Policy {
133
- // dm.SystemMonitor.AddContainerIDToNsMap(container.ContainerID, container.NamespaceName, container.PidNS, container.MntNS)
134
- // dm.RuntimeEnforcer.RegisterContainer(container.ContainerID, container.PidNS, container.MntNS)
135
-
136
- // if len(endpoint.SecurityPolicies) > 0 { // struct can be empty or no policies registered for the endpoint yet
137
- // dm.Logger.UpdateSecurityPolicies("ADDED", endpoint)
138
- // if dm.RuntimeEnforcer != nil && endpoint.PolicyEnabled == types.KubeArmorPolicyEnabled {
139
- // // enforce security policies
140
- // dm.RuntimeEnforcer.UpdateSecurityPolicies(endpoint)
141
- // }
142
- // }
143
- // }
144
-
145
- // if container.ContainerID == "" {
146
- // return false
147
- // }
148
-
149
97
endPoint := tp.EndPoint {}
150
98
151
99
dm .ContainersLock .Lock ()
@@ -164,36 +112,7 @@ func (dm *KubeArmorDaemon) handleContainerCreate(container tp.Container) {
164
112
165
113
containerLabels , containerIdentities := kl .GetLabelsFromString (container .Labels )
166
114
dm .EndPointsLock .Lock ()
167
-
168
- endPoint .EndPointName = container .ContainerName
169
- endPoint .NamespaceName = container .NamespaceName
170
- endPoint .Containers = []string {container .ContainerID }
171
- endPoint .Labels = containerLabels
172
- endPoint .Identities = containerIdentities
173
- endPoint .PolicyEnabled = tp .KubeArmorPolicyEnabled
174
- endPoint .ProcessVisibilityEnabled = true
175
- endPoint .FileVisibilityEnabled = true
176
- endPoint .NetworkVisibilityEnabled = true
177
- endPoint .CapabilitiesVisibilityEnabled = true
178
-
179
- endPoint .AppArmorProfiles = []string {"kubearmor_" + container .ContainerName }
180
-
181
- globalDefaultPosture := tp.DefaultPosture {
182
- FileAction : cfg .GlobalCfg .DefaultFilePosture ,
183
- NetworkAction : cfg .GlobalCfg .DefaultNetworkPosture ,
184
- CapabilitiesAction : cfg .GlobalCfg .DefaultCapabilitiesPosture ,
185
- }
186
- endPoint .DefaultPosture = globalDefaultPosture
187
-
188
- dm .SecurityPoliciesLock .RLock ()
189
- for _ , secPol := range dm .SecurityPolicies {
190
- if kl .MatchIdentities (secPol .Spec .Selector .Identities , endPoint .Identities ) {
191
- endPoint .SecurityPolicies = append (endPoint .SecurityPolicies , secPol )
192
- }
193
- }
194
- dm .SecurityPoliciesLock .RUnlock ()
195
-
196
- dm .EndPoints = append (dm .EndPoints , endPoint )
115
+ dm .CreateEndpoint (& endPoint , container , containerLabels , containerIdentities , "ADDED" )
197
116
dm .EndPointsLock .Unlock ()
198
117
}
199
118
} else if dm .Containers [container .ContainerID ].PidNS == 0 && dm .Containers [container .ContainerID ].MntNS == 0 {
@@ -229,23 +148,7 @@ func (dm *KubeArmorDaemon) handleContainerCreate(container tp.Container) {
229
148
}
230
149
231
150
if dm .SystemMonitor != nil && cfg .GlobalCfg .Policy {
232
- // for throttling
233
- dm .SystemMonitor .Logger .ContainerNsKey [container .ContainerID ] = kl.OuterKey {
234
- MntNs : container .MntNS ,
235
- PidNs : container .PidNS ,
236
- }
237
-
238
- // update NsMap
239
- dm .SystemMonitor .AddContainerIDToNsMap (container .ContainerID , container .NamespaceName , container .PidNS , container .MntNS )
240
- dm .RuntimeEnforcer .RegisterContainer (container .ContainerID , container .PidNS , container .MntNS )
241
-
242
- if len (endPoint .SecurityPolicies ) > 0 { // struct can be empty or no policies registered for the endPoint yet
243
- dm .Logger .UpdateSecurityPolicies ("ADDED" , endPoint )
244
- if dm .RuntimeEnforcer != nil && endPoint .PolicyEnabled == tp .KubeArmorPolicyEnabled {
245
- // enforce security policies
246
- dm .RuntimeEnforcer .UpdateSecurityPolicies (endPoint )
247
- }
248
- }
151
+ dm .PopulateMaps (endPoint , container )
249
152
}
250
153
251
154
if cfg .GlobalCfg .StateAgent {
0 commit comments