내장 승인 컨트롤러를 구성해 Pod 보안 표준 강제하기

내장 승인 컨트롤러를 구성해 Pod 보안 표준 강제하기

쿠버네티스는 Pod Security Standards를 강제하기 위한 내장 승인 컨트롤러를 제공해요. 이 승인 컨트롤러를 구성해 클러스터 전체 기본값과 면제(exemption)를 설정할 수 있어요.

출처: 문서

본문

시작하기 전에 (Before you begin)

Kubernetes v1.22의 알파 릴리스에 이어, Pod Security Admission이 Kubernetes v1.23에서 베타로 기본 사용 가능하게 됐어요. 1.25 버전부터 Pod Security Admission은 일반적으로 사용 가능해요.

버전을 확인하려면 kubectl version을 입력하세요. Kubernetes 1.37을 실행하지 않는다면, 실행 중인 쿠버네티스 버전의 문서에서 이 페이지를 볼 수 있도록 전환할 수 있어요.

승인 컨트롤러 구성하기 (Configure the Admission Controller)

apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
  configuration:
    apiVersion: pod-security.admission.config.k8s.io/v1 # 호환성 참고
    kind: PodSecurityConfiguration
    # 모드 라벨이 설정되지 않았을 때 적용되는 기본값.
    #
    # 레벨 라벨 값은 다음 중 하나여야 함:
    # - "privileged" (기본값)
    # - "baseline"
    # - "restricted"
    #
    # 버전 라벨 값은 다음 중 하나여야 함:
    # - "latest" (기본값)
    # - "v1.37" 같은 특정 버전
    defaults:
      enforce: "privileged"
      enforce-version: "latest"
      audit: "privileged"
      audit-version: "latest"
      warn: "privileged"
      warn-version: "latest"
    exemptions:
      # 면제할 인증된 사용자 이름의 배열.
      usernames: []
      # 면제할 런타임 클래스 이름의 배열.
      runtimeClasses: []
      # 면제할 네임스페이스의 배열.
      namespaces: []

참고: pod-security.admission.config.k8s.io/v1 구성은 v1.25+가 필요해요. v1.23과 v1.24에서는 v1beta1을 사용하세요. v1.22에서는 v1alpha1을 사용하세요.

참고: 위 매니페스트는 kube-apiserver에 --admission-control-config-file로 지정해야 해요.

더 알아보기 (Learn more)