このページには、YAML 形式で指定された Binary Authorization ポリシーのサンプルが記載されています。Binary Authorization でポリシーを構成する手順については、Google Cloud CLI を使用してポリシーを構成するまたは Google Cloud コンソールを使用してポリシーを構成するをご覧ください。
すべてのデプロイを許可する
次の例は、制約なしですべてのコンテナ イメージをデプロイできるようにする方法を示しています。
name: projects/example-project/policy defaultAdmissionRule: evaluationMode: ALWAYS_ALLOW enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
ここでは、デフォルト ルールで evaluationMode
が ALWAYS_ALLOW
になっているため、Binary Authorization はすべてのコンテナ イメージのデプロイを許可します。デフォルトの enforcementMode
は ENFORCED_BLOCK_AND_AUDIT_LOG
に設定されていますが、すべてのデプロイが許可されているため、この操作は行われません。
すべてのデプロイをブロックする
次の例は、すべてのコンテナ イメージのデプロイをブロックする方法を示しています。ただし、Google 管理のシステム イメージを除きます。これらは、Google Kubernetes Engine(GKE)クラスタを正常に起動するために必要なコンテナ イメージです。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
ここで globalPolicyEvaluationMode が有効に設定されているため、GKE に必要なイメージがポリシー適用によってブロックされません。デフォルト ルールで evaluationMode
が ALWAYS_DENY
になっているため、すべてのコンテナ イメージのデプロイが Binary Authorization によって拒否されます。enforcementMode
が ENFORCED_BLOCK_AND_AUDIT_LOG
に設定されているため、Binary Authorization によりデプロイがブロックされ、監査ログに書き込まれます。
デプロイ前に認証者に署名を要求する
次の例は、コンテナ イメージをデプロイする前に、認証者にリリースの承認を求める方法を示しています。すべての認証者が署名しないと、デプロイはブロックされます。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build
ここでは、デフォルト ルールで evaluationMode
が REQUIRE_ATTESTATION
になっているため、Binary Authorization は、requireAttestationsBy
で必要な認証者によって承認されたイメージにのみデプロイを許可します。
ドライラン モードでのデプロイを許可する
ドライラン モードは、ポリシーの適用モードの 1 つです。非準拠のイメージのデプロイが許可され、ポリシー違反とデプロイに関する詳細が監査ログに書き込まれます。ドライラン モードでは、ポリシーを有効にする前に本番環境でテストを行うことができます。
次の例は、非準拠のイメージをすべてドライラン モードでデプロイする方法を示しています。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: DRYRUN_AUDIT_LOG_ONLY requireAttestationsBy: - projects/example-project/attestors/secure-build
デフォルト ルールで enforcementMode
は DRYRUN_AUDIT_LOG_ONLY
になっています。これにより、指定された認証者による承認がないイメージのデプロイが許可され、非準拠のデプロイに関する情報が監査ログに書き込まれます。
クラスタ固有のルールを使用する
次の例は、指定した認証者によって承認されたコンテナ イメージのみをデプロイするクラスタ固有のルールを示しています。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG clusterAdmissionRules: us-east1-a.prod-cluster: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/example-project/attestors/secure-build - projects/example-project/attestors/prod-qualified
ここで、クラスタ固有のルールは、us-east1-a.prod-cluster
にデプロイされるコンテナ イメージにのみ適用されます。このルールでは、イメージをデプロイする前に 2 つの認証者による認証が必要になります。
除外イメージを追加する
次の例は、ポリシーから除外するイメージのリストに Container Registry または別のレジストリのパスを追加する方法を示しています。
name: projects/example-project/policy globalPolicyEvaluationMode: ENABLE admissionWhitelistPatterns: - namePattern: gcr.io/example-project-1/* - namePattern: gcr.io/example-project-2/my-app defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
ここで、追加の除外イメージの一致パターンは gcr.io/example-project-1/*
と gcr.io/example-project-2/my-app
です。