설명
PodSecurityPolicy에 의존하는 레거시 클러스터에서 admission plugin이 비활성화되어 있으면 PSP 리소스를 만들어도 해당 제한이 적용되지 않습니다. 정책을 사용할 권한과 실제 Pod 생성 요청에 대한 적용 여부도 함께 확인해야 합니다.
PSP는 Kubernetes 1.21에서 사용 중단되었고 1.25에서 제거되었습니다. 현재 클러스터에는 PSP를 추가하지 말고 Pod Security Admission 등 지원되는 제어로 필요한 제한을 적용하세요.
잠재적 영향
- 의도한 정책이 적용되지 않으면 특권 실행이나 호스트 접근이 필요한 범위를 넘어 허용될 수 있습니다.
- 반대로 정책과 사용 권한을 준비하지 않고 플러그인만 활성화하면 필요한 Pod 생성도 거부될 수 있습니다.
해결 방법
- 레거시 환경에서는 필요한 PSP와 최소한의
use권한을 먼저 준비한 뒤 플러그인을 활성화하세요. - 지원되는 Kubernetes로 전환하면서 필요한 제한을 현재 admission 제어로 옮기세요.
- 승인된 워크로드는 배포되고 금지한 설정은 거부되는지 시험하세요.
예시
아래는 지원이 종료된 Kubernetes 1.24.17의 API 서버 설정 발췌입니다. 새 설치를 위한 권장 버전이 아니며 인증서와 저장소 등 전체 제어 영역 구성은 별도로 필요합니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: api-server
spec:
containers:
- name: kube-apiserver
image: registry.k8s.io/kube-apiserver:v1.24.17
command:
- "kube-apiserver"
args:
- "--disable-admission-plugins=PodSecurityPolicy"
PSP 플러그인을 명시적으로 비활성화합니다. 다른 admission 제어가 제공하는 보호는 별도로 확인해야 합니다.
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: api-server
spec:
containers:
- name: kube-apiserver
image: registry.k8s.io/kube-apiserver:v1.24.17
command:
- "kube-apiserver"
args:
- "--enable-admission-plugins=PodSecurityPolicy"
PSP 플러그인을 활성화합니다. 적용할 정책과 해당 정책을 사용할 권한이 준비되어 있어야 합니다.