감독자의 TKG는 TKR v1.24 및 이전 버전을 사용하는 Tanzu Kubernetes 클러스터에 대해 기본적으로 사용하도록 설정된 포드 보안 정책 승인 컨트롤러를 사용하여 포드 보안을 지원합니다.
사전 요구 사항: TKR 1.24 및 이전 버전
이 항목의 컨텐츠는 TKR v1.24 및 이전 버전으로 프로비저닝된 감독자의 TKG 클러스터에 적용됩니다. 기본적으로 이러한 Tanzu Kubernetes 릴리스는 포드 보안 정책 승인 컨트롤러를 사용하도록 설정합니다.
포드 보안 정책 승인 컨트롤러의 후속 버전은 포드 보안 승인 컨트롤러입니다. TKR v1.25 이상으로 프로비저닝된 감독자의 TKG 클러스터는 포드 보안 승인 컨트롤러를 사용하도록 설정합니다. TKR 1.25 이상에 대한 PSA 구성의 내용을 참조하십시오.
포드 보안 정책 승인 컨트롤러
Kubernetes PSP(포드 보안 정책)는 포드의 보안을 제어하는 클러스터 수준 리소스입니다. PSP를 사용하면 배포할 수 있는 포드 유형 및 배포 가능한 계정 유형을 제어할 수 있습니다.
PodSecurityPolicy 리소스는 포드를 배포하기 위해 포드가 충족해야 하는 조건 집합을 정의합니다. 조건이 충족되지 않으면 포드를 배포할 수 없습니다. 단일 PodSecurityPolicy가 포드를 전체적으로 검증해야 합니다. 두 개의 서로 다른 정책에서 포드의 규칙을 나누어 가질 수 없습니다. 자세한 내용은 Kubernetes 설명서의 포드 보안 정책, RBAC를 참조하십시오.
Kubernetes에서 포드 보안 정책의 사용을 구현하는 방법에는 여러 가지가 있습니다. 일반적인 방식은 RBAC(역할 기반 액세스 제어) 개체를 사용하는 것입니다. ClusterRole 및 ClusterRoleBinding은 클러스터 전체에 적용됩니다. 역할 및 RoleBinding은 특정 네임스페이스에 적용됩니다. RoleBinding이 사용되는 경우에는 포드를 바인딩과 동일한 네임스페이스에만 실행할 수 있습니다. 자세한 내용은 Kubernetes 설명서에서 RBAC를 참조하십시오.
Kubernetes 포드를 생성하는 방법에는 직접과 간접의 두 가지가 있습니다. 사용자 계정을 사용하여 포드 규격을 배포하여 포드를 직접 생성합니다. 배포 또는 DaemonSet 같은 더 높은 수준의 리소스를 정의하여 포드를 간접적으로 생성합니다. 이 경우 서비스 계정은 기본 포드를 생성합니다. 자세한 내용은 Kubernetes 설명서에서 서비스 계정을 참조하십시오.
PSP를 효과적으로 사용하려면 포드 생성 워크플로(직접 및 간접)를 둘 다 고려해야 합니다. 사용자가 포드를 직접 생성하면 사용자 계정에 바인딩된 PSP가 작업을 제어합니다. 사용자가 서비스 계정을 통해 포드를 생성하는 경우 포드를 생성하는 데 사용되는 서비스 계정에 PSP를 바인딩해야 합니다. 포드 규격에 서비스 계정이 지정되지 않은 경우 네임스페이스의 기본 서비스 계정이 사용됩니다.
TKG 클러스터에 대한 기본 PodSecurityPolicy
기본 PSP | 사용 권한 | 설명 | 연결된 기본 ClusterRole |
---|---|---|---|
vmware-system-privileged |
임의로 실행 | 허용 PSP. PSP 승인 컨트롤러를 사용하도록 설정하지 않고 클러스터를 실행하는 것과 같습니다. | psp:vmware-system-privileged 가 이 PSP를 사용할 수 있음 |
vmware-system-restricted |
비루트로 실행해야 함 | 제한 PSP. 포드 컨테이너에 대한 권한 있는 액세스를 허용하지 않으며, 루트에 대한 가능한 에스컬레이션을 차단하며, 여러 보안 메커니즘을 사용해야 합니다. | psp:vmware-system-restricted 가 이 PSP를 사용할 수 있음 |
TKG 클러스터에 대한 역할 및 ClusterRole 바인딩
감독자의 TKG는 TKG 클러스터에 대한 기본 RoleBinding 및 ClusterRoleBinding을 제공하지 않습니다. 사용할 수 있는 예시는 이 설명서에 제공됩니다. TKG 서비스 클러스터에 기본 포드 보안 정책 적용의 내용을 참조하십시오.
vSphere 네임스페이스에 대한 편집 권한을 부여받은 vCenter Single Sign-On 사용자는 해당 네임스페이스에 배포된 모든 Tanzu Kubernetes 클러스터에 대한 cluster-admin 역할에 할당됩니다. 인증된 클러스터 관리자는 vmware-system-privileged
PSP를 암시적으로 사용할 수 있습니다. 기술적으로 ClusterRoleBinding은 아니지만 동일한 효과를 갖습니다.
클러스터 관리자는 사용자가 클러스터에 배포할 수 있는 포드 유형을 허용하거나 제한하기 위한 바인딩을 정의해야 합니다. RoleBinding이 사용되는 경우 바인딩은 포드가 바인딩과 동일한 네임스페이스에서만 실행되도록 허용합니다. 이는 네임스페이스에서 실행되는 모든 포드에 대한 액세스 권한을 부여할 시스템 그룹과 연결될 수 있습니다. 클러스터에 인증하는 관리자가 아닌 사용자는 authenticated
역할에 할당되며, 이처럼 기본 PSP에 바인딩될 수 있습니다.
- 클러스터 관리자는 자신의 사용자 계정을 사용하여 모든 네임스페이스에 권한 있는 포드를 직접 생성할 수 있습니다.
- 클러스터 관리자는 kube-system 네임스페이스에서 배포, StatefulSets 및 DaemonSet(각각 권한 있는 포드 생성)를 생성할 수 있습니다. 다른 Kubernetes 네임스페이스를 사용하려면 이에 대한 RoleBinding 또는 ClusterRoleBinding을 생성합니다.
- 클러스터 관리자는 자체 PSP(두 개의 기본 PSP 외)를 생성하고 이러한 PSP를 모든 사용자에게 바인딩할 수 있습니다. 자체 PSP를 정의하는 경우 Kubernetes 설명서에서 정책 순서를 참조하십시오.
- 클러스터 관리자가 PSP를 인증된 사용자에게 바인딩할 때까지 인증된 사용자가 권한 있거나 권한 없는 포드를 생성할 수 없습니다.
바인딩 예시는 TKG 서비스 클러스터에 기본 포드 보안 정책 적용의 내용을 참조하십시오.