監査ログの表示

このページでは、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 のオペレーション スイートの [Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. Cloud Logging を表示する Google Cloud プロジェクトを選択します。

適用ステータスのメッセージ

GKE は、次の適用条件のメッセージを監査ログに書き込みます。

  • ブロックされたデプロイ: Binary Authorization ポリシーによりデプロイがブロックされています。
  • ブレークグラス イベント: ブレークグラス メカニズムにより、デプロイがポリシー チェックを回避しています。詳しくは、ブレークグラスの使用をご覧ください。
  • フェイル オープン: 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 Viewer(プレビュー)で表示するには:

  1. ログビューア ページに移動

  2. 従来の表示からバージョン選択ツールのメニューを選択し、ログビューアのバージョンを [ CLASSIC] から [新しいログビューアをプレビュー] に切り替えます。

  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 を使用して過去 1 週間のポリシー違反イベントを 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 のブレークグラス イベント

Binary Authorization では、ブレークグラス アノテーションを使用してポリシーをオーバーライドできます。

イメージが 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 施行者がデプロイを拒否した理由です。

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/break-glass"
    
  6. 時間範囲セレクタで期間を選択します。

Cloud Logging ビューア(プレビュー)

Cloud Logging ビューア(プレビュー)でブレークグラス イベントを表示するには:

  1. ログビューア ページに移動

  2. 従来の表示からバージョン選択ツールのメニューを選択し、ログビューアのバージョンを [ CLASSIC] から [新しいログビューアをプレビュー] に切り替えます。

  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 でブレークグラス デプロイを表示する

  4. 時間範囲セレクタで期間を選択します。

コマンドライン

CLI を使用して過去 1 週間のブレークグラス イベントを Cloud Logging で表示するには:

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 でのフェイル オープン イベント

コンテナ イメージのデプロイが試行され、Binary Authorization 施行者が利用できないかタイムアウトになり、コンテナ イメージのデプロイが許可されると、フェイル オープンが発生します。

この場合、確認結果で不明なログエントリが記録されます。

Cloud Logging からフェイル オープン イベントをクエリで取得する

Cloud Logging ビューア(従来版)

Cloud Logging ビューア(従来版)でフェイル オープン イベントを表示するには:

  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 ビューア(プレビュー)でフェイル オープン イベントを表示するには:

  1. ログビューア ページに移動

  2. 従来の表示からバージョン選択ツールのメニューを選択し、ログビューアのバージョンを [ CLASSIC] から [新しいログビューアをプレビュー] に切り替えます。

  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 でのフェイル オープン デプロイの表示

  4. 時間範囲セレクタで期間を選択します。

コマンドライン

CLI を使用して Cloud Logging で過去 1 週間のフェイル オープン イベントを表示するには:

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 のドライラン イベント

ドライラン モードは、ポリシーの適用モードの 1 つです。非遵守のイメージをデプロイできますが、デプロイに関する詳細を監査ログに書き込みます。ドライラン モードでは、ポリシーを有効にする前に本番環境でテストを行うことができます。

コンテナ イメージが必要なチェックに合格せず、ドライラン モードでデプロイできる場合、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. 従来の表示からバージョン選択ツールのメニューを選択し、ログビューアのバージョンを [ CLASSIC] から [新しいログビューアをプレビュー] に切り替えます。

  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 で過去 1 週間のドライラン デプロイ イベントを表示するには:

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