継続的検証を使用する

このページでは、Binary Authorization で継続的検証(CV)を使用する方法について説明します。

継続的検証は、Binary Authorization の一機能で、ポリシーへの準拠を継続するために、実行中の Pod に関連付けられたコンテナ イメージを定期的にチェックします。結果は、CV によって Cloud Logging に記録されます。

始める前に

  1. Google Kubernetes の Binary Authorization が設定されている必要があります。

  2. Binary Authorization をインストールしたプロジェクトのプロジェクト ID を選択します。CV は、プロジェクト内のすべてのクラスタの Pod から取得したポリシー遵守イベントをログに記録します。

CV の IAM ロールを設定する

Identity and Access Management(IAM)のロールには権限が含まれており、ユーザー、グループ、サービス アカウントに割り当てることができます。各ロールに含まれている CV の権限は次のとおりです。

役割名 CV の権限 説明
roles/binaryauthorization.policyEditor binaryauthorization.continuousValidationConfig.update CV を有効または無効にします。

CV の有効化

Console

Cloud Console を使用して CV を有効にするには、次の手順を行います。

  1. Cloud Console で、[Binary Authorization ポリシー] のページに移動します。

    Binary Authorization ポリシーに移動

  2. [ポリシー] タブをクリックします。

  3. [ポリシーの編集] をクリックします。

  4. [継続的検証] チェックボックスをオンにします。

  5. [ポリシーを保存] をクリックします。

REST API

REST API を使用して CV を有効にするには、次の手順を行います。

  1. プロジェクト ID を保存します。

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID は、GKE を実行するプロジェクトの ID に置き換えます。

  2. GCP 用の OAuth トークンを取得します。

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    トークンは短期間のみ有効です。

  3. CV を有効にします。

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "true"}}'
    

これで、イベントをログに記録するように CV を構成できました。

Logging のログエントリは次の例のようになります。

{
  "insertId": "6054e143-0000-2562-aa64-883d24f57e70",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
    "podEvent": {
      "images": [
        {
          "description": "Image <var>IMAGE_NAME@IMAGE_DIGEST</var> denied by
           attestor projects/<var>ATTESTOR_PROJECT_ID</var>/attestors/<var>ATTESTOR_NAME</var>:
           No attestations found that were valid and signed by a key trusted by
           the attestor",
          "image": "<var>IMAGE_NAME@IMAGE_DIGEST</var>",
          "result": "DENY"
        }
      ],
      "verdict": "VIOLATES_POLICY",
      "deployTime": "2021-03-19T17:00:08Z",
      "pod": "<var>POD_NAME</var>"
    }
  },
  "resource": {
    "type": "k8s_cluster",
    "labels": {
      "cluster_name": "<var>CLUSTER_NAME</var>",
      "location": "<var>CLUSTER_LOCATION</var>",
      "project_id": "<var>DEPLOYER_PROJECT_ID</var>"
    }
  },
  "timestamp": "2021-03-19T17:15:43.872702342Z",
  "severity": "WARNING",
  "logName": "projects/<var>DEPLOYER_PROJECY_ID</var>/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
  "receiveTimestamp": "2021-03-19T17:57:00.432116179Z"
}

CV イベントのクエリを実行する方法については、Cloud Logging で CV イベントを表示するをご覧ください。

CV の無効化

Console

Cloud Console を使用して CV を無効にするには、次の手順を行います。

  1. Cloud Console で、[Binary Authorization] ページに移動します。

    Binary Authorization ポリシーに移動

  2. [ポリシー] タブをクリックします。

  3. [ポリシーの編集] をクリックします。

  4. [継続的検証] チェックボックスをオフにします。

  5. [ポリシーを保存] をクリックします。

REST API

REST API を使用して CV を無効にするには、次の手順を行います。

  1. プロジェクト ID を保存します。

    DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID
    

    DEPLOYER_PROJECT_ID は、GKE を実行するプロジェクトの ID に置き換えます。

  2. GCP 用の OAuth トークンを取得します。

    BEARER_TOKEN=$(gcloud auth print-access-token)
    

    トークンは短期間のみ有効です。

  3. 次のコマンドを使用して CV を無効にします。

    curl "https://binaryauthorization.googleapis.com/v1alpha2/projects/${DEPLOYER_PROJECT_ID}/continuousValidationConfig" -X PUT -H "authorization: Bearer $BEARER_TOKEN" -H "Content-Type: application/json" --data '{"enforcementPolicyConfig": {"enabled": "false"}}'
    

Cloud Logging で CV イベントを表示する

CV を有効にすると、Binary Authorization ポリシーに違反するすべての Pod が定期的に Cloud Logging に記録されます。

これらのログエントリは、次のログ名を含んでいます。

logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"

ログ エクスプローラ

ログ エクスプローラを使用して Cloud Logging で CV イベントを表示するには、次の手順を行います。

  1. [ログ エクスプローラ] に移動します

  2. Google Cloud のオペレーション スイートを有効にしたプロジェクト ID を選択します。

  3. 次のクエリを検索クエリボックスに入力します。

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  4. 時間範囲セレクタで期間を選択します。

以前のログビューア

以前のログビューアを使用して Cloud Logging で CV イベントを表示するには、次の手順を行います。

  1. [ログ エクスプローラ] に移動します

  2. [オプション] プルダウン メニューから [以前のログビューアに戻る] を選択します。

  3. Google Cloud のオペレーション スイートを設定した Google Cloud プロジェクトを選択します。

  4. 次のクエリを検索クエリボックスに入力します。

    logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
    
  5. 時間範囲セレクタで期間を選択します。

gcloud

gcloud を使用して Cloud Logging 内の過去 1 週間の CV イベントを表示するには、次のコマンドを実行します。

gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'

次のステップ