포드 보안 정책 (PSP) 제거 FAQ - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

포드 보안 정책 (PSP) 제거 FAQ

PodSecurityPolicyKubernetes1.21에서 더 이상 사용되지 않으며 Kubernetes1.25에서 제거되었습니다. 클러스터에서 PodSecurityPolicy를 사용하는 경우, 워크로드 중단을 방지하기 위해 클러스터를 버전 1.25으로 업그레이드하기 전에 내장된 Kubernetes Pod Security Standards (PSS) 또는 policy-as-code 솔루션으로 마이그레이션해야 합니다. 자세히 알아보려면 자주 묻는 질문을 선택하세요.

PodSecurityPolicy는 클러스터 관리자가 Pod 사양의 보안에 민감한 측면을 제어할 수 있는 내장형 승인 컨트롤러입니다. Pod가 PSP의 요구 사항을 충족하면 해당 Pod는 평소와 같이 클러스터에 승인됩니다. Pod가 PSP 요구 사항을 충족하지 않으면 해당 Pod는 거부되어 실행할 수 없습니다.

이는 Kubernetes 프로젝트의 업스트림 변경이며 Amazon EKS에서 변경한 내용이 아닙니다. PSP은(는) Kubernetes 1.21에서 더 이상 사용되지 않고 Kubernetes 1.25에서 제거되었습니다. Kubernetes 커뮤니티에서 PSP를 포함한 심각한 사용성 문제를 확인했습니다. 여기에는 의도한 것보다 더 광범위한 권한을 실수로 부여하거나 PSPs이(가) 특정 상황에 해당하는 권한을 검사하기 어려운 경우가 포함되었습니다. 이러한 문제는 주요 변경 없이는 해결할 수 없습니다. 이것이 Kubernetes 커뮤니티가 PSP를 제거하기로 결정한 주된 이유입니다.

클러스터에서 PSPs를 사용 중인지 확인하려면 다음 명령을 실행하면 확인할 수 있습니다.

kubectl get psp

클러스터의 PSPs가 영향을 주는 Pods를 보려면 다음 명령을 실행합니다. 이 명령은 Pod 이름, 네임스페이스 및 PSPs를 출력합니다.

kubectl get pod -A -o jsonpath='{range.items[?(@.metadata.annotations.kubernetes\.io/psp)]}{.metadata.name}{"\t"}{.metadata.namespace}{"\t"}{.metadata.annotations.kubernetes\.io/psp}{"\n"}'

클러스터를 1.25로 업그레이드하기 전에 다음 대안 중 하나로 PSPs를 마이그레이션해야 합니다.

  • Kubernetes PSS.

  • Kubernetes 환경에서 제공되는 Policy-as-code 솔루션.

PSP 지원 중단과 처음부터 Pod 보안을 제어해야 하는 지속적인 필요성에 대응하여 Kubernetes 커뮤니티는 PSSPod Security Admission(PSA)을 갖춘 기본 제공 솔루션을 만들었습니다. PSA 웹후크는 PSS에 정의된 컨트롤을 구현합니다.

EKS 모범 사례 가이드에서 PSPs를 내장형 PSS로 마이그레이션하기 위한 모범 사례를 검토할 수 있습니다. 또한 Amazon EKS에서 포드 보안 표준 구현 블로그를 검토하세요. 추가 레퍼런스로는 PodSecurityPolic에서 빌트인 PodSecurity Admission Controller로 마이그레이션하기PodSecurityPolicies를 포드 보안 표준으로 매핑하기 등이 있습니다.

Policy-as-code 솔루션은 클러스터 사용자를 안내하고 사전 정의된 자동 제어를 통해 원치 않는 동작을 방지하는 가드레일을 제공합니다. Policy-as-code 솔루션은 일반적으로 Kubernetes 동적 승인 컨트롤러를 사용하여 웹후크 호출을 통해 Kubernetes API 서버 요청 흐름을 차단합니다. Policy-as-code 솔루션은 코드로 작성 및 저장된 정책을 기반으로 요청 페이로드를 변경하고 검증합니다.

Kubernetes에 사용할 수 있는 오픈 소스 policy-as-code 솔루션이 몇 가지 있습니다. PSPs를 policy-as-code 솔루션으로 마이그레이션하기 위한 모범 사례를 검토하려면 GitHub의 Pod Security 페이지의 Policy-as-code 섹션을 참조하세요.

Kubernetes 버전 1.13 또는 이후 버전의 Amazon EKS 클러스터에는 eks.privileged라는 기본 PSP가 있습니다. 이 정책은 1.24 및 이전 클러스터에서 생성됩니다. 1.25 및 이후 클러스터에서는 사용되지 않습니다. Amazon EKS는 이 PSP를 PSS 기반 집행 기관으로 자동 마이그레이션합니다. 사용자는 아무 작업도 수행할 필요가 없습니다.

아니요. 또한 Amazon EKS에서 생성된 PSP인 eks.privileged 이외에도 1.25로 업그레이드할 때 클러스터의 다른 PSPs에는 변경 사항이 적용되지 않습니다.

아니요. Amazon EKS는 아직 PSP으로 마이그레이션하지 않은 경우 클러스터의 버전 1.25 업데이트를 막지 않습니다.

PSP가 포함된 클러스터를 Kubernetes 버전 1.25로 업그레이드하면 API 서버가 1.25의 PSP 리소스를 인식하지 못합니다. 이로 인해 Pods에 잘못된 보안 범위가 지정될 수 있습니다. 이와 관련된 전체 목록은 PodSecurityPolicy에서 빌트인 PodSecurity Admission Controller로 마이그레이션하기를 참조하세요.

Windows 워크로드에 대한 구체적인 영향은 예상되지 않습니다. PodSecurityContext에는 Winodws Pods용 PodSpec v1 API에 windowsOptions라는 필드가 있습니다. 이는 Kubernetes 1.25의 PSS를 사용합니다. Windows 워크로드용 PSS 적용에 대한 자세한 내용과 모범 사례는 EKS 모범 사례 가이드 및 Kubernetes 설명서를 참조하세요.