このページでは、Cloud Build によってビルドされたコンテナ イメージのみがデプロイされるように Binary Authorization を構成することで、ソフトウェア サプライ チェーンを保護する方法について説明します。
このデプロイ管理を構成するには、Binary Authorization ポリシーで built-by-cloud-build 認証者を必須にします。イメージを生成するビルドを実行すると、Cloud Build によって built-by-cloud-build 認証者が自動的に作成されます。イメージが正常にビルドされると、Cloud Build が自動的に証明書に署名して作成します。デプロイ時に、Binary Authorization は built-by-cloud-build 認証者を使用して証明書を検証します。検証されたイメージはデプロイできます。検証で不合格だったイメージはデプロイできず、不合格が Cloud Audit Logs に記録されます。
Cloud Build に記録されたメタデータと Binary Authorization の使用方法を説明するエンドツーエンドのガイドについては、署名付き来歴と Binary Authorization の使用をご覧ください。
始める前に
この機能を使用するには、まず次のことを行う必要があります。
- プラットフォームに Binary Authorization を設定する。
- Cloud Build を設定して、イメージをビルドする。 
ポリシーを構成する
このセクションでは、built-by-cloud-build 認証者を要求するように Binary Authorization ポリシーを構成します。
Cloud Build によってビルドされたイメージのみをデプロイできるようにするには、次の手順を行います。
コンソール
- Google Cloud コンソールの [Binary Authorization] ページに移動します。 
- [Policy](ポリシー)タブで [Edit Policy](ポリシーを編集)をクリックします。 
- [ポリシーの編集] ダイアログで、[次のすべてのアテスターによって承認されたイメージのみを許可] を選択します。 
- [認証者の追加] をクリックします。 
- [認証者の追加] ダイアログ ボックスで、次の操作を行います。 - [プロジェクトと認証者の名前により追加] を選択し、次の手順を行います。- [プロジェクト名] フィールドに、Cloud Build を実行するプロジェクトを入力します。
- [認証者の名前] をクリックして、built-by-cloud-build認証者が表示されていることを確認します。
- [built-by-cloud-build] をクリックします。
 
- または、[認証者リソース ID により追加] を選択します。[認証者リソース ID] に、次のように入力します。 - projects/PROJECT_ID/attestors/built-by-cloud-build- PROJECT_IDは、Cloud Build を実行するプロジェクトに置き換えます。
 
- [プロジェクトと認証者の名前により追加] を選択し、次の手順を行います。
- [Add 1 attestor] をクリックします。 
- [ポリシーを保存] をクリックします。 
gcloud
- 次のコマンドを使用して、既存のポリシーをファイルにエクスポートします。 - gcloud container binauthz policy export > /tmp/policy.yaml
- ポリシー ファイルを編集します。 
- 次のいずれかのルールを編集します。 - defaultAdmissionRule
- clusterAdmissionRules
- istioServiceIdentityAdmissionRules
- kubernetesServiceAccountAdmissionRules
 
- まだルールに - requireAttestationsByブロックがない場合は、追加します。
- requireAttestationsByブロックに以下の行を追加します。- projects/PROJECT_ID/attestors/built-by-cloud-build- PROJECT_IDは、Cloud Build を実行するプロジェクトに置き換えます。
- ポリシー ファイルを保存します。 
- ポリシー ファイルをインポートします。 - gcloud container binauthz policy import /tmp/policy.yaml- built-by-cloud-build-attestorへの参照を含むポリシー ファイルの例を次に示します。- defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy- PROJECT_IDは、Cloud Build を実行するプロジェクト ID に置き換えます。
次のステップ
- イメージのデプロイを禁止する代わりに、ドライラン モードを使用してポリシー違反をロギングする。
- Google Kubernetes Engine(GKE)または Cloud Run で、許可されていないイメージの監査ログイベントを表示する。