使用 TKR 1.24 及更早版本的 TKG 服務叢集包括可繫結到的預設網繭安全性原則,用於有權限和受限制的工作負載部署。
使用 Role 和 ClusterRole 繫結套用預設網繭安全性原則
RoleBinding 授與特定命名空間內的權限。ClusterRoleBinding 授與叢集範圍權限。決定使用 RoleBindings 還是 ClusterRoleBinding 取決於您的使用案例。例如,如果使用 ClusterRoleBinding 並設定主體使用 system:serviceaccounts:<namespace>
,則可以在建立命名空間之前繫結至 PSP。如需詳細資訊,請參閱 Kubernetes 說明文件中的〈RoleBinding 和 ClusterRoleBinding〉。
以下幾節提供了用於建立 RoleBinding 和 ClusterRoleBinding 物件的 YAML 和 CLI 命令,這些物件授權使用預設網繭安全性原則。
範例 1:用於執行一組有權限工作負載的 ClusterRoleBinding
vmware-system-privileged
執行一組有權限的工作負載。
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
命令。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
範例 2:用於執行一組有權限工作負載的 RoleBinding
vmware-system-privileged
執行一組有權限的工作負載。
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
範例 3:用於執行一組受限制工作負載的 ClusterRoleBinding
下列 YAML 會建立一個 ClusterRoleBinding,用於向已驗證的使用者授與叢集範圍的存取權,以便能夠使用預設 PSP vmware-system-restricted
執行一組受限制的工作負載。
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
除了套用 YAML 之外,您還可以執行下列 kubectl 命令。
kubectl create clusterrolebinding psp:authenticated --clusterrole=psp:vmware-system-restricted --group=system:authenticated
範例 4:用於執行一組受限制工作負載的 RoleBinding
下列 YAML 會建立一個 RoleBinding,用於向特定命名空間內的所有服務帳戶授與存取權,以便能夠使用預設 PSP vmware-system-restricted
執行一組受限制的工作負載。
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
網繭安全性原則的範例角色
如果您定義自己的網繭安全性原則 (PSP) 以部署工作負載,請參閱此範例以建立參考自訂 PSP 的角色或 ClusterRole。
該範例示範了一個繫結到 PodSecurityPolicy 的角色。在角色定義中,授與 example-role
對您定義的自訂 PSP 資源執行 use
動詞。或者,使用其中一個預設 PSP。然後,建立繫結。
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