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 Registry または Container Registry(非推奨)リポジトリを含む Google Cloud プロジェクト。

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

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

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

始める前に

  1. Google Cloud CLI をインストールします。

  2. フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。

    詳細については、連携 ID を使用して gcloud CLI にログインするをご覧ください。

  3. gcloud CLI を初期化するには、次のコマンドを実行します。

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

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • 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 を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    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." \
  --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." \
    --role=roles/artifactregistry.reader

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

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