워크로드에 구성 문제가 있는지 자동으로 감사


이 페이지에서는 워크로드 구성에서 보안 문제를 자동으로 감사하고 Google Kubernetes Engine(GKE) Autopilot 및 Standard 클러스터의 보안 상태를 개선하기 위한 활용 가능한 권장사항을 가져오는 방법을 보여줍니다. 워크로드 구성 감사는 보안 상황 대시보드의 기능입니다. 자세한 내용은 워크로드 구성 감사 정보를 참조하세요.

가격 책정

보안 상태 대시보드는 GKE에서 Container Security API를 통해 추가 비용 없이 제공됩니다.

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

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

요구사항

  • 워크로드 구성 감사를 사용하는 데 필요한 권한을 얻으려면 관리자에게 Google Cloud 프로젝트의 보안 상황 뷰어(roles/containersecurity.viewer) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

    이 사전 정의된 역할에는 워크로드 구성 감사를 사용하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

    필수 권한

    워크로드 구성 감사를 사용하려면 다음 권한이 필요합니다.

    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • containersecurity.locations.list
    • containersecurity.locations.get
    • containersecurity.clusterSummaries.list
    • containersecurity.findings.list

    커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

  • 워크로드 구성 감사에는 GKE 버전 1.21 이상이 필요합니다.

워크로드 구성 감사 사용 설정

워크로드 구성 감사는 버전 1.27 이상을 실행하는 새 Autopilot 및 Standard 클러스터에서 기본적으로 사용 설정됩니다. gcloud CLI 또는 Google Cloud 콘솔을 사용하여 이 기능을 수동으로 사용 설정할 수도 있습니다.

새 클러스터에서 구성 감사 사용 설정

gcloud

gcloud CLI를 사용하여 새 GKE 클러스터를 만듭니다.

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --security-posture=standard

다음을 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동
  2. 만들기를 클릭합니다.
  3. GKE Autopilot 섹션에서 구성을 클릭합니다.
  4. 탐색창에서 고급 설정을 클릭합니다. 표준 클러스터를 만드는 경우 대신 보안을 클릭합니다.
  5. 보안 섹션에서 구성 감사 체크박스를 선택합니다.
  6. 클러스터의 다른 옵션을 구성하고 준비되면 만들기를 클릭합니다.

기존 클러스터에서 구성 감사 사용 설정

gcloud

클러스터를 업데이트합니다.

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --security-posture=standard

다음을 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 보안 상태 페이지로 이동합니다.

    보안 상태로 이동
  2. 설정 탭을 클릭합니다.
  3. 구성 감사 사용 설정된 클러스터 섹션에서 클러스터 선택을 클릭합니다.
  4. 추가할 클러스터의 체크박스를 선택합니다.
  5. 작업 선택 드롭다운 메뉴에서 기본으로 설정을 선택합니다.
  6. 적용을 클릭합니다.

Google Kubernetes Engine(GKE) Enterprise 버전을 사용하여 클러스터 Fleet을 관리하는 경우 모든 구성원 클러스터에 적용되는 Fleet 수준 구성 감사 설정을 구성할 수도 있습니다. 자세한 지침은 Fleet 수준에서 GKE 보안 상황 대시보드 기능 구성을 참조하세요.

테스트 워크로드 배포

포드 보안 표준을 의도적으로 위반하는 샘플 애플리케이션을 배포합니다.

  1. 다음 매니페스트를 misconfig-sample.yaml로 저장합니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: helloweb
      labels:
        app: hello
    spec:
      selector:
        matchLabels:
          app: hello
          tier: web
      template:
        metadata:
          labels:
            app: hello
            tier: web
        spec:
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            ports:
            - containerPort: 8080
            securityContext:
              runAsNonRoot: false
            resources:
              requests:
                cpu: 200m
    
  2. 애플리케이션을 클러스터에 배포합니다.

    kubectl apply -f misconfig-sample.yaml
    

다른 위반 사항을 시도해 보려면 해당하는 '잘못된' 구성으로 misconfig-sample.yaml을 수정합니다.

구성 감사 결과 보기 및 조치

초기 감사에서는 결과가 반환되는 데 최대 15분이 걸립니다. GKE는 보안 상황 대시보드에 결과를 표시하고 클러스터 로그에 자동으로 항목을 추가합니다.

결과 보기

프로젝트 클러스터와 워크로드에서 발견된 문제에 대한 개요를 확인하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 보안 상태 페이지로 이동합니다.

    보안 상태로 이동

  2. 문제 탭을 클릭합니다.

  3. 필터 문제 창의 문제 유형 섹션에서 구성 체크박스를 선택합니다.

문제 세부정보 및 권장사항 보기

특정 구성 문제에 대한 자세한 정보를 보려면 해당 문제가 포함된 행을 클릭합니다.

구성 문제 창에 다음 정보가 표시됩니다.

  • 설명: 문제에 대한 설명입니다.
  • 권장 조치: 구성 문제를 해결하기 위해 취할 수 있는 조치의 개요입니다. 이 섹션에는 다음 세부정보가 포함되어 있습니다.
    • 수정해야 하는 리소스
    • 영향을 받는 리소스에 수정사항을 적용하도록 실행할 수 있는 샘플 명령어
    • 문제를 해결하기 위한 Google Cloud 콘솔 안내(해당하는 경우)

발견된 문제의 로그 보기

GKE는 발견된 각 문제에 대해 Logging의 _Default 로그 버킷에 항목을 추가합니다. 이러한 로그는 특정 기간 동안만 보관됩니다. 자세한 내용은 로그 보관 기간을 참고하세요.

  1. Google Cloud 콘솔에서 로그 탐색기로 이동합니다.

    로그 탐색기로 이동
  2. 쿼리 필드에 다음 쿼리를 지정합니다.

    resource.type="k8s_cluster"
    jsonPayload.@type="type.googleapis.com/cloud.kubernetes.security.containersecurity_logging.Finding"
    jsonPayload.type="FINDING_TYPE_MISCONFIG"
  3. 쿼리 실행을 클릭합니다.

GKE가 Logging에 새 발견 항목을 추가할 때 알림을 받으려면 이 쿼리에 대해 로그 기반 알림을 설정합니다. 자세한 내용은 로그 기반 알림 구성을 참조하세요.

삭제

  1. 배포한 샘플 워크로드를 삭제합니다.

    kubectl delete deployment helloweb
    
  2. 원하는 경우 사용한 클러스터를 삭제합니다.

    gcloud container clusters delete CLUSTER_NAME \
        --region=COMPUTE_REGION
    

워크로드 구성 감사 사용 중지

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 워크로드 구성 감사를 사용 중지할 수 있습니다.

gcloud

다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --region=LOCATION \
    --security-posture=disabled

다음을 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 보안 상태 페이지로 이동합니다.

    보안 상태로 이동
  2. 설정 탭을 클릭합니다.
  3. 구성 감사 사용 설정된 클러스터 섹션에서 클러스터 선택을 클릭합니다.
  4. 감사 사용 설정 탭에서 삭제하려는 클러스터의 체크박스를 선택합니다.
  5. 감사 사용 중지를 클릭한 후 확인을 클릭하여 해당 클러스터에서 감사를 사용 중지합니다.

워크로드 구성 감사 제한사항

  • Windows Server 노드 풀은 지원되지 않습니다.
  • 워크로드 구성 감사는 kube-system 네임스페이스의 워크로드와 같은 GKE 관리 워크로드를 감사하지 않습니다.
  • 워크로드 구성 감사는 노드가 1,000개 미만인 클러스터에만 사용 가능합니다.
  • 보안 상황 대시보드는 각 클러스터의 활성 워크로드 구성 감사 발견 항목을 최대 150,000개까지 지원합니다. 클러스터에 대한 발견 항목 수가 이 최댓값을 초과하면 보안 상황 대시보드에 해당 클러스터에 대한 구성 발견 항목이 표시되지 않습니다.

    이 문제를 해결하려면 Logging의 로그를 사용하여 구성 문제를 식별하고 업데이트된 매니페스트를 배포합니다. 구성 발견 항목 수가 150,000개 미만이면 보안 상황 대시보드에 클러스터에 대한 발견 항목이 표시되기 시작합니다.

다음 단계