ポリシーの例

このページには、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 

ここでは、デフォルト ルールevaluationModeALWAYS_ALLOW になっているため、Binary Authorization はすべてのコンテナ イメージのデプロイを許可します。デフォルトの enforcementModeENFORCED_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 に必要なイメージがポリシー適用によってブロックされません。デフォルト ルールevaluationModeALWAYS_DENY になっているため、すべてのコンテナ イメージのデプロイが Binary Authorization によって拒否されます。enforcementModeENFORCED_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 

ここでは、デフォルト ルールで evaluationModeREQUIRE_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 

デフォルト ルールで enforcementModeDRYRUN_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 です。