감사 로그 보기

이 페이지에서는 Cloud Logging에서 배포 상태 및 정책 시행에 대한 정보를 보는 방법을 설명합니다. 이 페이지에서 사용되는 Cloud Logging 용어에 대한 자세한 내용은 로그 보기를 참조하세요.

개요

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

아래의 모든 검색에서 Cloud Logging에 액세스하여 보려는 이벤트가 포함된 프로젝트를 선택합니다.

Cloud Logging에 대한 일반 액세스를 허용하려면 다음을 수행하세요.

  1. Cloud Console의 Google Cloud의 작업 제품군 로깅 > 로그(로그 뷰어) 페이지로 이동합니다.

    로그 뷰어 페이지로 이동

  2. Cloud Logging을 보려는 Google Cloud 프로젝트를 선택합니다.

시행 상태 메시지

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

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

Cloud Logging의 차단된 배포 이벤트

컨테이너 이미지가 Binary Authorization 정책을 위반하여 차단되면 GKE는 Kubernetes 클러스터(k8s_cluster) 리소스의 감사 로그에 다음을 작성합니다.

protoPayload.response.reason: "Forbidden"
protoPayload.response.status: "Failure"

차단된 배포 이벤트의 Cloud Logging 쿼리

   NOT "kube-system"
   NOT "istio-system"

Cloud Logging 뷰어(기본)

Cloud Logging 뷰어(기본)에서 차단된 배포 이벤트를 보려면 다음을 수행하세요.

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

  2. Cloud Logging 항목을 보려는 Google Cloud 프로젝트를 선택합니다.

  3. 기본 선택기 드롭다운 메뉴 을 사용하여 Kubernetes Cluster를 선택합니다.

  4. 로그 선택기 메뉴 드롭다운 메뉴 에서 cloudaudit.googleapis.com/activity를 선택합니다.

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

    FAILURE
    NOT "kube-system"
    NOT "istio-system"
    
  6. 시간 범위 선택기에서 기간을 선택합니다.

Cloud Logging 뷰어(미리보기)

Cloud Logging 뷰어(미리보기)에서 차단된 배포 이벤트를 보려면 다음을 수행하세요.

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

  2. 기본 뷰에서 버전 선택도구 메뉴를 선택하고, 로그 뷰어 버전을 기본에서 새 로그 뷰어 미리보기로 전환합니다.

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

    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"
    

    Cloud Logging에서 차단된 배포 이벤트 보기

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

명령줄

CLI를 사용하여 Cloud Logging에서 지난 주의 정책 위반 이벤트를 보려면 다음을 입력하세요.

gcloud beta logging read --order="desc" --freshness=7d \
  'resource.type="k8s_cluster" AND
  logName:"cloudaudit.googleapis.com%2Factivity" AND
  protoPayload.response.status="FAILURE"'

Cloud Logging의 Break Glass 이벤트

Binary Authorization을 사용하면 Break Glass 주석을 사용하여 정책을 재정의할 수 있습니다.

Binary Authorization 정책에서 필수 확인을 통과하지 못한 반면 정책 재정의로 배포될 수 있는 이미지의 경우 GKE는 다음 라벨을 Kubernetes 클러스터(k8s_cluster) 리소스의 감사 로그에 작성합니다.

imagepolicywebhook.image-policy.k8s.io/break-glass: "true"
imagepolicywebhook.image-policy.k8s.io/overridden-verification-result: "'IMAGE_PATH@IMAGE_DIGEST': Denied by DENIED_REASON

각 항목의 의미는 다음과 같습니다.

  • IMAGE_PATH는 배포 시도에서 컨테이너 이미지에 대한 정규화된 경로입니다(예: gcr.io/example-project/quickstart-image).
  • IMAGE_DIGEST는 컨테이너 이미지의 고유한 다이제스트입니다.
  • DENIED_REASON은 Binary Authorization 시행자가 배포를 거부한 이유입니다.

Break Glass 이벤트의 Cloud Logging 쿼리

Cloud Logging 뷰어(기본)

Cloud Logging 뷰어(기본)에서 Break Glass 이벤트를 보려면 다음을 수행하세요.

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

  2. Cloud Logging 항목을 보려는 Google Cloud 프로젝트를 선택합니다.

  3. 기본 선택기 드롭다운 메뉴 을 사용하여 Kubernetes Cluster를 선택합니다.

  4. 로그 선택기 메뉴 드롭다운 메뉴 에서 cloudaudit.googleapis.com/activity를 선택합니다.

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

    "imagepolicywebhook.image-policy.k8s.io/break-glass"
    
  6. 시간 범위 선택기에서 기간을 선택합니다.

Cloud Logging 뷰어(미리보기)

Cloud Logging 뷰어(미리보기)에서 Break Glass 이벤트를 보려면 다음을 수행하세요.

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

  2. 기본 뷰에서 버전 선택도구 메뉴를 선택하고, 로그 뷰어 버전을 기본에서 새 로그 뷰어 미리보기로 전환합니다.

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

    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/break-glass"="true"
    

    Cloud Logging에서 Break Glass 배포 보기

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

명령줄

CLI를 사용하여 Cloud Logging에서 지난 주의 Break Glass 이벤트를 보려면 다음을 입력하세요.

gcloud beta 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
  labels."imagepolicywebhook.image-policy.k8s.io/break-glass"="true"'

Cloud Logging의 Fail Open 이벤트

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

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

Fail Open 이벤트의 Cloud Logging 쿼리

Cloud Logging 뷰어(기본)

Cloud Logging 뷰어(기본)에서 Fail Open 이벤트를 보려면 다음을 수행하세요.

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

  2. Cloud Logging 항목을 보려는 Google Cloud 프로젝트를 선택합니다.

  3. 기본 선택기 드롭다운 메뉴 을 사용하여 Kubernetes Cluster를 선택합니다.

  4. 로그 선택기 메뉴 드롭다운 메뉴 에서 cloudaudit.googleapis.com/activity를 선택합니다.

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

    "image-policy.k8s.io/failed-open"
    
  6. 시간 범위 선택기에서 기간을 선택합니다.

Cloud Logging 뷰어(미리보기)

Cloud Logging 뷰어(미리보기)에서 Fail Open 이벤트를 보려면 다음을 수행하세요.

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

  2. 기본 뷰에서 버전 선택도구 메뉴를 선택하고, 로그 뷰어 버전을 기본에서 새 로그 뷰어 미리보기로 전환합니다.

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

    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"
    

    Cloud Logging에서 Fail Open 배포 보기

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

명령줄

CLI를 사용하여 Cloud Logging에서 지난 주의 Fail Open 이벤트를 보려면 다음을 입력하세요.

gcloud beta 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
  labels."alpha.image-policy.k8s.io/failed-open"="true"'

Cloud Logging의 테스트 실행 이벤트

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

정책에서 필수 확인을 통과하지 못한 반면 테스트 실행 모드로 배포될 수 있는 컨테이너 이미지의 경우 GKE는 다음을 Kubernetes 클러스터(k8s_cluster) 리소스의 감사 로그에 작성합니다.

imagepolicywebhook.image-policy.k8s.io/dry-run: "true"
imagepolicywebhook.image-policy.k8s.io/overridden-verification-result: "'REGISTRY_PATH': Image REGISTRY_PATH denied by projects/PROJECT_ID/attestors/ATTESTOR: Attestor cannot attest to an image deployed by tag

각 항목의 의미는 다음과 같습니다.

  • REGISTRY_PATH는 컨테이너 이미지 레지스트리의 이미지에 대한 정규화된 경로입니다.
  • ATTESTOR는 Binary Authorization의 증명자에 대한 정규화된 경로입니다.

테스트 실행 이벤트의 Cloud Logging 쿼리

Cloud Logging 뷰어(기본)

Cloud Logging 뷰어(기본)에서 테스트 실행 배포 이벤트를 보려면 다음을 수행하세요.

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

  2. Cloud Logging 항목을 보려는 Google Cloud 프로젝트를 선택합니다.

  3. 기본 선택기 드롭다운 메뉴 을 사용하여 Kubernetes Cluster를 선택합니다.

  4. 로그 선택기 메뉴 드롭다운 메뉴 에서 cloudaudit.googleapis.com/activity를 선택합니다.

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

    "imagepolicywebhook.image-policy.k8s.io/dry-run"
    
  6. 시간 범위 선택기에서 기간을 선택합니다.

Cloud Logging 뷰어(미리보기)

Cloud Logging 뷰어(미리보기)에서 테스트 실행 배포 이벤트를 보려면 다음을 수행하세요.

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

  2. 기본 뷰에서 버전 선택도구 메뉴를 선택하고, 로그 뷰어 버전을 기본에서 새 로그 뷰어 미리보기로 전환합니다.

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

    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"
    

    Cloud Logging에서 테스트 실행 배포 보기

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

명령줄

CLI를 사용하여 Cloud Logging에서 지난 주의 테스트 실행 배포 이벤트를 보려면 다음을 입력하세요.

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