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
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
vmware-system-privileged
gewährt.
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
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
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
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
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