TKR 1.24 이하를 사용하는 TKG 서비스 클러스터에는 권한 있는 워크로드 및 제한된 워크로드 배포를 위해 바인딩할 수 있는 기본 포드 보안 정책이 포함됩니다.
역할 및 ClusterRole 바인딩을 사용하여 기본 포드 보안 정책 적용
RoleBinding은 특정 네임스페이스 내에서 사용 권한을 부여합니다. ClusterRoleBinding은 클러스터 전체에 사용 권한을 부여합니다. RoleBinding을 사용할지 아니면 ClusterRoleBinding을 사용할지는 사용 사례에 따라 다릅니다. 예를 들어 ClusterRoleBinding을 사용하고 system:serviceaccounts:<namespace>
를 사용하도록 주체를 구성하는 경우 네임스페이스가 생성되기 전에 PSP에 바인딩할 수 있습니다. 자세한 내용은 Kubernetes 설명서에서 RoleBinding 및 ClusterRoleBinding을 참조하십시오.
다음 섹션에서는 기본 포드 보안 정책을 사용하도록 권한을 부여하는 RoleBinding 및 ClusterRoleBinding 개체를 생성하기 위한 YAML 및 CLI 명령을 제공합니다.
예 1: 권한 있는 워크로드 집합을 실행하는 ClusterRoleBinding
vmware-system-privileged
를 사용하여 권한 있는 워크로드 집합을 실행하도록 인증된 사용자에게 액세스 권한을 부여하는 ClusterRoleBinding을 생성합니다.
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를 참조하는 Role 또는 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