1
1
package armo_builtins
2
2
3
3
deny[msga] {
4
- service := input[_]
4
+
5
+ service := input[_]
5
6
service.kind == " Service"
6
7
8
+ wl := input[_]
9
+ spec_template_spec_patterns := {" Deployment" , " ReplicaSet" , " DaemonSet" , " StatefulSet" , " Pod" , " Job" , " CronJob" }
10
+ spec_template_spec_patterns[wl.kind]
11
+ wl_connected_to_service (wl, service)
12
+
7
13
specificPort := service.spec.ports[i]
8
14
portNumber := specificPort.port
9
15
service_name := service.metadata.name
10
16
namespace := service.metadata.namespace
11
17
hasUnauthenticatedService (service_name, portNumber, namespace)
12
18
13
- path := sprintf (" spec.ports[%v].port" , [i])
19
+ # Path to the pod spec
20
+ path := " spec"
14
21
15
22
msga := {
16
- " alertMessage" : sprintf (" Unauthenticated service %v" , [service_name]),
23
+ " alertMessage" : sprintf (" Unauthenticated service %v which exposes %v " , [service_name, wl.metadata.name ]),
17
24
" alertScore" : 7 ,
18
25
" fixPaths" : [],
19
26
" reviewPaths" : [path],
20
27
" failedPaths" : [path],
21
28
" packagename" : " armo_builtins" ,
22
29
" alertObject" : {
23
- " k8sApiObjects" : [service ]
30
+ " k8sApiObjects" : [wl ]
24
31
},
32
+ " relatedObjects" : [{
33
+ " object" : service
34
+ }]
25
35
}
26
36
}
27
37
28
38
hasUnauthenticatedService (service_name, port, namespace) {
29
39
networkscanner.isUnauthenticatedService (service_name, port, namespace)
30
- }
40
+ }
41
+
42
+ wl_connected_to_service (wl, svc) {
43
+ count ({x | svc.spec.selector[x] == wl.metadata.labels[x]}) == count (svc.spec.selector)
44
+ }
45
+
46
+ wl_connected_to_service (wl, svc) {
47
+ wl.spec.selector.matchLabels == svc.spec.selector
48
+ }
0 commit comments