Kubernetes 보안 상태 스캔 정보


이 페이지에서는 일반적인 보안 구성 문제, Kubernetes 워크로드에서 실행 가능한 보안 게시판 및 GKE Enterprise 클러스터의 활성 위협을 감지하는 보안 상태 대시보드의 기능인 Kubernetes 보안 상태 스캔에 대해 설명합니다.

Kubernetes 보안 상태 스캔을 사용 설정하고 사용하려면 다음 리소스를 참조하세요.

Kubernetes 보안 상태 스캔은 다음 기능을 제공합니다.

가격 책정

  • 표준 등급: GKE에서 추가 비용 없이 제공됩니다.
  • 고급 등급: GKE Enterprise에 포함됩니다.

Cloud Logging에 추가되는 항목에는 Cloud Logging 가격 책정이 적용됩니다.

워크로드 구성 감사 정보

GKE에 배포하는 워크로드는 공격 지점을 제한하는 강화된 구성이 있어야 합니다. 클러스터에서 워크로드를 검사하여 구성 문제를 확인하는 것은 대규모인 경우 수동으로 수행하기 어려울 수 있습니다. 보안 상태 대시보드를 사용하여 여러 클러스터에 걸쳐서 실행 중인 모든 워크로드의 구성을 자동으로 감사하고 보안 상태 개선을 위해 실행 가능하고 점수가 매겨진 결과와 설득력 있는 권장사항을 반환할 수 있습니다.

워크로드 구성 감사를 수행하면 포드 보안 표준의 정책 하위 집합에 따라 각 배포된 워크로드를 확인합니다. 워크로드 구성 감사는 Google 인프라에서 실행되며 노드의 컴퓨팅 리소스를 사용하지 않습니다.

워크로드 구성 감사 이점

  • 모든 워크로드에서 알려진 구성 문제를 자동으로 감지합니다.
  • 활용 가능한 권장사항으로 보안 상태를 개선합니다.
  • Google Cloud 콘솔을 사용하여 구성 문제를 개략적으로 확인할 수 있습니다.
  • 보고 및 관측 가능성을 향상하기 위해 Logging을 사용하여 감사 가능한 문제를 추적합니다.

워크로드 구성 감사 작동 방식

GKE는 요건을 충족하는 배포된 워크로드마다 지속적으로 워크로드 사양을 스캔하고 필드 및 값을 기본 보안 정책에 정의된 제어와 비교합니다. 예를 들어 spec.containers.securityContext.privileged=true가 있는 포드는 기준 포드 보안 표준을 위반하고 spec.securityContext.runAsNonRoot 필드가 false로 설정된 포드는 제한된 표준을 위반합니다. GKE가 확인하는 보안 정책 목록은 워크로드 구성 감사에서 확인하는 항목을 참조하세요.

문제를 스캔 및 검색한 후 GKE는 기본 제공되는 보안 강화 수단을 기준으로 검색된 구성 문제의 심각도를 평가합니다. GKE는 문제에 대응하는 속도를 알려줄 수 있는 심각도 등급을 할당합니다. Google Cloud 콘솔에는 결과와 문제 해결을 위해 수행할 수 있는 권장 작업이 표시됩니다. 또한 GKE에서 추적 및 감사를 위해 Cloud Logging에 항목을 추가합니다.

워크로드 구성 감사에서 확인하는 항목

문제 필드 허용되는 값 심각도

호스트 네임스페이스

호스트 네임스페이스를 공유하는 포드를 사용하면 포드 프로세스가 호스트 프로세스와 통신하고 호스트 정보를 수집할 수 있으며, 이로 인해 컨테이너 이스케이프가 발생할 수 있습니다.

  • spec.hostNetwork
  • spec.hostIPC
  • spec.hostPID
  • 정의되지 않음 또는 Nil
  • false
높음

높은 권한을 가진 컨테이너

권한이 있는 컨테이너는 거의 무제한으로 호스트 액세스를 허용합니다. 네임스페이스를 호스트와 공유하며 통제 그룹, seccomp, AppArmor, 기능 제한사항이 없습니다.

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged
  • 정의되지 않음 또는 Nil
  • false
높음

호스트 포트 액세스

호스트 포트를 컨테이너에 노출하면 컨테이너가 해당 포트를 사용하는 호스트 서비스에 대한 네트워크 트래픽을 가로채거나 네트워크 액세스 제어 규칙(예: NetworkPolicy의 규칙)을 우회할 수 있습니다.

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort
  • 정의되지 않음 또는 Nil
  • 0
높음

기본이 아닌 기능

컨테이너에는 컨테이너 이스케이프를 허용할 수 있는 기능이 할당되었습니다.

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add
  • 정의되지 않음 또는 Nil
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
보통

호스트 경로 볼륨 마운트

hostPath 볼륨은 호스트의 파일이나 디렉터리를 마운트합니다. 이러한 볼륨은 컨테이너 이스케이프가 발생할 수 있는 보안 위험을 야기합니다.

spec.volumes[*].hostPath 정의되지 않음 또는 Nil 보통

기본값이 아닌 /proc 마스크

기본 /proc 마운트 유형은 정보 유출 또는 컨테이너 이스케이프로 이어질 수 있는 경로를 노출하지 않도록 /proc의 특정 경로를 마스킹합니다. 기본이 아닌 유형을 사용하면 이러한 위험이 증가합니다.

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount
  • 정의되지 않음 또는 Nil
  • 기본
보통

안전하지 않은 sysctls 마스크

/proc/sys 가상 파일 시스템을 사용하여 안전하지 않은 커널 매개변수를 수정하도록 포드를 구성할 수 있습니다. 안전하지 않은 매개변수는 네임스페이스 지정을 지원하지 않거나, 포드 간에 효과를 제대로 격리하지 않거나, 노드 상태에 해를 끼치거나, 포드가 한도를 초과하여 리소스를 얻도록 허용할 수 있습니다.

spec.securityContext.sysctls[*].name
  • 정의되지 않음 또는 Nil
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range
보통

루트가 아닌 실행

이미지의 runAsUser 또는 USER 지시문이 루트 사용자를 지정할 경우 컨테이너가 루트 사용자로 실행되도록 명시적으로 허용할 수 있습니다. 루트 사용자로 실행할 때 예방적 보안 제어가 없으면 컨테이너 이스케이프가 발생할 위험이 증가합니다.

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot
true 보통

권한 에스컬레이션

실행 시 권한 에스컬레이션이 허용되도록 컨테이너를 명시적으로 구성할 수 있습니다. 이렇게 하면 컨테이너 내에 생성된 프로세스가 set-user-id, set-group-id 또는 파일 기능 실행 파일을 실행하여 실행 파일에서 지정한 권한을 획득할 수 있습니다. 예방적 보안 제어가 없으면 컨테이너 이스케이프 위험이 증가합니다.

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation
false 보통

제한되지 않는 AppArmor 프로필

AppArmor로 제한되지 않도록 컨테이너를 명시적으로 구성할 수 있습니다. 이렇게 하면 컨테이너에 AppArmor 프로필이 적용되지 않으므로 제한되지 않습니다. 예방적 보안 제어가 중지되면 컨테이너 이스케이프 위험이 증가합니다.

metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"] false 낮음

보안 게시판 표시 정보

GKE에서 취약점이 발견되면 취약점을 패치하고 취약점에 대한 보안 게시판을 게시합니다. 식별, 패치, 타임라인에 대한 자세한 내용은 GKE 보안 패치를 참조하세요.

보안 상태 대시보드에는 클러스터, 워크로드, 표준 모드 노드 풀에 영향을 미치는 보안 게시판이 표시됩니다. 이 기능은 보안 상태 대시보드의 Kubernetes 보안 상태 기능의 일부이며 Autopilot 또는 Standard 클러스터를 만들 때 자동으로 사용 설정됩니다. Kubernetes 보안 상태 스캔을 사용 설정하려면 워크로드에 구성 문제가 있는지 자동으로 감사의 안내를 따르세요.

Google Cloud 콘솔에는 취약점을 완화하기 위해 영향을 받는 클러스터, 버전, 업그레이드 권장 패치 버전과 같은 세부정보가 표시됩니다. 클러스터의 Google Cloud 리전 또는 영역에서 완화 기능을 사용할 수 있는 게시판만 표시됩니다.

Kubernetes 보안 상태 스캔에 등록한 클러스터의 게시판을 보려면 보안 상태 대시보드로 이동합니다.

보안 상태로 이동

사용자 환경에 영향을 미치는 모든 게시판은 보안 게시판 섹션에 표시됩니다.

GKE Threat Detection 정보

GKE Threat Detection은 등록된 클러스터의 감사 로그에서 활성 위협을 스캔하고 권장되는 완화 조치를 제공합니다. GKE Threat Detection은 Security Command Center Event Threat Detection 서비스를 기반으로 합니다. 자세한 내용은 GKE Enterprise 문서에서 GKE Threat Detection 정보를 참조하세요.

다음 단계