추가 Linux capability 허용 점검이 필요한 PodSecurityPolicy

추가 Linux capability는 워크로드에 필요한 최소 범위로 제한하세요.

설명

PodSecurityPolicy의 allowedCapabilities는 컨테이너가 추가 Linux capability를 요청할 수 있게 허용합니다. 허용 목록 자체가 모든 컨테이너에 해당 권한을 부여하는 것은 아니지만, 불필요한 항목이나 *는 워크로드가 사용할 수 있는 권한 범위를 넓힙니다.

PSP는 Kubernetes 1.21에서 사용 중단되었고 1.25에서 제거되었습니다. 현재 환경에서는 Pod Security Admission 등 지원되는 정책 제어로 필요한 제한을 적용하세요.

잠재적 영향

  • 침해된 컨테이너가 추가 권한을 악용하면 선택된 capability에 따라 프로세스, 네트워크 또는 호스트에 미치는 영향이 커질 수 있습니다.
  • 광범위한 허용은 워크로드가 요구하는 실제 권한을 파악하고 통제하기 어렵게 만듭니다.

해결 방법

  • 불필요한 capability 허용을 제거하고, 기능에 꼭 필요한 항목만 검토해 허용하세요.
  • 기본 capability의 제거 여부와 특권 실행 및 권한 상승 제한도 함께 확인하세요.
  • 정책 변경 후 필요한 기능이 동작하고 승인되지 않은 추가 권한 요청은 거부되는지 시험하세요.

예시

아래는 레거시 PSP의 일부 필드만 비교한 예시입니다. 완전한 정책이 아니며 최신 클러스터에 그대로 적용할 수 없습니다.

변경 전

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: privileged
spec:
  allowedCapabilities:
    - "*"

*는 모든 추가 capability 요청을 허용하므로 권한 범위가 매우 넓습니다.

변경 후

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: privileged
spec:
  volumes:
    - "*"

추가 capability 허용 목록을 생략합니다. 이것만으로 기본 capability가 모두 제거되지는 않으며, volumes: ["*"]의 광범위한 볼륨 허용도 별도로 제한해야 합니다.

참조