Skip to content

Commit 647586f

Browse files
committed
fix: adds permission for creating identity tokens
When using workload identity federation we must explicitly create an ID token.
1 parent db124d2 commit 647586f

File tree

1 file changed

+9
-1
lines changed
  • modules/meshcloud-replicator-service-account

1 file changed

+9
-1
lines changed

modules/meshcloud-replicator-service-account/module.tf

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ resource "google_folder_iam_member" "replicator_service" {
7272
member = "serviceAccount:${google_service_account.replicator_service.email}"
7373
}
7474

75-
7675
/*
7776
Billing Accounts are associated with an organization and can thus inherit organization level role assignments
7877
see https://cloud.google.com/billing/docs/how-to/billing-access).
@@ -106,3 +105,12 @@ resource "google_service_account_iam_member" "replicator" {
106105
role = "roles/iam.workloadIdentityUser"
107106
member = "principal://iam.googleapis.com/${var.workload_identity_federation.pool_id}/subject/${var.workload_identity_federation.subject}"
108107
}
108+
109+
# Cloud functions must be called with ID tokens but after impersonation we only have an access token and must explicitly create an ID token.
110+
resource "google_service_account_iam_member" "replicator_id_token" {
111+
for_each = var.workload_identity_federation == null ? {} : { 0 = "roles/iam.serviceAccountOpenIdTokenCreator", 1 = "roles/iam.serviceAccountTokenCreator" }
112+
113+
service_account_id = google_service_account.replicator_service.id
114+
role = each.value
115+
member = "serviceAccount:${google_service_account.replicator_service.email}"
116+
}

0 commit comments

Comments
 (0)