설명
Linux capability는 컨테이너가 사용할 수 있는 세부 권한을 제어합니다. 불필요한 capability는 컨테이너 격리를 약하게 만들 수 있으므로 필요한 최소 권한만 허용해야 합니다.
PodSecurityPolicy는 Kubernetes 1.21에서 사용 중단되었고 1.25에서 제거되었습니다. PSP를 사용하는 레거시 환경에서는 requiredDropCapabilities와 허용 capability를 함께 검토하고, 현재 클러스터에서는 Pod Security Admission이나 정책 엔진으로 필요한 제한을 적용하세요.
잠재적 영향
- 컨테이너가 필요 이상의 권한으로 동작하면 침해 시 영향이 커질 수 있습니다.
- 필요한 capability를 확인하지 않고 제거하면 애플리케이션 기능이 실패할 수 있습니다.
해결 방법
- 가능하면 불필요한 capability를 모두 제거하고 꼭 필요한 권한만 허용하세요. 레거시 PSP의 requiredDropCapabilities와 허용 목록, 실제 컨테이너 설정을 함께 확인하세요.
- 현재 클러스터에서는 지원되는 정책으로 같은 제한을 적용하고 워크로드의 실행을 시험하세요. PSP 리소스만 남겨 두는 것으로 현재 클러스터에서 정책이 강제되지는 않습니다.
예시
policy/v1beta1 PSP의 capability 설정만 보여 주는 레거시 발췌입니다. 나머지 필수 전략과 정책 사용 권한은 생략했습니다. Kubernetes 1.25 이상에서는 이 리소스를 사용할 수 없습니다.
변경 전
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false
allowPrivilegeEscalation: false
volumes:
- configMap
- secret
기본 capability 제거를 요구하는 설정이 이 발췌에 없습니다. 실제 부여 권한은 런타임 기본값과 다른 정책에도 영향을 받습니다.
변경 후
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false
allowPrivilegeEscalation: false
requiredDropCapabilities:
- ALL
volumes:
- configMap
- secret
ALL을 제거하도록 요구합니다. 필요한 권한을 검토하고 실제 워크로드가 이 정책으로 실행되는지 확인해야 합니다.