このページでは、現在のプロジェクトとは異なる Google Cloud プロジェクトに存在するポリシーとコンテナ イメージに対するアクセス権を Binary Authorization に付与する方法について説明します。たとえば、別のプロジェクトが所有する Artifact Registry リポジトリまたは Container Registry(非推奨)から Google Kubernetes Engine(GKE)クラスタにイメージをデプロイする場合は、ソース リポジトリのイメージ メタデータに対するアクセス権をプロジェクトの Binary Authorization サービスに付与する必要があります。
用語
このドキュメントでは、次の用語を使用しています。
- サービス エージェント: A Google Cloudが管理するサービス アカウント。 Binary Authorization は、サービス エージェントを使用して GKE クラスタなどの Google Cloud リソースを操作します。
- ポリシー プロジェクト: Binary Authorization ポリシーを含む Google Cloud プロジェクト。
- クラスタ プロジェクト: GKE クラスタを含む Google Cloud プロジェクト。
- アーティファクト プロジェクト: Artifact Registry または Container Registry(非推奨)リポジトリを含む Google Cloud プロジェクト。
プロジェクト間のアクセスが必要なシナリオ
次のような場合は、プロジェクト間の権限を付与する必要があります。
- ポリシー プロジェクトがクラスタ プロジェクトと異なる。
- クラスタ プロジェクトがアーティファクト プロジェクトと異なる。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Binary Authorization API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。gcloud services enable binaryauthorization.googleapis.com
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを作成または選択します Google Cloud 。
プロジェクトを選択または作成するために必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、プロジェクト作成者ロール
(
roles/resourcemanager.projectCreator)が必要です。これにはresourcemanager.projects.create権限が含まれています。詳しくは、ロールを付与する方法をご覧ください。
-
プロジェクトを作成します。 Google Cloud
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
Binary Authorization API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(
roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを付与する方法をご覧ください。gcloud services enable binaryauthorization.googleapis.com
クラスタ プロジェクトがポリシー プロジェクトと異なる場合
クラスタ プロジェクトの Binary Authorization サービス エージェントに、ポリシー プロジェクトに対する Binary Authorization ポリシー評価者(roles/binaryauthorization.policyEvaluator)ロールを付与します。
gcloud projects add-iam-policy-bindingPOLICY_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_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-bindingARTIFACT_PROJECT_ID\ --member="serviceAccount:service-$(gcloud projects describeCLUSTER_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。