목록으로

Programming Notes

MDC에서 특정 컨테이너 예외 처리하기

이 작업을 위해 전체 예외 처리가 필요한 것은 아닙니다. "컨테이너에 대해 불변(읽기 전용) 루트 파일 시스템을 강제 적용해야 함(Immutable (read-only) root filesystem should be enforced for containers)"이라는 기본 제공 정책은 컨테이너 및 이미지별 제외 기능을 기본적으로 지원하며, 이는 리소스나 클러스터 수준에서 예외를 적용하는 것보다 더 정밀한 제어가 가능합니다.

이 권장 사항은 Defender for Cloud의 데이터 평면 강화(data plane hardening)의 일환으로 Azure Policy Add-on for Kubernetes(Gatekeeper 제약 조건)를 통해 구현됩니다. 해당 정책 정의는 다음 매개변수들을 지원합니다:

  • excludedContainers컨테이너 이름으로 제외
  • excludedImages — 이미지로 제외 (접두사 매칭 지원, 예: myregistry.azurecr.io/legacy-app:*)
  • excludedNamespaces — 전체 네임스페이스 제외 (예: kube-system, 읽기 전용으로 실행될 수 없는 시스템 포드에 유용)

설정 방법: Defender for Cloud → 권장 사항(Recommendations) → 해당 권장 사항 선택 → 조치 취하기(Take action) 탭으로 이동하면, 원시 정책 JSON을 직접 수정하지 않고도 이러한 매개변수를 설정할 수 있습니다. 또는 **환경 설정(Environment Settings) → 보안 정책(Security policies) → 표준(Standards)**을 통해 정책을 관리하는 경우, 표준 할당(standard assignment)에서 동일한 매개변수를 설정할 수 있습니다.

airflow/db1, airflow/sql1 등 여러 컨테이너가 "비정상(Unhealthy)"으로 표시된다고 하셨는데, 만약 이것이 정당한 예외 상황(예: 단순한 설정 오류가 아니라 설계상 파일 시스템에 쓰기 작업이 필요한 데이터베이스 컨테이너 등)이라면, excludedContainers에 각 컨테이너 이름을 지정하는 것이 가장 깔끔한 해결책이며 클러스터의 다른 모든 곳에는 권장 사항을 계속 적용할 수 있습니다. 규정 준수나 감사 목적으로 특별히 추적이 필요한 경우에만 전체 정책 예외(Azure Policy exemption 리소스)를 사용하고, 이와 같은 일상적인 운영 사례에서는 매개변수 기반의 제외 방식이 훨씬 더 "네이티브"하고 유지보수하기 쉬운 방법입니다.