이 페이지는 Datadog으로 전송되는 데이터의 보안에 관한 것입니다. 클라우드, 애플리케이션 보안 제품 및 기능을 찾으려면 Security 섹션을 참조하세요.

이 가이드는 Datadog Agent를 배포 및 구성할 때 쿠버네티스(Kubernetes)에서 권한과 보안을 탐색하는 방법을 설명하여 쿠버네티스(Kubernetes) 환경의 보안과 모니터링 시스템의 필요한 기능을 모두 유지할 수 있도록 합니다.

사용 권한 vs 운영 요구 사항

쿠버네티스(Kubernetes) 보안의 맥락에서는 최소 권한 원칙과 Datadog Agent와 같은 필수 구성 요소의 원활한 작동 사이에 균형이 필수적입니다. 쿠버네티스(Kubernetes) 포드 보안 표준 및 CIS 벤치마크에서는 높은 액세스 위반을 방지하기 위해 권한을 최소화하는 것을 자주 강조하지만 Datadog Agent와 같은 모니터링 도구는 최적의 성능을 위해 특정 권한을 요구할 수 있다는 점을 인식해야 합니다.

일반적인 보안 표준 위반 사항

쿠버네티스(Kubernetes) 포드 보안 승인의 제한된 보안 수준

제한된 포드 보안 표준은 내장된 어드미션 컨트롤러에 의해 시행되는 가장 엄격한 보안 표준 수준입니다. 이 표준은 호환성과 기능을 어느 정도 포기하더라도 포드 보안 모범 사례를 시행하기 위한 것입니다. 사용 사례에는 민감한 금융 정보 및 PII를 처리하는 애플리케이션이 포함됩니다.

제한된 포드 표준을 사용하여 Datadog Agent를 실행하면 에이전트가 유용한 데이터에 액세스할 수 없으므로 권장하지 않습니다.

hostPID와 포드 실행

호스트의 프로세스 ID (PID) 네임스페이스에서 실행 중인 컨테이너는 컨테이너 외부에서 실행 중인 프로세스를 검사할 수 있습니다. 컨테이너에 ptrace 기능에 대한 액세스 권한도 있는 경우 이를 사용하여 컨테이너 외부로 권한을 승격할 수 있습니다.

DogStatsD는 UDP 포트나 Unix Domain Socket을 통해 메트릭을 수신하도록 구성할 수 있습니다. Unix Domain Socket을 사용하면 성능 향상, 오류 처리 및 오리진 탐지와 같은 장점이 있습니다. 컨테이너 내부에서 실행할 경우 오리진 탐지가 안정적으로 작동하려면 호스트의 PID 네임스페이스에서 DogStatsD를 실행해야 합니다. 오리진 탐지를 비활성화할 수는 있지만 이렇게 하면 DogStatsD 수집된 메트릭에 더 이상 컨테이너 수준 태깅이 적용되지 않습니다.

hostPath 볼륨

쿠버네티스(Kubernetes)에서 hostPath 볼륨을 활용하면 시스템 자격 증명이 의도치 않게 노출되거나 권한이 있는 API에 대한 무단 액세스 등 잠재적인 보안 취약성이 발생할 수 있습니다. 그러나 Datadog Agent는 호스트 수준 리소스를 효과적으로 모니터링하기 위해 호스트의 직접 액세스에 의존합니다.

hostPath 볼륨은 보안 문제가 될 수 있지만, 호스트 수준 모니터링에 대한 Datadog Agent의 필요가 있기 때문에 이러한 볼륨을 마운트해야 합니다. Datadog 에이전트에 필요한 hostPath 볼륨은 필수 경로로 신중하게 범위가 지정되며 가능한 경우 읽기 전용 모드로 마운트된다는 점에 유의해야 합니다.

잘 정의된 경계 내에서 다음과 같은 hostPath 마운트를 활성화함으로써, 모니터링 목적에 필요한 액세스를 제공하는 것과 쿠버네티스(Kubernetes) 환경의 보안을 유지하는 것 사이에서 균형을 맞출 수 있습니다.

마운트설명
procdir읽기 전용으로 마운트됨. 시스템 검사에 사용.
cgroups읽기 전용으로 마운트됨. 컨테이너 메타데이터 수집에 사용.
os-release-file읽기 전용으로 마운트됨. OS 탐지에 사용.
dsdsocket읽기-쓰기 마운트됨. DogStatsD 소켓, 선택적으로 포트로 구성됨.
apmsocket읽기-쓰기 마운트됨. APM 소켓, 선택적으로 포트로 구성됨.
passwd읽기 전용으로 마운트됨. Process Agent가 프로세스를 사용자와 연결하는 데 사용함.
runtimesocketdir읽기 전용으로 마운트됨. 컨테이너 메트릭 수집에 사용됨.

컨테이너를 루트 사용자로 실행

쿠버네티스(Kubernetes) 환경에서 컨테이너는 모든 Linux 사용자로 실행할 수 있는 유연성이 있습니다. 컨테이너 런타임 보안 기능이 몇 가지 제약을 제공하더라도 컨테이너를 루트 사용자로 실행하면 여전히 컨테이너 브레이크아웃의 위험이 높아질 수 있습니다. 따라서 모범 사례를 준수하고 컨테이너, 특히 일반 워크로드용 컨테이너는 UID 0이 아닌 사용자로 실행하는 것이 좋습니다.

Datadog Agent의 기본 설정은 표준 kubelet 및 컨테이너 소켓 구성과 호환성이 높도록 설계되었으며 컨테이너 내에서 루트 사용자로 실행됩니다. 이 기본 설정은 호환성을 극대화하기 위해 선택됩니다. Agent를 루트 사용자가 아닌 사용자로 실행하도록 설정할 수도 있지만 일부 통합이 제대로 작동하려면 기본 호스트의 설정에 대한 특별 고려 사항과 업데이트가 필요할 수 있습니다. 여기에는 다음이 포함됩니다:

  • Datadog은 dd-agent 사용자 (UID: 101)를 사용할 것을 권장합니다. 컨테이너 이미지에 생성된 사용자입니다.
  • Agent 사용자의 액세스를 허용하도록 컨테이너 런타임 소켓을 구성해야 합니다.
  • 로그 수집을 위해 Agent 사용자가 kubelet이 생성한 로그에 액세스할 수 있어야 합니다.
  • 호스트의 명령어 또는 파일에 액세스할 수 없어 일부 통합이 실패할 수 있습니다.

참고 자료

Additional helpful documentation, links, and articles: