すべての Eventarc トリガーは、トリガーの作成時に Identity and Access Management(IAM)サービス アカウントに関連付けられます。トリガーは、サービス アカウントをデフォルトの ID として使用します。
デフォルトでは、ある Google Cloud プロジェクトで IAM サービス アカウントを作成して、別のプロジェクトのリソースに接続することはできません。ただし、組織のサービス アカウントを別のプロジェクトに一元化すると、サービス アカウントの管理が容易になります。このドキュメントでは、あるプロジェクトのサービス アカウントを別のプロジェクトの Eventarc トリガーに関連付けるために必要な手順の概要について説明します。
これらの操作を行う権限がない場合は、権限の付与を管理者に依頼してください。
プロジェクト間サービス アカウントの使用を有効にする
サービス アカウント プロジェクトで次の手順を完了します。
Google Cloud コンソールで、[組織のポリシー] ページに移動します。
プロジェクト間サービス アカウントの使用を無効にするポリシーを適用している場合は、そのようなポリシーを無効にする必要があります。
詳細については、プロジェクト間でサービス アカウントの接続を有効にするをご覧ください。
サービス アカウントを作成し、その名前をメモします。
サービス アカウント認証の権限を付与する
プリンシパルは、いくつかの方法でサービス アカウントを使用した認証を行うことができます。それぞれの認証タイプで、プリンシパルにサービス アカウントに対する特定の IAM 権限が必要です。詳細については、サービス アカウントの認証に必要なロールをご覧ください。
トリガーを含む Google Cloud プロジェクトの Eventarc サービス エージェントにサービス アカウント トークン作成者(
roles/iam.serviceAccountTokenCreator
)IAM ロールを付与します。これにより、サービス エージェントはプロジェクト間でのサービス アカウントのアクセスを管理できます。サービス エージェントは、特定のプロジェクトの Google Cloud サービスの ID です。詳細については、サービス エージェントをご覧ください。コンソール
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
Eventarc トリガーに接続するサービス アカウントを所有するプロジェクトを選択します。
以前に作成したサービス アカウントのメールアドレスをクリックします。
[権限] タブをクリックします。
[このサービス アカウントにアクセスできるプリンシパル] セクションで、[
アクセス権を付与] をクリックします。[新しいプリンシパル] フィールドに、Eventarc サービス エージェントのメールアドレスを入力します。
service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
EVENTARC_PROJECT_NUMBER
は、トリガーを含むプロジェクトの Google Cloud プロジェクト番号に置き換えます。[別のロールを追加] をクリックします。
[ロールを選択] リストで、[サービス アカウント トークン作成者] でフィルタして、ロールを選択します。
[保存] をクリックします。
gcloud
gcloud iam service-accounts add-iam-policy-binding
コマンドを実行します。gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \ --role='roles/iam.serviceAccountTokenCreator'
次のように置き換えます。
SERVICE_ACCOUNT_NAME
: サービス アカウントの名前SERVICE_ACCOUNT_PROJECT_ID
: サービス アカウントを所有するプロジェクトの Google Cloud プロジェクト IDEVENTARC_PROJECT_NUMBER
: トリガーを含むプロジェクトの Google Cloud プロジェクト番号
トリガーを作成するすべてのプリンシパルにサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)IAM ロールを付与します(たとえば、トリガーを含む Google Cloud プロジェクトの Eventarc サービス エージェントなど)。この事前定義ロールには、サービス アカウントをリソースに関連付けるために必要なiam.serviceAccounts.actAs
権限が含まれています。コンソール
プロジェクトにロールを付与して、プリンシパルが複数のサービス アカウントの権限を借用できるようにします。
Google Cloud コンソールの [IAM] ページに移動します。
サービス アカウントを所有するプロジェクトを選択します。
[
アクセス権を付与] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスを入力します。
[ロールを選択] リストで、[サービス アカウント ユーザー] でフィルタし、ロールを選択します。
[保存] をクリックします。
または、サービス アカウントにロールを付与して、プリンシパルが特定のサービス アカウントの権限のみを借用できるようにします。
Google Cloud コンソールで、[サービス アカウント] ページに移動します。
サービス アカウントを所有するプロジェクトを選択します。
以前に作成したサービス アカウントのメールアドレスをクリックします。
[権限] タブをクリックします。
[このサービス アカウントにアクセスできるプリンシパル] セクションで、[
アクセス権を付与] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスを入力します。
[別のロールを追加] をクリックします。
[ロールを選択] リストで、[サービス アカウント ユーザー] でフィルタし、ロールを選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを実行してプロジェクトにロールを付与し、プリンシパルが複数のサービス アカウントの権限を借用できるようにします。gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
または、
gcloud iam service-accounts add-iam-policy-binding
コマンドを実行してサービス アカウントにロールを付与し、プリンシパルが特定のサービス アカウントの権限を借用できるようにします。gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \ --member=PRINCIPAL \ --role='roles/iam.serviceAccountUser'
次のように置き換えます。
SERVICE_ACCOUNT_PROJECT_ID
: サービス アカウントを所有するプロジェクトの Google Cloud プロジェクト IDPRINCIPAL
: トリガー作成者の識別子(user|group|serviceAccount:email
またはdomain:domain
の形式)。例:user:test-user@gmail.com
group:admins@example.com
serviceAccount:test123@example.domain.com
domain:example.domain.com
m
SERVICE_ACCOUNT_RESOURCE_NAME
: サービス アカウントの完全なリソース名。例:projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com
ここで
SERVICE_ACCOUNT_PROJECT_ID
は、サービス アカウントを所有する Google Cloud プロジェクト ID です。SERVICE_ACCOUNT_NAME
は、サービス アカウントの名前です。
イベント ルーティングをサポートするための権限を付与する
Eventarc トリガーを作成する前に、Eventarc を使用したイベントのルーティングをサポートする他の IAM 権限を付与する必要があります。
Eventarc トリガーが処理を行う際にアクセスする必要のあるリソース、イベント プロバイダ、宛先に基づいて適切な権限を付与します。詳細については、すべてのロールと権限をご覧ください。
プロジェクト間サービス アカウントを使用してトリガーを作成します。