GKE でプロジェクト間のアクセスを構成する

このページでは、現在のプロジェクトとは異なる Google Cloud プロジェクトに存在するポリシーとコンテナ イメージに対するアクセス権を Binary Authorization に付与する方法について説明します。たとえば、別のプロジェクトが所有する Artifact Registry リポジトリまたは Container Registry(非推奨)から Google Kubernetes Engine(GKE)クラスタにイメージをデプロイする場合は、ソース リポジトリのイメージ メタデータに対するアクセス権をプロジェクトの Binary Authorization サービスに付与する必要があります。

用語

このドキュメントでは、次の用語を使用しています。

  • サービス エージェント: Google Cloud が管理するサービス アカウント。Binary Authorization は、サービス エージェントを使用して GKE クラスタなどの Google Cloud リソースを操作します。
  • ポリシー プロジェクト: Binary Authorization ポリシーを含む Google Cloud プロジェクト。
  • クラスタ プロジェクト: GKE クラスタを含む Google Cloud プロジェクト。
  • Artifact プロジェクト: Artifact Registry または Container Registry(非推奨)リポジトリを含む Google Cloud プロジェクト。

プロジェクト間のアクセスが必要なシナリオ

次のような場合は、プロジェクト間の権限を付与する必要があります。

  • ポリシー プロジェクトがクラスタ プロジェクトと異なる。
  • クラスタ プロジェクトがアーティファクト プロジェクトと異なる。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud CLI をインストールします。
  3. gcloud CLI を初期化するには:

    gcloud init
  4. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Binary Authorization API を有効にします。

    gcloud services enable binaryauthorization.googleapis.com
  7. Google Cloud CLI をインストールします。
  8. gcloud CLI を初期化するには:

    gcloud init
  9. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  10. Google Cloud プロジェクトで課金が有効になっていることを確認します

  11. Binary Authorization API を有効にします。

    gcloud services enable binaryauthorization.googleapis.com

クラスタ プロジェクトがポリシー プロジェクトと異なる場合

クラスタ プロジェクトの Binary Authorization サービス エージェントに、ポリシー プロジェクトに対する Binary Authorization ポリシー評価者roles/binaryauthorization.policyEvaluator)ロールを付与します。

gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \
  --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
  --role=roles/binaryauthorization.policyEvaluator

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

  • POLICY_PROJECT_ID: ポリシーを含むプロジェクトの ID。
  • CLUSTER_PROJECT_ID: クラスタのプロジェクト ID。

アーティファクト プロジェクトがクラスタ プロジェクトと異なる場合

クラスタ プロジェクトの Binary Authorization サービス エージェントに、アーティファクト プロジェクトに対する Artifact Registry 読み取りroles/artifactregistry.reader)ロールを付与します。

gcloud projects add-iam-policy-binding ARTIFACT_PROJECT_ID \
    --member="serviceAccount:service-$(gcloud projects describe CLUSTER_PROJECT_ID --format='value(projectNumber)')@gcp-sa-binaryauthorization.iam.gserviceaccount.com" \
    --role=roles/artifactregistry.reader

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

  • ARTIFACT_PROJECT_ID: Artifact Registry リポジトリを含むプロジェクトの ID。
  • CLUSTER_PROJECT_ID: GKE クラスタを実行するプロジェクト ID。