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