Cloud Build によってビルドされたイメージのみをデプロイする

このページでは、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 の使用をご覧ください。

始める前に

この機能を使用するには、まず次のことを行う必要があります。

ポリシーを構成する

このセクションでは、built-by-cloud-build 認証者を要求するように Binary Authorization ポリシーを構成します。

Cloud Build によってビルドされたイメージのみをデプロイできるようにするには、次の手順を行います。

コンソール

  1. Google Cloud コンソールで [Binary Authorization] ページに移動します。

    [Binary Authorization] に移動

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

  3. [ポリシーの編集] ダイアログで、[次のすべてのアテスターによって承認されたイメージのみを許可] を選択します。

  4. [認証者の追加] をクリックします。

  5. [認証者の追加] ダイアログ ボックスで、次の操作を行います。

    1. [プロジェクトと認証者の名前により追加] を選択し、次の手順を行います。
      1. [プロジェクト名] フィールドに、Cloud Build を実行するプロジェクトを入力します。
      2. [認証者の名前] をクリックして、built-by-cloud-build 認証者が表示されていることを確認します。
      3. [built-by-cloud-build] をクリックします。
    2. または、[認証者リソース ID により追加] を選択します。[認証者リソース ID] に、次のように入力します。

      projects/PROJECT_ID/attestors/built-by-cloud-build
      

      PROJECT_ID は、Cloud Build を実行するプロジェクトに置き換えます。

  6. [Add 1 attestor] をクリックします。

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

gcloud

  1. 次のコマンドを使用して、既存のポリシーをファイルにエクスポートします。

    gcloud container binauthz policy export > /tmp/policy.yaml
    
  2. ポリシー ファイルを編集します。

  3. 次のいずれかのルールを編集します。

    • defaultAdmissionRule
    • clusterAdmissionRules
    • istioServiceIdentityAdmissionRules
    • kubernetesServiceAccountAdmissionRules
  4. まだルールに requireAttestationsBy ブロックがない場合は、追加します。

  5. requireAttestationsBy ブロックに以下の行を追加します。

    projects/PROJECT_ID/attestors/built-by-cloud-build
    

    PROJECT_ID は、Cloud Build を実行するプロジェクトに置き換えます。

  6. ポリシー ファイルを保存します。

  7. ポリシー ファイルをインポートします。

    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 に置き換えます。

次のステップ