Amazon Elastic Kubernetes Service(Amazon EKS) 포드의 포드 보안 표준 및 포드 보안 승인과 관련하여 몇 가지 질문이 있습니다.
Q: Amazon EKS 클러스터의 Pod Security Standards 및 Pod Security Admission을 켜거나 끄려면 어떻게 해야 합니까?
기본적으로 Kubernetes 버전 1.23 이상은 클러스터 수준에서 권한 있는 Pod Security Standards 프로파일에 대해 모든 Pod Security Admission 모드를 켭니다. Pod Security Admission을 사용하면 모든 네임스페이스에서 권한 있는 Pod Security Standards 프로파일이 있는 포드 또는 배포가 허용됩니다.
Q: Kubernetes 네임스페이스 수준에서 특정 Pod Security Admission 모드와 Pod Security Standards 프로파일을 적용하려면 어떻게 해야 합니까?
Kubernetes 네임스페이스 수준에서 특정 Pod Security Admission 모드와 Pod Security Standards 프로파일을 적용하려면 네임스페이스 레이블을 적절히 구성합니다.
예시:
다음 명령을 실행하여 baseline Pod Security Standards에 대한 enforce 모드를 단일 네임스페이스에 적용합니다.
$ kubectl label --overwrite ns test-namespace pod-security.kubernetes.io/enforce=baseline
다음 명령을 실행하여 baseline Pod Security Standards에 대한 enforce 모드를 사용 가능한 모든 네임스페이스에 적용합니다.
$ kubectl label --overwrite ns --all pod-security.kubernetes.io/enforce=baseline
참고: 위의 명령에서 test-namespace를 네임스페이스의 이름으로 바꿉니다. enforce를 원하는 Pod Security Admission 모드로 바꾸고, baseline을 원하는 Pod Security Standards 정책 프로파일로 바꿉니다. 자세한 내용은 Kubernetes 웹사이트에서 네임스페이스에 대한 Pod Security Admission 레이블 및 Pod Security Standards를 참조하십시오.
Q: 더 제한적인 Pod Security Standards 프로필을 사용하도록 네임스페이스를 수정하면 네임스페이스의 기존 포드 기능에 영향이 있습니까?
아니요. audit 또는 warn 모드를 사용하도록 기존 포드로 네임스페이스를 수정하면 터미널에 적절한 경고가 표시됩니다. 포드 YAML 출력 status.message 섹션에서도 경고 메시지를 확인할 수 있습니다. enforce 모드를 사용하도록 네임스페이스를 수정하는 경우 Kubernetes는 네임스페이스의 기존 포드를 삭제하지 않습니다. 하지만 다음과 유사한 경고 메시지가 표시됩니다.
Warning: existing pods in namespace "policy-test" violate the new PodSecurity enforce level "restricted:latest"
Warning: test-688f68dc87-htm8x: allowPrivilegeEscalation != false, unrestricted capabilities, runAsNonRoot != true, seccompProfilenamespace/policy-test configured
포드 YAML 출력의 경고 메시지 예:
lastTransitionTime: "2022-11-24T05:10:49Z"
lastUpdateTime: "2022-11-24T05:10:49Z"
message: 'pods "test-67d5fc995b-8r9t2" is forbidden: violates PodSecurity "baseline:latest": privileged (container "assets" must not set securityContext.privileged=true)'
reason: FailedCreate
status: "True"
type: ReplicaFailure
포드가 네임스페이스의 Pod Security Standards 프로파일 정책 또는 Pod Security Admission 모드를 위반하는 경우, 해당 배포 매니페스트를 적절한 값으로 업데이트합니다.
Q: Pod security Admission 컨트롤러가 네임스페이스 수준에서 적용한 포드 보안 정책을 사용자 지정하려면 어떻게 해야 합니까?
Kubernetes는 Pod Security Admission 컨트롤러를 통해 적용된 포드 보안 정책의 사용자 지정을 지원하지 않습니다. 하지만 승인 정책 검증을 사용하여 사용자 지정 규칙을 구현하고 적용할 수 있습니다. 또는 외부 코드가 포함된 웹후크 승인 컨트롤을 사용할 수 있습니다.
Q: 여러 Pod Security Admission 모드와 Pod Security Standards 프로파일을 단일 Kubernetes 네임스페이스에 적용할 수 있습니까?
아니요. 하지만 레이블을 사용하여 모든 네임스페이스에서 여러 Pod Security Standards 검사를 구성할 수 있습니다.
예를 들어, 다음 명령은 기본(baseline) Pod Security Standards에 enforce 모드를 적용합니다. 그러나 최신 버전에 따라 restricted Pod Security Standards에 대한 warn 및 audit 모드도 적용됩니다.
$ kubectl label --overwrite ns test \\
pod-security.kubernetes.io/enforce=baseline \\
pod-security.kubernetes.io/enforce-version=latest \\
pod-security.kubernetes.io/warn=restricted \\
pod-security.kubernetes.io/warn-version=latest \\
pod-security.kubernetes.io/audit=restricted \\
pod-security.kubernetes.io/audit-version=latest
Q: 관리형 Kubernetes 클러스터의 클러스터 범위에서 Pod Security Admission 모드와 Pod Security Standards 프로파일을 적용할 수 있습니까?
아니요. 관리형 클러스터의 네임스페이스 수준에서만 Pod Security Admission 모드와 Pod Security Standards 프로파일을 적용할 수 있습니다.