使用 TKR 1.24 及更早版本的 TKG 服務叢集包括可繫結到的預設網繭安全性原則,用於有權限和受限制的工作負載部署。

使用 Role 和 ClusterRole 繫結套用預設網繭安全性原則

vSphere IaaS control plane 提供了 預設網繭安全性原則,您可以將其套用至執行 TKR 1.24 及更早版本的 主管 上的 TKG 叢集。為此,您可以建立參考 預設網繭安全性原則的 RoleBinding 和 ClusterRoleBinding 物件。
備註: 請參閱 Kubernetes 說明文件撰寫您自己的網繭安全性原則。

RoleBinding 授與特定命名空間內的權限。ClusterRoleBinding 授與叢集範圍權限。決定使用 RoleBindings 還是 ClusterRoleBinding 取決於您的使用案例。例如,如果使用 ClusterRoleBinding 並設定主體使用 system:serviceaccounts:<namespace>,則可以在建立命名空間之前繫結至 PSP。如需詳細資訊,請參閱 Kubernetes 說明文件中的〈RoleBinding 和 ClusterRoleBinding〉

以下幾節提供了用於建立 RoleBinding 和 ClusterRoleBinding 物件的 YAML 和 CLI 命令,這些物件授權使用預設網繭安全性原則

範例 1:用於執行一組有權限工作負載的 ClusterRoleBinding

下列 kubectl 命令會建立一個 ClusterRoleBinding,用於向已驗證的使用者授與存取權,以便能夠使用預設 PSP vmware-system-privileged 執行一組有權限的工作負載。
警告: 以宣告方式或強制性方式套用範例 1 允許在叢集範圍內部署具特殊權限的工作負載。實際上,範例 1 停用原生安全性控制,因此,應謹慎使用並完全瞭解影響。為了加強安全性,請考慮範例 2、3 和 4。
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
除了套用 YAML 之外,您還可以執行下列 kubectl 命令。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated

範例 2:用於執行一組有權限工作負載的 RoleBinding

下列 kubectl 命令會建立一個 RoleBinding,用於向預設命名空間內的所有服務帳戶授與存取權,以便能夠使用預設 PSP 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
除了套用 YAML 之外,您還可以執行下列 kubectl 命令。
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
除了套用 YAML 之外,您還可以執行下列 kubectl 命令。
備註: 將「some-namespace」變更為目標命名空間。
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