Anthos Config Management 1.3에 대한 문서를 보고 있습니다. 이 버전을 계속 사용하거나 현재 버전을 사용할 수 있습니다.

제약조건을 사용하여 Pod 보안 강화

이 주제에서는 Policy Controller 제약조건을 사용하여 PodSecurityPolicies와 동일한 여러 보호를 달성하고 정책을 시행하기 전에 테스트할 수 있는 기능을 추가로 제공하는 방법을 보여줍니다. 이 주제의 예시는 모든 관련 제약조건을 다루지는 않지만 시작 방법을 보여줍니다.

시작하기 전에

Anthos Config Management에 등록된 클러스터 중 하나에 Policy Controller 설치합니다. 제약조건 템플릿 라이브러리를 사용 설정된 상태로 두어야 합니다.

이 주제에서 논의된 제약조건 및 제약조건 템플릿의 소스 코드는 Gatekeeper 프로젝트 저장소의 pod-security-policy 디렉터리에서 사용할 수 있습니다. 각 제약조건 템플릿에는 단위 테스트도 포함됩니다.

pod가 권한이 있는 컨테이너를 실행하지 못하도록 방지

PodSecurityPolicies 주제의 예시는 pod가 권한이 있는 컨테이너를 실행하지 못하게 합니다. 권한이 있는 컨테이너가 노드의 호스트 운영체제나 노드에서 실행 중인 다른 워크로드에 영향을 줄 수 있으므로 권장됩니다.

이 제약조건은 K8sPSPPrivilegedContainer 제약조건 템플릿을 사용하여 동일한 제약조건을 다시 구현합니다.

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPPrivilegedContainer
metadata:
  name: psp-privileged-container
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]

컨테이너에 읽기 전용 루트 파일 시스템 필요

기본적으로 컨테이너는 루트 파일 시스템에 쓸 수 있습니다. 보안 문제 외에도 컨테이너의 쓰기 가능한 레이어의 쓰기 지연으로 인해 성능 병목 현상이 발생할 수 있습니다. PodSecurityPolicy 또는 제약조건을 사용하여 컨테이너에 읽기 전용 루트 파일 시스템을 요구할 수 있습니다. 이 제약조건은 K8sPSPReadOnlyRootFilesystem 제약조건 템플릿을 사용합니다.

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPReadOnlyRootFilesystem
metadata:
  name: psp-readonlyrootfilesystem
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]

컨테이너가 마운트할 수 있는 볼륨 유형 제한

기본적으로 컨테이너는 Kubernetes API에 등록된 모든 유형의 볼륨을 클러스터에 마운트할 수 있습니다. 이 제약조건은 K8sPSPVolumeTypes 제약조건 템플릿을 사용하여 컨테이너를 제한된 볼륨 유형 세트로 제한합니다.

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPVolumeTypes
metadata:
  name: psp-volume-types
spec:
  match:
    kinds:
      - apiGroups: [""]
        kinds: ["Pod"]
  parameters:
    volumes:
    # - "*" # * may be used to allow all volume types
    - configMap
    - emptyDir
    - projected
    - secret
    - downwardAPI
    - persistentVolumeClaim
    #- hostPath #required for allowedHostPaths
    - flexVolume #required for allowedFlexVolumes

결과 감사

dryrun 시행 작업을 사용하여 활성 워크로드를 중단하지 않고 제약조건의 효과를 테스트 할 수 있습니다. 이렇게 하면 적극적으로 차단하지 않고도 정책 감사 결과가 생성됩니다. 자세한 내용은 제약조건을 사용하여 감사를 참조하세요.

다음 단계