このページでは、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] ページに移動します。
[ポリシー] タブで [ポリシーの編集] をクリックします。
[ポリシーの編集] ダイアログで、[次のすべてのアテスターによって承認されたイメージのみを許可] を選択します。
[認証者の追加] をクリックします。
[認証者の追加] ダイアログ ボックスで、次の操作を行います。
- [プロジェクトと認証者の名前により追加] を選択し、次の手順を行います。
- [プロジェクト名] フィールドに、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 で、許可されていないイメージの監査ログイベントを表示する。