Tanzu Kubernetes Grid 서비스는 PodSecurityPolicy 승인 컨트롤러가 사용되도록 설정된 Tanzu Kubernetes 클러스터를 프로비저닝합니다. 즉, 워크로드를 배포하려면 포드 보안 정책이 필요합니다. 클러스터 관리자는 사용자 계정에서 모든 네임스페이스로 그리고 서비스 계정에서 kube-system 네임스페이스로 포드를 배포할 수 있습니다. 다른 모든 사용 사례의 경우 PodSecurityPolicy 개체에 명시적으로 바인딩해야 합니다. 클러스터에 바인딩할 수 있는 기본 포드 보안 정책이 포함되거나 고유한 정책을 생성합니다.

Kubernetes 포드 보안 정책 정보

Kubernetes PSP(포드 보안 정책)는 포드의 보안을 제어하는 클러스터 수준 리소스입니다. PSP를 사용하면 배포할 수 있는 포드 유형 및 배포 가능한 계정 유형을 제어할 수 있습니다.

PodSecurityPolicy 리소스는 포드를 배포하기 위해 포드가 충족해야 하는 조건 집합을 정의합니다. 조건이 충족되지 않으면 포드를 배포할 수 없습니다. 단일 PodSecurityPolicy가 포드를 전체적으로 검증해야 합니다. 두 개의 서로 다른 정책에서 포드의 규칙을 나누어 가질 수 없습니다.

Kubernetes에서 포드 보안 정책의 사용을 구현하는 방법에는 여러 가지가 있습니다. 일반적인 방식은 RBAC(역할 기반 액세스 제어) 개체를 사용하는 것입니다. ClusterRole 및 ClusterRoleBinding은 클러스터 전체에 적용됩니다. 역할 및 RoleBinding은 특정 네임스페이스에 적용됩니다. RoleBinding이 사용되는 경우에는 포드를 바인딩과 동일한 네임스페이스에만 실행할 수 있습니다.

Kubernetes 포드를 생성하는 방법에는 직접과 간접의 두 가지가 있습니다. 사용자 계정을 사용하여 포드 규격을 배포하여 포드를 직접 생성합니다. 배포 또는 DaemonSet 같은 더 높은 수준의 리소스를 정의하여 포드를 간접적으로 생성합니다. 이 경우 서비스 계정은 기본 포드를 생성합니다.

PSP를 효과적으로 사용하려면 포드 생성 워크플로를 둘 다 고려해야 합니다. 사용자가 포드를 직접 생성하면 사용자 계정에 바인딩된 PSP가 작업을 제어합니다. 사용자가 서비스 계정을 통해 포드를 생성하는 경우 포드를 생성하는 데 사용되는 서비스 계정에 PSP를 바인딩해야 합니다. 포드 규격에 서비스 계정이 지정되지 않은 경우 네임스페이스의 기본 서비스 계정이 사용됩니다.

자세한 내용은 Kubernetes 설명서의 포드 보안 정책, RBAC서비스 계정을 참조하십시오.

Tanzu Kubernetes 클러스터에 대한 기본 PodSecurityPolicy

이 표에는 Tanzu Kubernetes 클러스터에 대한 권한 있는 및 제한된 기본 포드 보안 정책과 각 정책과 연결된 기본 ClusterRole이 나열 및 설명되어 있습니다.
표 1. 연결된 ClusterRole이 있는 기본 PodSecurityPolicy
기본 PSP 사용 권한 설명 연결된 기본 ClusterRole
vmware-system-privileged 임의로 실행 허용 PSP. PSP 승인 컨트롤러를 사용하도록 설정하지 않고 클러스터를 실행하는 것과 같습니다. psp:vmware-system-privileged가 이 PSP를 사용할 수 있음
vmware-system-restricted 비루트로 실행해야 함 제한 PSP. 포드 컨테이너에 대한 권한 있는 액세스를 허용하지 않으며, 루트에 대한 가능한 에스컬레이션을 차단하며, 여러 보안 메커니즘을 사용해야 합니다. psp:vmware-system-restricted가 이 PSP를 사용할 수 있음

Tanzu Kubernetes 클러스터에 대한 기본 바인딩 없음

Tanzu Kubernetes Grid 서비스Tanzu Kubernetes 클러스터에 대한 기본 RoleBinding 및 ClusterRoleBinding을 제공하지 않습니다.

vSphere 네임스페이스에 대한 편집 권한을 부여받은 vCenter Single Sign-On 사용자는 해당 네임스페이스에 배포된 모든 Tanzu Kubernetes 클러스터에 대한 cluster-admin 역할에 할당됩니다. 인증된 클러스터 관리자는 vmware-system-privileged PSP를 암시적으로 사용할 수 있습니다. 기술적으로 ClusterRoleBinding은 아니지만 동일한 효과를 갖습니다.

클러스터 관리자는 사용자가 클러스터에 배포할 수 있는 포드 유형을 허용하거나 제한하기 위한 바인딩을 정의해야 합니다. RoleBinding이 사용되는 경우 바인딩은 포드가 바인딩과 동일한 네임스페이스에서만 실행되도록 허용합니다. 이는 네임스페이스에서 실행되는 모든 포드에 대한 액세스 권한을 부여할 시스템 그룹과 연결될 수 있습니다. 클러스터에 인증하는 관리자가 아닌 사용자는 authenticated 역할에 할당되며, 이처럼 기본 PSP에 바인딩될 수 있습니다. 개발자에게 Tanzu Kubernetes 클러스터에 대한 액세스 권한 부여의 내용을 참조하십시오.

Tanzu Kubernetes 클러스터에 대한 기본 PodSecurityPolicy 효과

Tanzu Kubernetes 클러스터에는 다음과 같은 동작이 적용됩니다.
  • 클러스터 관리자는 자신의 사용자 계정을 사용하여 모든 네임스페이스에 권한 있는 포드를 직접 생성할 수 있습니다.
  • 클러스터 관리자는 kube-system 네임스페이스에서 배포, StatefulSets 및 DaemonSet(각각 권한 있는 포드 생성)를 생성할 수 있습니다. 다른 네임스페이스를 사용하려면 Tanzu Kubernetes 방명록 자습서의 내용을 참조하십시오.
  • 클러스터 관리자는 자체 PSP(두 개의 기본 PSP 외)를 생성하고 이러한 PSP를 모든 사용자에게 바인딩할 수 있습니다. 자체 PSP를 정의하는 경우 Kubernetes 설명서에서 정책 순서를 참조하십시오.
  • 클러스터 관리자가 PSP를 인증된 사용자에게 바인딩할 때까지 인증된 사용자가 권한 있거나 권한 없는 포드를 생성할 수 없습니다. Tanzu Kubernetes 방명록 자습서의 내용을 참조하십시오.