@@ -17,10 +17,11 @@ deny[msga] {
17
17
not is_exposed_service (svc)
18
18
19
19
wl := input[_]
20
- wl.metadata.namespace == svc.metadata.namespace
20
+ is_same_namespace ( wl.metadata, svc.metadata)
21
21
spec_template_spec_patterns := {" Deployment" , " ReplicaSet" , " DaemonSet" , " StatefulSet" , " Pod" , " Job" , " CronJob" }
22
22
spec_template_spec_patterns[wl.kind]
23
- wl_connected_to_service (wl, svc)
23
+ pod := get_pod_spec (wl)[" spec" ]
24
+ wl_connected_to_service (pod, svc)
24
25
25
26
result := svc_connected_to_httproute (svc, httproute)
26
27
@@ -56,23 +57,56 @@ is_exposed_service(svc) {
56
57
svc.spec.type == " LoadBalancer"
57
58
}
58
59
60
+ wl_connected_to_service (wl, svc) {
61
+
59
62
60
- wl_connected_to_service (wl, svc) {
61
- wl.metadata.namespace == svc.metadata.namespace
63
+ count ({x | svc.spec.selector[x] == wl.metadata.labels[x]}) == count (svc.spec.selector)
62
64
}
63
65
64
- wl_connected_to_service (wl, svc) {
65
- count ({x | svc.spec.selector[x] == wl.metadata.labels[x]}) == count (svc.spec.selector)
66
+
67
+ is_same_namespace (metadata1, metadata2) {
68
+ metadata1.namespace == metadata2.namespace
69
+ }
70
+
71
+ is_same_namespace (metadata1, metadata2) {
72
+ not metadata1.namespace
73
+ not metadata2.namespace
74
+ }
75
+
76
+ is_same_namespace (metadata1, metadata2) {
77
+ not metadata2.namespace
78
+ metadata1.namespace == " default"
79
+ }
80
+
81
+ is_same_namespace (metadata1, metadata2) {
82
+ not metadata1.namespace
83
+ metadata2.namespace == " default"
84
+ }
85
+
86
+
87
+
88
+ # get_volume - get resource spec paths for {"Deployment","ReplicaSet","DaemonSet","StatefulSet","Job"}
89
+ get_pod_spec (resources) := result {
90
+ resources_kinds := {" Deployment" ," ReplicaSet" ," DaemonSet" ," StatefulSet" ," Job" }
91
+ resources_kinds[resources.kind]
92
+ result = {" spec" : resources.spec.template, " start_of_path" : " spec.template." }
66
93
}
67
94
68
- wl_connected_to_service (wl, svc) {
69
- wl.spec.selector.matchLabels == svc.spec.selector
95
+ # get_volume - get resource spec paths for "Pod"
96
+ get_pod_spec (resources) := result {
97
+ resources.kind == " Pod"
98
+ result = {" spec" : resources, " start_of_path" : " " }
70
99
}
71
100
72
- wl_connected_to_service (wl, svc) {
73
- count ({x | svc.spec.selector[x] == wl.spec.template.metadata.labels[x]}) == count (svc.spec.selector)
101
+ # get_volume - get resource spec paths for "CronJob"
102
+ get_pod_spec (resources) := result {
103
+ resources.kind == " CronJob"
104
+ result = {" spec" : resources.spec.jobTemplate.spec.template.spec, " start_of_path" : " spec.jobTemplate.spec.template.spec." }
74
105
}
75
106
107
+
108
+
109
+
76
110
svc_connected_to_httproute (svc, httproute) = result {
77
111
rule := httproute.spec.rules[i]
78
112
ref := rule.backendRefs[j]
0 commit comments