gcloud CLI を使用してポリシーを構成する

このページでは、Google Cloud CLI を使用して Binary Authorization ポリシーを構成する手順について説明します。このタスクは、Google Cloud コンソールまたは REST API でも行うことができます。この手順は Binary Authorization の設定の一部です。

コマンドライン ツールを使用してポリシーを構成するには、既存のポリシーを YAML ファイルとしてエクスポートします。このガイドで後述するように、ファイルを変更した後、ファイルをインポートしてポリシーを更新できます。ポリシー YAML 形式の詳細については、ポリシー YAML リファレンスをご覧ください。

始める前に

  1. Binary Authorization を有効にします
  2. クラスタを作成する
  3. 証明書を使用する場合は、ポリシーを構成する前に認証者を作成することをおすすめします。認証者の作成は、コマンドライン ツールまたは Google Cloud コンソールで行います。
  4. プロジェクト ID を Binary Authorization を有効にしたプロジェクトに設定します。

    PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

ポリシーの YAML ファイルをエクスポートする

このセクションの内容は、GKE、Distributed Cloud、Cloud Run、Cloud Service Mesh を対象としています。

ポリシーを更新するには、まず、次のようにローカル YAML ファイルにポリシーをエクスポートします。

gcloud container binauthz policy export > /tmp/policy.yaml

デフォルトでは、ファイルの内容は次のようになっています。

defaultAdmissionRule:
  enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
  evaluationMode: ALWAYS_ALLOW
globalPolicyEvaluationMode: ENABLE
name: projects/PROJECT_ID/policy

このガイドで後述するように、ポリシーを変更するには、ファイルを編集してセクションを追加、更新します。ファイルを保存した後、ポリシーをインポートできます。

除外イメージを許可リストに追加するには、ポリシー ファイルに次の行を追加します。

admissionWhitelistPatterns:
  - namePattern: EXEMPT_IMAGE_PATH

EXEMPT_IMAGE_PATH は、除外するイメージのパスに置き換えます。除外するイメージを追加するには、- namePattern エントリを追加します。admissionWhitelistPatterns の詳細をご確認ください。

デフォルト ルールを設定する

このセクションの内容は、GKE、Distributed Cloud、Cloud Run、Cloud Service Mesh を対象としています。

ルールはポリシーの一部で、コンテナ イメージをデプロイする際の制約を定義します。デフォルト ルールは、独自のクラスタ固有のルールがなく、すべての対象イメージに適用される制約を定義します。ポリシーにはデフォルト ルールが必須です。

デフォルト ルールは、ポリシー YAML ファイルの defaultAdmissionRule ノードに定義します。このルールの各部分の詳細については、ポリシー YAML リファレンスのADMISSION_RULE をご覧ください。デフォルト ルールの例については、サンプル ポリシーをご覧ください。

デフォルト ルールを設定するには、policy.yaml ファイルで defaultAdmissionRule ノードを編集します。

defaultAdmissionRule:
  evaluationMode: EVALUATION_MODE
  enforcementMode: ENFORCEMENT_MODE
  requireAttestationsBy:
  - ATTESTOR
  - ...

次のように置き換えます。

  • EVALUATION_MODE: 評価モードでは、デプロイ時に Binary Authorization 施行者が適用する制約のタイプを指定します。EVALUATION_MODE は、次のいずれかのオプションに置き換えます。

    • ALWAYS_ALLOW: すべてのイメージのデプロイを許可します。
    • ALWAYS_DENY: すべてのイメージのデプロイを禁止します。
    • REQUIRE_ATTESTATION: このルールに追加するすべての認証者が検証できる証明書がイメージに含まれている場合、イメージのデプロイを許可します。施行者はデプロイ時に、このルールの ATTESTOR リストに追加した認証者を使用して証明書を確認します。認証者の作成方法については、認証者の作成をご覧ください。REQUIRE_ATTESTATION を指定する場合は、少なくとも 1 人の認証者を含む requireAttestationsBy ブロックも追加する必要もあります。認証者の作成方法については、認証者の作成をご覧ください。
  • ENFORCEMENT_MODE: 強制適用モードでは、イメージがルールに違反している場合に施行者がどのように応答するかを指定します。ENFORCEMENT_MODE は、次のいずれかに置き換えます。

    • ENFORCED_BLOCK_AND_AUDIT_LOG: ルールに違反するイメージをブロックし、違反に関する情報を Cloud Audit Logs にロギングします(デフォルト)。
    • DRYRUN_AUDIT_LOG_ONLY: すべてのイメージのデプロイを許可しますが、違反に関する情報を含む適用情報を Cloud Audit Logs に記録します。
  • ATTESTOR: EVALUATION_MODEREQUIRE_ATTESTATION に設定した場合は、requireAttesationsBy ブロックも追加する必要があります。ブロックでは、リソース ID を使用して 1 人以上の認証者を指定します。リソース ID の形式は次のとおりです。

    projects/PROJECT_ID/attestors/ATTESTOR_NAME

    認証者の作成方法については、認証者の作成をご覧ください。

除外イメージを管理する

このセクションの内容は、GKE、Distributed Cloud、Cloud Run、Cloud Service Mesh を対象としています。

除外イメージは、ポリシールールの対象外となるイメージです。Binary Authorization では、除外イメージのデプロイが常に許可されます。

除外イメージは、admissionWhitelistPatterns にイメージのレジストリのパスを記述することで指定します。そのパスは、Container Registry または別のイメージ レジストリを参照するものです。デプロイ時に、Binary Authorization は、システム ポリシーで指定されたイメージに続いて、admissionWhitelistPatterns で指定されたイメージのリストを除外します。

除外イメージを追加するには、policy.yaml ファイルの admissionWhitelistPatterns リストに namePattern ノードを追加します。

admissionWhitelistPatterns:
- namePattern: MATCHING_PATTERN

MATCHING_PATTERN は、レジストリ内で完全に一致する単一イメージへのパス、またはワイルドカード記号(***)を使用したパターンに一致する任意のイメージへのパスで置き換えます。

Cloud Run

このセクションは Cloud Run に該当する内容です。

タグを含むイメージ名を直接指定することはできません。たとえば、IMAGE_PATH:latest は指定できません。

タグを含むイメージ名を指定する場合は、次のようにワイルドカードを使用してイメージ名を指定する必要があります。

  • *: 単一イメージのすべてのバージョン。例: us-docker.pkg.dev/myproject/container/hello@*
  • **: プロジェクト内のすべてのイメージ。例: us-docker.pkg.dev/myproject/**

パス名を使用して IMAGE_PATH@DIGEST の形式でダイジェストを指定できます。

システム ポリシー評価モード

このセクションの内容は、GKE と Distributed Cloud を対象としています。