💨

Workload Identity Federationで別プロジェクトのサービスアカウントを使おうとしたらハマった

2023/11/29に公開

結論

GUIコンソールからではなく、gcloud CLIとかTerraformとかを使いましょう。

# gcloudなら
# subjectで
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

# attributeで
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE/VALUE"

参考
https://cloud.google.com/iam/docs/workload-identity-federation-with-other-providers?hl=ja#gcloud_1

ここでハマった

ガイドには

サービス アカウントは、Workload Identity プールと同じプロジェクトにある必要はありません。

とあるので出来そう。と思い、GUIのページ(https://console.cloud.google.com/iam-admin/workload-identity-pools/pool/[your-pool-id])で「GRANT ACCESS」を押してみると

このプロジェクトには既存のサービス アカウントがありません。新しいサービス アカウントを作成してアクセス権限を付与してください。[1]

と言われる。(なお、gcloudで登録した後もGUI上では「接続済みサービスアカウント」の欄は結果なしなので、GUIでは同じプロジェクトのサービスアカウントしか扱えないのだと思われる。)

脚注
  1. スクショ
    ↩︎

株式会社hitocolor

Discussion