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

使用GitHub Actions部署Firebase Functions 2nd Gen时遇403权限错误

问题分析与修复方案
  • 核对部署用服务账号身份
    先确认你给权限的服务账号,和GitHub Actions里GCP_DEV_KEY对应的是同一个。可以解码密钥JSON里的client_email字段,拿到准确的账号邮箱,再去GCP IAM控制台核对这个账号的角色是否正确生效(IAM权限可能需要1-2分钟同步)。

  • 手动配置Cloud Run服务账号的Secret访问权限
    Functions 2代底层依赖Cloud Run,使用的是格式为[项目编号]-compute@developer.gserviceaccount.com的默认计算服务账号。部署时Firebase会尝试自动给这个账号添加Secret的访问权限,但你的部署账号缺少设置IAM策略的权限。可以跳过自动配置,手动绑定权限:

    1. 打开GCP控制台的「Secret Manager」,找到你用到的每个Secret
    2. 进入该Secret的「权限」页面,添加成员[项目编号]-compute@developer.gserviceaccount.com,授予Secret Manager Secret Accessor角色
  • 更换稳定版的GitHub Action
    w9jds/firebase-action@master是开发分支,可能存在兼容性问题。切换到指定稳定版本,比如w9jds/firebase-action@v10.4.0,避免版本bug导致的权限处理异常。

  • 排查组织级IAM限制
    如果你的GCP项目属于某个组织,检查组织级IAM是否有拒绝策略,限制了secretmanager.secrets.setIamPolicy权限。这种情况下,即使给服务账号加了项目级角色,也会被组织策略覆盖。

  • 本地验证权限
    本地测试部署:把GCP_DEV_KEY保存为JSON文件,设置环境变量export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json",然后运行firebase deploy --only functions。如果本地也报同样的403错误,说明是服务账号权限问题;如果本地正常,排查GitHub Actions的环境变量配置是否有误(比如密钥是否完整、有没有被转义)。

内容的提问来源于stack exchange,提问作者Guillaume Prévost

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:14:58