Tanzu Kubernetes 클러스터에는 권한 있는 워크로드 및 제한된 워크로드 배포를 위해 바인딩할 수 있는 기본 PodSecurityPolicy가 포함됩니다.

기본 포드 보안 정책 정보

이 섹션에서는 ClusterRoleBinding 및 RoleBinding을 포함하여 기본 포드 보안 정책에 대한 역할 바인딩 개체를 생성하기 위한 YAML 및 CLI 명령을 제공합니다. 자세한 내용은 Tanzu Kubernetes 클러스터에서 포드 보안 정책 사용의 내용을 참조하십시오.

RoleBinding은 특정 네임스페이스 내에서 사용 권한을 부여하지만 ClusterRoleBinding은 클러스터 전체에서 사용 권한을 부여합니다. RoleBinding을 사용할지 아니면 ClusterRoleBinding을 사용할지는 사용 사례에 따라 다릅니다. 예를 들어 ClusterRoleBinding을 사용하고 system:serviceaccounts:<namespace>를 사용하도록 주체를 구성하는 경우 네임스페이스가 생성되기 전에 PSP에 바인딩할 수 있습니다. 자세한 내용은 Kubernetes 설명서에서 RoleBinding 및 ClusterRoleBinding을 참조하십시오.

예 1: 권한 있는 워크로드 집합을 실행하는 ClusterRoleBinding

다음 kubectl 명령은 기본 PSP vmware-system-privileged를 사용하여 권한 있는 워크로드 집합을 실행하도록 인증된 사용자에게 액세스 권한을 부여하는 ClusterRoleBinding을 생성합니다.
경고: 예 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