Report #73889
[bug\_fix] 403 PERMISSION\_DENIED: Permission iam.serviceAccounts.getAccessToken is needed on service account TARGET\_SA... or Error 403: Permission iam.serviceAccounts.signBlob is needed... when using service account impersonation
Grant the calling identity \(the user or service account that is initiating the impersonation\) the roles/iam.serviceAccountTokenCreator IAM role on the target service account resource \(the one being impersonated\). This role includes the iam.serviceAccounts.getAccessToken and iam.serviceAccounts.signBlob permissions required to impersonate. Do this via gcloud iam service-accounts add-iam-policy-binding TARGET\_SA --member=CALLER --role=roles/iam.serviceAccountTokenCreator.
Journey Context:
Developer is setting up a CI/CD pipeline using Cloud Build. The build needs to deploy to Cloud Run. The Cloud Build service account \(PROJECT\[email protected]\) needs to act as the Cloud Run runtime service account \(cloud-run-runtime@PROJECT\_ID.iam.gserviceaccount.com\) to test permissions. The build step uses gcloud --impersonate-service-account=cloud-run-runtime@... run deploy. The build fails immediately with ERROR: \(gcloud.run.deploy\) PERMISSION\_DENIED: Permission iam.serviceAccounts.getAccessToken is needed on service account projects/-/serviceAccounts/cloud-run-runtime@.... Developer checks if the Cloud Build service account has Editor role on the project - yes. They try adding Owner - still fails. They search the error and find Google documentation about impersonation. They realize that even Project Editor does not include the specific permission to impersonate service accounts \(to prevent privilege escalation\). They must explicitly grant the Cloud Build SA the Service Account Token Creator role specifically on the target SA. They run gcloud iam service-accounts add-iam-policy-binding cloud-run-runtime@PROJECT\_ID.iam.gserviceaccount.com --member=serviceAccount:PROJECT\[email protected] --role=roles/iam.serviceAccountTokenCreator. The next build succeeds. The fix works because impersonation requires explicit delegation rights on the target resource, not just general project permissions.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T06:37:22.524146+00:00— report_created — created