ポリシーの例

このページには、YAML 形式で指定された Binary Authorization ポリシーのサンプルが記載されています。Binary Authorization でポリシーを構成する手順については、CLI を使用したポリシーの構成または Console を使用したポリシーの構成をご覧ください。

すべてのデプロイを許可する

次の例は、制約なしですべてのコンテナ イメージをデプロイできるようにする方法を示しています。

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: grc.io/example-project-1/*
- namePattern: grc.io/example-project-2/my-app
defaultAdmissionRule:
  evaluationMode: ALWAYS_DENY
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG

ここで、追加の除外イメージの一致パターンは grc.io/example-project-1/*grc.io/example-project-2/my-app です。