GitHub Actions部署PHP到GCP Compute Engine遇403权限错误求助
解决google-github-actions/ssh-compute 403权限错误(iam.serviceAccounts.getAccessToken denied)
问题核心
你通过Workload Identity Federation完成认证后,google-github-actions/ssh-compute调用GCP Compute Engine时触发403,本质是指定的服务账号缺少iam.serviceAccounts.getAccessToken权限——这个权限是该Action调用Compute Engine API时,获取服务账号AccessToken的必要条件。
解决方案
1. 给服务账号添加Service Account Token Creator角色
iam.serviceAccounts.getAccessToken权限包含在roles/iam.serviceAccountTokenCreator角色中,直接给目标服务账号授予该角色即可:
控制台操作
- 打开GCP控制台的IAM页面
- 找到你在Action中使用的服务账号(对应
${{ secrets.GCP_SERVICE_ACCOUNT }}的邮箱) - 点击账号右侧的编辑按钮,添加角色:
IAM > Service Account Token Creator - 保存变更
gcloud命令行操作
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:YOUR_SERVICE_ACCOUNT_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
替换YOUR_PROJECT_ID和YOUR_SERVICE_ACCOUNT_EMAIL为实际项目ID和服务账号邮箱。
2. 验证Workload Identity绑定关系
确认Workload Identity Provider绑定的服务账号就是上述授权的账号:
- 检查GCP IAM页面中,身份提供者是否已正确关联目标服务账号
- 若绑定配置了IAM条件,确保条件未限制权限生效范围
3. 重新触发Action
完成权限配置后,重新触发GitHub Action工作流,验证403错误是否消失。
补充说明
google-github-actions/ssh-compute内部会调用Compute Engine API完成SSH连接,该过程需要服务账号能获取自身的AccessToken,因此必须具备iam.serviceAccounts.getAccessToken权限。即使google-github-actions/auth完成了基础认证,后续动作仍需对应API的权限支持。
内容的提问来源于stack exchange,提问作者Durgesh
相关产品推荐
相关产品推荐

