💨
Workload Identity Federationで別プロジェクトのサービスアカウントを使おうとしたらハマった
結論
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"
参考
ここでハマった
ガイドには
サービス アカウントは、Workload Identity プールと同じプロジェクトにある必要はありません。
とあるので出来そう。と思い、GUIのページ(https://console.cloud.google.com/iam-admin/workload-identity-pools/pool/[your-pool-id]
)で「GRANT ACCESS」を押してみると
このプロジェクトには既存のサービス アカウントがありません。新しいサービス アカウントを作成してアクセス権限を付与してください。[1]
と言われる。(なお、gcloudで登録した後もGUI上では「接続済みサービスアカウント」の欄は結果なしなので、GUIでは同じプロジェクトのサービスアカウントしか扱えないのだと思われる。)
-
スクショ
↩︎
Discussion