GKE의 감사 로그 보기

이 페이지에서는 Cloud 감사 로그에서 배포 상태 및 정책 시행에 대한 정보를 확인하는 방법을 보여줍니다.

이 페이지에 사용된 Cloud 감사 로그 사용자 인터페이스 용어에 대해 자세히 알아보려면 로그 보기를 참조하세요.

단일 대시보드에서 상호 의존적인 Google Cloud 제품에 대한 Binary Authorization 정책 적용을 포함하여 애플리케이션 보안 상태를 평가할 수 있습니다. 자세한 내용은 보안 모니터링을 참조하세요.

개요

Binary Authorization을 사용하여 Google Kubernetes Engine(GKE)에 컨테이너 이미지를 배포할 때 GKE는 배포에 대한 세부정보를 Google Cloud 운영 제품군의 감사 로그에 작성합니다. 이러한 감사 로그 항목에는 시행 상태 메시지가 포함되어 있습니다. Google Cloud Console 또는 명령줄에서 gcloud logging read 명령어를 사용하여 이러한 로그 항목을 볼 수 있습니다.

이 가이드의 뒷 부분에서 검색을 위해서는 Cloud 감사 로그에 액세스하고 확인하려는 이벤트가 있는 프로젝트를 선택합니다.

Cloud 감사 로그에 대한 일반 액세스는 다음을 수행합니다.

  1. Cloud Console의 Google Cloud 운영 제품군 로깅 > 로그(로그 탐색기) 페이지로 이동합니다.

    로그 탐색기로 이동

  2. Cloud 감사 로그를 보려는 Google Cloud 프로젝트를 선택합니다.

시행 상태 메시지

GKE는 다음 시행 조건에 대한 메시지를 감사 로그에 작성합니다.

  • 차단된 배포: Binary Authorization 정책으로 인해 배포가 차단되었습니다.
  • breakglass 이벤트: 배포가 breakglass 메커니즘을 사용하여 정책 확인을 우회했습니다. 자세한 내용은 Break Glass 사용을 참조하세요.
  • Fail Open: Binary Authorization 백엔드를 사용할 수 없어 배포가 허용되었습니다.
  • 테스트 실행: 테스트 실행 모드가 Binary Authorization 정책에 설정되었으므로 배포가 정책 위반으로 허용되었습니다.

Cloud 감사 로그에서 차단된 배포 이벤트

컨테이너 이미지가 Binary Authorization 정책을 위반하여 차단되면 Cloud 감사 로그에서 차단된 배포 이벤트를 찾을 수 있습니다.

Cloud 감사 로그에서 차단된 배포 이벤트 쿼리

이 섹션에서는 차단된 배포 이벤트에 대해 Cloud 감사 로그를 쿼리하는 방법을 설명합니다.

로그 탐색기

Cloud 감사 로그 탐색기에서 차단된 배포 이벤트를 보려면 다음을 수행합니다.

  1. 로그 뷰어 페이지로 이동합니다.

  2. 검색어 상자에 다음 쿼리를 입력합니다.

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    protoPayload.response.status="Failure"
    (protoPayload.response.reason="VIOLATES_POLICY" OR
    protoPayload.response.reason="Forbidden")
    NOT "kube-system"
    NOT "istio-system"
    

  3. 시간 범위 선택기에서 기간을 선택합니다.

gcloud

Cloud 감사 로그에서 gcloud 명령줄 도구를 사용하여 이전 주의 정책 위반 이벤트를 보려면 다음 명령어를 실행합니다.

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster"
   logName:"cloudaudit.googleapis.com%2Factivity"
   (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
   protoPayload.response.status="Failure"
   (protoPayload.response.reason="VIOLATES_POLICY" OR
   protoPayload.response.reason="Forbidden")
   NOT "kube-system"
   NOT "istio-system"'

Cloud 감사 로그의 breakglass 이벤트

Binary Authorization을 사용하면 podspec에서 breakglass 라벨을 사용하여 정책을 재정의할 수 있습니다.

breakglass가 지정된 Pod의 Cloud 감사 로그 쿼리

로그 탐색기

Cloud 감사 로그 탐색기에서 breakglass 이벤트를 보려면 다음을 수행합니다.

  1. 로그 뷰어 페이지로 이동합니다.

  2. 검색어 상자에 다음을 입력합니다.

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
    "image-policy.k8s.io/break-glass"
    
  3. 시간 범위 선택기에서 기간을 선택합니다.

gcloud

Cloud 감사 로그에서 gcloud 도구를 사용하여 이전 주의 breakglass 이벤트를 보려면 다음 명령어를 실행합니다.

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster" AND
  logName:"cloudaudit.googleapis.com%2Factivity" AND
  protoPayload.methodName="io.k8s.core.v1.pods.create" AND
  "image-policy.k8s.io/break-glass"'

Cloud 감사 로그의 Fail Open 이벤트

컨테이너 이미지 배포를 시도하고, Binary Authorization 시행자를 사용할 수 없거나 타임아웃되고, 컨테이너 이미지를 배포하도록 허용되면 Fail Open이 발생합니다.

이 경우 확인 결과를 알 수 없으며 로그 항목이 기록됩니다.

Fail Open 이벤트의 Cloud 감사 로그 쿼리

로그 탐색기

Cloud 감사 로그 탐색기에서 Fail Open 이벤트를 보려면 다음을 수행하세요.

  1. 로그 뷰어 페이지로 이동합니다.

  2. 검색어 상자에 다음을 입력합니다.

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    ("image-policy.k8s.io/failed-open" OR
     "imagepolicywebhook.image-policy.k8s.io/failed-open" OR
     "failed-open.validating.webhook.admission.k8s.io")
    
  3. 시간 범위 선택기에서 기간을 선택합니다.

gcloud

gcloud 도구를 사용하여 Cloud 감사 로그에서 이전 주의 Fail Open 이벤트를 보려면 다음 명령어를 실행합니다.

gcloud logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster"
   logName:"cloudaudit.googleapis.com%2Factivity"
   (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
    protoPayload.methodName="io.k8s.core.v1.pods.update")
   ("image-policy.k8s.io/failed-open" OR
    "imagepolicywebhook.image-policy.k8s.io/failed-open" OR
    "failed-open.validating.webhook.admission.k8s.io")'

Cloud 감사 로그의 테스트 실행 이벤트

테스트 실행 모드는 비준수 이미지 배포를 허용하지만 배포 세부정보를 감사 로그에 기록하는 정책의 시행 모드입니다. 테스트 실행 모드를 사용하면 프로덕션 환경에서 정책이 적용되기 전에 테스트할 수 있습니다.

컨테이너 이미지가 정책에서 필요한 검사를 통과하지 못하지만 테스트 실행 모드로 배포가 허용되는 경우 Cloud 감사 로그에 imagepolicywebhook.image-policy.k8s.io/dry-run: "true"가 포함됩니다.

테스트 실행 이벤트의 Cloud 감사 로그 쿼리

로그 탐색기

Cloud 감사 로그 탐색기에서 테스트 실행 이벤트를 보려면 다음을 수행하세요.

  1. 로그 뷰어 페이지로 이동합니다.

  2. 검색어 상자에 다음을 입력합니다.

    resource.type="k8s_cluster"
    logName:"cloudaudit.googleapis.com%2Factivity"
    (protoPayload.methodName="io.k8s.core.v1.pods.create" OR
     protoPayload.methodName="io.k8s.core.v1.pods.update")
    labels."imagepolicywebhook.image-policy.k8s.io/dry-run"="true"
    
  3. 시간 범위 선택기에서 기간을 선택합니다.

gcloud

gcloud 도구를 사용하여 Cloud 감사 로그에서 이전 주의 테스트 실행 배포 이벤트를 보려면 다음 명령어를 실행합니다.

gcloud logging read --order="desc" --freshness=7d \
  'labels."imagepolicywebhook.image-policy.k8s.io/dry-run"="true"'