TKR 1.24 以前を使用している TKG サービス クラスタには、権限および制限のあるワークロード デプロイ用の、バインド可能なポッド セキュリティ ポリシーがデフォルトで含まれています。
ロールと 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
を使用して、権限のあるワークロードのセットを実行するためにデフォルトの名前空間内のすべてのサービス アカウントへのアクセスを許可する 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
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
kubectl create rolebinding psp:serviceaccounts --clusterrole=psp:vmware-system-restricted --group=system:serviceaccounts -n some-namespace
ポッド セキュリティ ポリシーのロールの例
ワークロードをデプロイするために独自のポッド セキュリティ ポリシー (PSP) を定義する場合、この例を参照して、カスタム PSP を参照するロールまたは ClusterRole を作成します。
例は、PodSecurityPolicy にバインドされたロールを示しています。ロールの定義で use
を verb として使用して、定義するカスタム PSP リソースに example-role
を付与します。または、デフォルトの PSP の 1 つを使用します。次に、バインドを作成します。
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