Kubernetes 이미지 admission 정책 점검

배포할 이미지에 필요한 정책을 실제로 적용하는지 확인하세요.

설명

ImagePolicyWebhook은 외부 백엔드가 이미지 사용 허용 여부를 판단하도록 하는 admission 플러그인입니다. 이미지 정책을 적용하는 수단이 없으면 승인되지 않은 이미지가 배포될 수 있습니다. 이 플러그인만 켠다고 이미지 서명이나 취약점이 자동 검증되는 것은 아니며, 다른 admission 제어 수단으로도 조직 정책을 적용할 수 있습니다.

잠재적 영향

  • 승인되지 않은 이미지나 신뢰하지 않는 출처의 코드가 실행될 수 있습니다.
  • 검증 기준과 예외 처리가 일관되지 않으면 공급망 위험을 통제하기 어려워집니다.

해결 방법

  • 조직에 필요한 레지스트리·서명·이미지 승인 정책을 정하고, 실제로 이를 검증하는 admission 제어 수단을 구성하세요.
  • ImagePolicyWebhook을 쓴다면 플러그인과 필요한 API 활성화, AdmissionConfiguration, TLS 백엔드 연결을 함께 구성하세요. 백엔드 장애 시 허용 여부와 승인·거부 결과를 시험하세요.

예시

Kubernetes v1.30.0의 인자를 비교하는 과거 부분 예시입니다. 지원되는 버전과 전체 API 서버 구성을 사용하세요. 설정 파일·TLS 백엔드와 필요한 --runtime-config=imagepolicy.k8s.io/v1alpha1=true 설정은 생략되어 있어 별도로 준비해야 합니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=AlwaysAdmit

AlwaysAdmit 자체는 이미지 정책을 검증하지 않습니다. 기존 클러스터의 다른 정책 제어도 확인해야 합니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: kube-apiserver
spec:
  containers:
    - name: kube-apiserver
      image: registry.k8s.io/kube-apiserver:v1.30.0
      command:
        - kube-apiserver
      args:
        - --enable-admission-plugins=ImagePolicyWebhook
        - --admission-control-config-file=/etc/kubernetes/image-policy-webhook.yaml

웹훅 플러그인과 설정 경로를 지정합니다. 정책 백엔드와 연결 구성이 있어야 실제 허용·거부 판단을 수행합니다.

참조