ポリシーの例

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