namespace-config: Grant access to existing PSP

This change updates the namespace-config chart to (optionally) create
RBAC rules allowing service accounts in the namespace 'use' access to an
existing Pod Security Policy in the cluster. The policy is specified as:

    podSecurityPolicy:
      existingPsp: name-of-existing-psp

This aligns with the PSP deprecation guidance provided to date [0],
which suggests easing the transition to the "PSP Replacement Policy" by
establishing the standard PSPs (Restricted, Baseline, and Privileged),
assigning a cluster-wide default, and binding more-permissive policies
as needed in certain namespaces.

[0] https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/

Change-Id: I46da230abf822e0cc3553561fd779444439c34a7
This commit is contained in:
Phil Sphicas 2021-08-01 07:08:15 +00:00
parent 9797d1b034
commit 3c4ebf0172
4 changed files with 37 additions and 1 deletions

View File

@ -15,6 +15,6 @@ apiVersion: v1
appVersion: v1.0.0 appVersion: v1.0.0
description: OpenStack-Helm Namespace Config description: OpenStack-Helm Namespace Config
name: namespace-config name: namespace-config
version: 0.1.0 version: 0.1.1
home: https://kubernetes.io/docs/concepts/policy/limit-range/ home: https://kubernetes.io/docs/concepts/policy/limit-range/
... ...

View File

@ -0,0 +1,29 @@
{{- if (not (empty .Values.podSecurityPolicy.existingPsp)) -}}
{{- $name := printf "psp:%s:%s" .Release.Name .Values.podSecurityPolicy.existingPsp -}}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ $name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ $name }}
subjects:
- kind: Group
name: system:serviceaccounts:{{ .Release.Namespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ $name }}
rules:
- apiGroups:
- policy
resources:
- podsecuritypolicies
verbs:
- use
resourceNames:
- {{ .Values.podSecurityPolicy.existingPsp }}
{{- end -}}

View File

@ -24,4 +24,10 @@ limits:
defaultRequest: defaultRequest:
cpu: 0.1 cpu: 0.1
memory: 64Mi memory: 64Mi
podSecurityPolicy:
# Optionally specify the name of an existing pod security policy.
# If specified, a role and rolebinding will be created granting access for
# service accounts in this namespace to use existingPsp.
existingPsp: ""
... ...

View File

@ -1,4 +1,5 @@
--- ---
namespace-config: namespace-config:
- 0.1.0 Initial Chart - 0.1.0 Initial Chart
- 0.1.1 Grant access to existing PodSecurityPolicy
... ...