このページは、以前の継続的検証(以前の CV)(非推奨)のユーザーを対象としています。
以前の継続的検証は、Binary Authorization の機能で、Binary Authorization プロジェクトのシングルトン ポリシーへの遵守を継続するため、実行中の Pod に関連付けられたコンテナ イメージを定期的にチェックします。以前の CV は、結果を Cloud Logging に記録します。
以前の CV は実行中の Pod を終了しません。
制限事項
以前の CV には次の制限があります。
- 以前の CV は、Google Kubernetes Engine(GKE)にデプロイされた Pod のみをサポートします。
- 以前の CV は、Cloud Service Mesh サービス ID、Kubernetes サービス アカウント、Kubernetes Namespace の特定のルールを指定する Binary Authorization ポリシーはサポートしていません。
始める前に
- プロジェクトで Google Kubernetes Engine の Binary Authorization が設定されていることを確認します。以前の CV は、プロジェクト内のすべてのクラスタの Pod から受信したポリシー適合性イベントをログに記録します。 
- gcloud CLI が最新バージョンであることを確認します。 
必要な権限
Identity and Access Management(IAM)のロールには権限が含まれています。このロールは、ユーザー、グループ、サービス アカウントに割り当てることができます。各ロールに含まれている CV の権限は次のとおりです。
| ロール名 | 以前の CV 権限 | 説明 | 
|---|---|---|
| roles/binaryauthorization.policyEditor | binaryauthorization.continuousValidationConfig.update | CV を有効または無効にします。 | 
必要な IAM 権限を設定するには、次のコマンドを実行します。
PROJECT_NUMBER=$(gcloud projects list \
  --filter="projectId:ATTESTATION_PROJECT_ID" \
  --format="value(PROJECT_NUMBER)")
SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \
    --member="serviceAccount:$SERVICE_ACCOUNT" \
    --role='roles/containeranalysis.occurrences.viewer'
従来の CV を有効にする
コンソール
Google Cloud コンソールを使用して以前の CV を有効にするには、次の操作を行います。
- Google Cloud コンソールで、[Binary Authorization] の [ポリシー] ページに移動します。 
- [ポリシー] タブをクリックします。 
- [ポリシーの編集] をクリックします。 
- [GKE と Anthos のデプロイ向けの追加設定] セクションを開きます。 
- [継続的検証を有効にする] チェックボックスをオンにします。 
- [ポリシーを保存] をクリックします。 
REST API
REST API を使用して以前の CV を有効にするには、次の手順で操作します。
- プロジェクト ID を保存します。 - DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID- DEPLOYER_PROJECT_IDは、GKE を実行するプロジェクトの ID に置き換えます。
- Google Cloudの OAuth トークンを取得します。 - BEARER_TOKEN=$(gcloud auth print-access-token)- トークンは短時間しか有効でありません。 
- 以前の 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 は、Cloud Asset Inventory や Pub/Sub などの他の Google Cloud サービスを使用します。以前の CV に失敗した場合は、Cloud Logging で Cloud Asset Inventory のエラーを確認できます。
また、以前の CV は binauthz-cv-cai-feed というフィード リソースを作成します。フィードを削除または変更すると、以前の CV が失敗することがあります。以前の CV は、欠落しているフィードや変更されたフィードを自動的に復元しますが、復元するまで検出結果が記録されない場合があります。
CV を無効にする
コンソール
Google Cloud コンソールを使用して以前の CV を無効にするには、次の操作を行います。
- Google Cloud コンソールで、[Binary Authorization] ページに移動します。 
- [ポリシー] タブをクリックします。 
- [ポリシーの編集] をクリックします。 
- [継続的検証を有効にする] チェックボックスをオフにします。 
- [ポリシーを保存] をクリックします。 
REST API
REST API を使用して以前の CV を無効にするには、次の手順で操作します。
- プロジェクト ID を保存します。 - DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID- DEPLOYER_PROJECT_IDは、GKE を実行するプロジェクトの ID に置き換えます。
- Google Cloudの OAuth トークンを取得します。 - BEARER_TOKEN=$(gcloud auth print-access-token)- トークンは短時間しか有効でありません。 
- 次のコマンドを使用して、以前の 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 イベントを表示するには、次の手順で操作します。
- Google Cloud Observability を有効にしたプロジェクト ID を選択します。 
- 検索クエリボックスに次のクエリを入力します。 - logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
- 時間範囲セレクタで期間を選択します。 
以前のログビューア
ログ エクスプローラを使用して Cloud Logging で以前の CV イベントを表示するには、次の手順で操作します。
- [オプション] プルダウン メニューから [以前のログビューアに戻る] を選択します。 
- Google Cloud Observability を設定した Google Cloud プロジェクトを選択します。 
- 検索クエリボックスに次のクエリを入力します。 - logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"
- 時間範囲セレクタで期間を選択します。 
gcloud
gcloud を使用して Cloud Logging 内の過去 1 週間の以前の CV イベントを表示するには、次のコマンドを実行します。
gcloud logging read --order="desc" --freshness=7d \
  'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation"'
次のステップ
- ブレークグラスを使用して Pod をデプロイし、ブレークグラス イベントを表示する。
- ドライランを有効にしてコンテナ イメージをデプロイし、ドライラン イベントを表示する。