설명
AlwaysAdmit는 자체적으로 요청을 거부하거나 보안 정책을 검증하지 않는 admission plugin입니다. 다른 admission plugin의 검증을 우회하는 것은 아니지만, 이 플러그인만으로는 보호가 되지 않습니다. Kubernetes v1.13부터 사용 중단된 기능입니다.
Kubernetes API 서버는 워크로드 생성과 수정의 핵심 경로입니다. 필요한 보안 정책은 실제 검증을 수행하는 admission plugin과 정책으로 관리해야 합니다.
잠재적 영향
- 다른 검증 정책도 없다면 부적절한 리소스 생성이나 수정 요청이 허용될 수 있습니다.
- 정책 기반 검증 체계가 약해져 잘못된 설정이 클러스터에 반영될 수 있습니다.
- 보안 검증이 적용된다고 잘못 판단할 수 있습니다.
해결 방법
--enable-admission-plugins에서AlwaysAdmit를 제거하세요.- 필요한 기본 admission 기능은 유지하고 Pod Security Admission 등 실제 요구사항을 검증하는 정책을 구성하세요.
- API 서버 시작 인자와 정적 파드 매니페스트를 정기적으로 검토하세요.
예시
불필요한 플러그인 인자를 제거하는 API 서버 발췌입니다. 이미지는 실제 클러스터 버전에 맞추세요. 나머지 시작 설정은 생략했으며 인자를 제거하는 것만으로 보안 정책이 구성되지는 않습니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--enable-admission-plugins=AlwaysAdmit"]
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: []
설명:
- 변경 전:
AlwaysAdmit는 별도의 검증을 제공하지 않습니다. 다른 활성 정책이 실제 제한을 수행하는지 확인해야 합니다. - 변경 후: 불필요한 플러그인을 제거합니다. 실제 기본 플러그인과 별도 보안 정책의 적용을 확인해야 합니다.