Tanzu Kubernetes クラスタには、権限のある、および制限されたワークロードのデプロイのためにバインドできるデフォルトの PodSecurityPolicy が含まれています。

デフォルトのポッド セキュリティ ポリシーについて

このセクションでは、ClusterRoleBinding や RoleBinding などのデフォルトのポッド セキュリティ ポリシーにロール バインド オブジェクトを作成するための YAML および CLI コマンドについて説明します。詳細については、『Tanzu Kubernetes クラスタでのポッド セキュリティ ポリシーの使用』を参照してください。

RoleBinding は特定の名前空間内の権限を付与しますが、ClusterRoleBinding はクラスタ全体に対する権限を付与します。RoleBindings または ClusterRoleBinding を使用するかどうかは、使用方法によって異なります。たとえば、ClusterRoleBinding を使用して、system:serviceaccounts:<namespace> を使用するようにサブジェクトを構成する場合は、名前空間を作成する前に PSP にバインドできます。詳細については、Kubernetes ドキュメントのRoleBinding および ClusterRoleBindingを参照してください。

例 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 コマンドは、デフォルトの PSP vmware-system-privileged を使用して、権限のあるワークロードのセットを実行するためにデフォルトの名前空間内のすべてのサービス アカウントへのアクセスを許可する RoleBinding を作成します。
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 は、デフォルトの PSP vmware-system-restricted を使用して、制限されたワークロードのセットを実行するためにクラスタ全体へのアクセスを認証ユーザーに許可する ClusterRoleBinding を作成します。

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 は、デフォルトの PSP vmware-system-restricted を使用して、制限されたワークロードのセットを実行するために特定の名前空間内のすべてのサービス アカウントへのアクセスを許可する RoleBinding を作成します。

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 コマンドを実行することもできます。

kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts