[SDNC] Create Authorization Policies for SDNC 83/134583/2
authorAndrewLamb <andrew.a.lamb@est.tech>
Fri, 12 May 2023 14:37:14 +0000 (15:37 +0100)
committerAndreas Geissler <andreas-geissler@telekom.de>
Tue, 20 Jun 2023 06:56:22 +0000 (06:56 +0000)
Add initial authorized serviceaccounts for each SDNC service

Issue-ID: OOM-3131
Change-Id: I56db8f5d16ec15400fdd240c5a0126e2381f7237
Signed-off-by: AndrewLamb <andrew.a.lamb@est.tech>
kubernetes/sdnc/components/dmaap-listener/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/sdnc/components/dmaap-listener/values.yaml
kubernetes/sdnc/components/sdnc-ansible-server/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-ansible-server/values.yaml
kubernetes/sdnc/components/sdnc-web/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/sdnc/components/sdnc-web/values.yaml
kubernetes/sdnc/components/ueb-listener/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/sdnc/components/ueb-listener/values.yaml
kubernetes/sdnc/templates/authorizationpolicy.yaml [new file with mode: 0644]
kubernetes/sdnc/templates/service.yaml
kubernetes/sdnc/values.yaml

diff --git a/kubernetes/sdnc/components/dmaap-listener/templates/authorizationpolicy.yaml b/kubernetes/sdnc/components/dmaap-listener/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..7158c02
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
index e23969e..7b7b327 100644 (file)
@@ -112,6 +112,11 @@ service:
     - name: http
       port: 80
 
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals:
+      - serviceAccount: message-router-read
+
 #Resource limit flavor -By default using small
 flavor: small
 #Segregation for different environment (small and large)
diff --git a/kubernetes/sdnc/components/sdnc-ansible-server/templates/authorizationpolicy.yaml b/kubernetes/sdnc/components/sdnc-ansible-server/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..7158c02
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
index e9aeaf7..5cf7b9c 100644 (file)
@@ -109,6 +109,10 @@ service:
 ingress:
   enabled: false
 
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals: []
+
 #Resource Limit flavor -By default using small
 flavor: small
 
diff --git a/kubernetes/sdnc/components/sdnc-web/templates/authorizationpolicy.yaml b/kubernetes/sdnc/components/sdnc-web/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..7158c02
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
index 3563eb7..391ef04 100644 (file)
@@ -81,6 +81,12 @@ ingress:
     name: "sdnc-web"
     port: 8080
 
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals:
+      - serviceAccount: istio-ingress
+        namespace: istio-ingress
+
 #Resource limit flavor -By default using small
 flavor: small
 #segregation for different environment (small and large)
diff --git a/kubernetes/sdnc/components/ueb-listener/templates/authorizationpolicy.yaml b/kubernetes/sdnc/components/ueb-listener/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..7158c02
--- /dev/null
@@ -0,0 +1,17 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
\ No newline at end of file
index 51c74b9..493c684 100644 (file)
@@ -123,6 +123,10 @@ service:
 ingress:
   enabled: false
 
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals: []
+
 #Resource limit flavor -By default using small
 flavor: small
 #Segregation for different environment (small and large)
diff --git a/kubernetes/sdnc/templates/authorizationpolicy.yaml b/kubernetes/sdnc/templates/authorizationpolicy.yaml
new file mode 100644 (file)
index 0000000..672ddf0
--- /dev/null
@@ -0,0 +1,61 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+
+{{ include "common.authorizationPolicy" . }}
+---
+{{- $dot := default . .dot -}}
+{{- $trustedDomain := default "cluster.local" $dot.Values.serviceMesh.authorizationPolicy.trustedDomain -}}
+{{- $authorizedPrincipalsSdnHosts := default list $dot.Values.serviceMesh.authorizationPolicy.authorizedPrincipalsSdnHosts -}}
+{{- $defaultOperationMethods := list "GET" "POST" "PUT" "PATCH" "DELETE" -}}
+{{- $relName := include "common.release" . -}}
+{{- if (include "common.useAuthorizationPolicies" .) }}
+apiVersion: security.istio.io/v1beta1
+kind: AuthorizationPolicy
+metadata:
+  name: sdnhost-{{ include "common.servicename" . }}-authz
+  namespace: {{ include "common.namespace" . }}
+spec:
+  selector:
+    matchLabels:
+      app: sdnhost-{{ include "common.name" . }}
+  action: ALLOW
+  rules:
+{{-   if $authorizedPrincipalsSdnHosts }}
+{{-     range $principal := $authorizedPrincipalsSdnHosts }}
+  - from:
+    - source:
+        principals:
+{{-       $namespace := default "onap" $principal.namespace -}}
+{{-       if eq "onap" $namespace }}
+        - "{{ $trustedDomain }}/ns/{{ $namespace }}/sa/{{ $relName }}-{{ $principal.serviceAccount }}"
+{{-       else }}
+        - "{{ $trustedDomain }}/ns/{{ $namespace }}/sa/{{ $principal.serviceAccount }}"
+{{-       end }}
+    to:
+    - operation:
+        methods:
+{{-       if $principal.allowedOperationMethods }}
+{{-         range $method := $principal.allowedOperationMethods }}
+        - {{ $method }}
+{{-         end }}
+{{-       else }}
+{{-         range $method := $defaultOperationMethods }}
+        - {{ $method }}
+{{-         end }}
+{{-       end }}
+{{-     end }}
+{{-   end }}
+{{- end }}
\ No newline at end of file
index 3490dff..c5ae5d5 100644 (file)
@@ -105,6 +105,7 @@ metadata:
   name: sdnhost-{{ include "common.servicename" . }}-0
   namespace: {{ .Release.Namespace }}
   labels:
+    app: sdnhost-{{ include "common.name" . }}
     statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-0
 spec:
   ports:
@@ -126,6 +127,7 @@ metadata:
   name: sdnhost-{{ include "common.servicename" . }}-1
   namespace: {{ .Release.Namespace }}
   labels:
+    app: sdnhost-{{ include "common.name" . }}
     statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-1
 spec:
   ports:
@@ -147,6 +149,7 @@ metadata:
   name: sdnhost-{{ include "common.servicename" . }}-2
   namespace: {{ .Release.Namespace }}
   labels:
+    app: sdnhost-{{ include "common.name" . }}
     statefulset.kubernetes.io/pod-name: {{ include "common.fullname" . }}-2
 spec:
   ports:
index f02bc0b..ee8b2e5 100644 (file)
@@ -586,6 +586,26 @@ ingress:
   config:
     ssl: "redirect"
 
+serviceMesh:
+  authorizationPolicy:
+    authorizedPrincipals:
+      - serviceAccount: a1policymanagement-read
+      - serviceAccount: cds-blueprints-processor-read
+      - serviceAccount: consul-read
+      - serviceAccount: ncmp-dmi-plugin-read
+      - serviceAccount: policy-drools-pdp-read
+      - serviceAccount: robot-read
+      - serviceAccount: sdnc-ansible-server-read
+      - serviceAccount: sdnc-dmaap-listener-read
+      - serviceAccount: sdnc-prom-read
+      - serviceAccount: sdnc-ueb-listener-read
+      - serviceAccount: sdnc-web-read
+      - serviceAccount: so-sdnc-adapter-read
+      - serviceAccount: istio-ingress
+        namespace: istio-ingress
+    authorizedPrincipalsSdnHosts:
+      - serviceAccount: sdnc-read
+
 #Resource Limit flavor -By Default using small
 flavor: small
 #segregation for different envionment (Small and Large)