TKG-Dienstcluster mit TKR 1.24 und früher enthalten die standardmäßige Pod-Sicherheitsrichtlinie, zu der Sie für die Bereitstellung von berechtigten und eingeschränkten Arbeitslasten eine Bindung herstellen können.

Anwenden der standardmäßigen Pod-Sicherheitsrichtlinie mithilfe von Rollen- und ClusterRole-Bindungen

vSphere IaaS control plane bietet eine standardmäßige Pod-Sicherheitsrichtlinie, die Sie auf TKG-Cluster auf Supervisor mit TKR 1.24 und früher anwenden können. Sie können dies tun, indem Sie RoleBinding- und ClusterRoleBinding-Objekte erstellen, die auf die standardmäßige Pod-Sicherheitsrichtlinieverweisen.
Hinweis: Informationen zum Erstellen Ihrer eigenen Pod-Sicherheitsrichtlinie finden Sie in der Dokumentation zu Kubernetes.

Ein RoleBinding gewährt Berechtigungen innerhalb eines bestimmten Namespace. Ein ClusterRoleBinding gewährt Berechtigungen clusterweit. Die Entscheidung, RoleBindings oder ClusterRoleBinding zu verwenden, hängt von Ihrem Anwendungsfall ab. Wenn Sie beispielsweise ClusterRoleBinding verwenden und die Subjekte für die Verwendung von system:serviceaccounts:<namespace> konfigurieren, können Sie eine Bindung an eine PSP herstellen, bevor der Namespace erstellt wird. Weitere Informationen finden Sie unter RoleBinding and ClusterRoleBinding in der Kubernetes-Dokumentation.

Die folgenden Abschnitte enthalten YAML- und CLI-Befehle zum Erstellen von RoleBinding- und ClusterRoleBinding-Objekten, die die Verwendung standardmäßige Pod-Sicherheitsrichtlinie autorisieren.

Beispiel 1: ClusterRoleBinding-Objekt zum Ausführen eines privilegierten Satzes von Arbeitslasten

Mit dem folgenden kubectl-Befehl wird ein ClusterRoleBinding-Objekt erstellt, das authentifizierten Benutzer den Zugriff für die Ausführung eines privilegierten Satzes von Arbeitslasten mithilfe des Standard-PSP vmware-system-privileged gewährt.
Warnung: Durch deklarative und imperative Anwendung von Beispiel 1 wird die clusterweite Bereitstellung privilegierter Arbeitslasten ermöglicht. In Beispiel 1 werden tatsächlich systemeigene Sicherheitskontrollen deaktiviert. Deshalb sollte dieses Beispiel mit Vorsicht und unter vollständiger Kenntnis der Auswirkungen verwendet werden. Für strengere Sicherheit sollten Sie die Beispiele 2, 3 und 4 in Betracht ziehen.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: psp:privileged
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs:     ['use']
  resourceNames:
  - vmware-system-privileged
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: all:psp:privileged
roleRef:
  kind: ClusterRole
  name: psp:privileged
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
  name: system:serviceaccounts
  apiGroup: rbac.authorization.k8s.io
Alternativ zur Anwendung von YAML können Sie folgenden kubectl-Befehl ausführen:
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated

Beispiel 2: RoleBinding-Objekt zum Ausführen eines berechtigten Satzes von Arbeitslasten

Der folgende kubectl-Befehl erstellt ein RoleBinding-Objekt, das für die Ausführung eines berechtigten Satzes von Arbeitslasten mithilfe der Standard-PSP vmware-system-privileged Zugriff auf alle Dienstkonten im Standard-Namespace gewährt.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rolebinding-default-privileged-sa-ns_default
  namespace: default
roleRef:
  kind: ClusterRole
  name: psp:vmware-system-privileged
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
  apiGroup: rbac.authorization.k8s.io
  name: system:serviceaccounts
Alternativ zur Anwendung von YAML können Sie folgenden kubectl-Befehl ausführen:
kubectl create rolebinding rolebinding-default-privileged-sa-ns_default --namespace=default --clusterrole=psp:vmware-system-privileged --group=system:serviceaccounts

Beispiel 3: ClusterRoleBinding-Objekt zum Ausführen eines eingeschränkten Satzes von Arbeitslasten

Die folgende YAML erstellt ein ClusterRoleBinding-Objekt, das authentifizierten Benutzern für die Ausführung eines begrenzten Satzes von Arbeitslasten mithilfe der Standard-PSP vmware-system-restricted clusterweiten Zugriff gewährt.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: psp:authenticated
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:authenticated
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: psp:vmware-system-restricted

Alternativ zur Anwendung von YAML können Sie folgenden kubectl-Befehl ausführen:

kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated

Beispiel 4: RoleBinding-Objekt zum Ausführen eines eingeschränkten Satzes von Arbeitslasten

Die folgende YAML erstellt ein RoleBinding-Objekt, das für die Ausführung eines begrenzten Satzes von Arbeitslasten mithilfe der Standard-PSP vmware-system-restricted Zugriff auf alle Dienstkonten in einem bestimmten Namespace gewährt.

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: psp:serviceaccounts
  namespace: some-namespace
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: psp:vmware-system-restricted
Alternativ zur Anwendung von YAML können Sie folgenden kubectl-Befehl ausführen:
Hinweis: Ändern von „some-namespace“ in den Ziel-Namespace.
kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts -n some-namespace

Beispielrolle für die Pod-Sicherheitsrichtlinie

Wenn Sie Ihre eigene Pod-Sicherheitsrichtlinie (PSP) für die Bereitstellung von Arbeitslasten definieren, verwenden Sie dieses Beispiel, um eine Rolle oder ClusterRole zu erstellen, die auf die benutzerdefinierte PSP verweist.

Das Beispiel veranschaulicht eine Rolle, die an eine PodSecurityPolicy gebunden ist. In der Rollendefinition wird der example-role das Verb use für eine von Ihnen definierte benutzerdefinierte PSP-Ressource gewährt. Alternativ können Sie eine der Standard-PSPs verwenden. Erstellen Sie dann eine Bindung.

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
  name: example-role
  namespace: tkgs-cluster-ns
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - create
  - get
  - list
  - watch
  - update
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - update
  - patch
- apiGroups: 
  - extensions
  resourceNames:
  - CUSTOM-OR-DEFAULT-PSP
  resources:
  - podsecuritypolicies
  verbs:
  - use