You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:17