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

Github Actions无法获取模拟凭据:Firestore备份权限问题排查

排查GitHub Action无密钥认证备份Firestore时的403权限错误

错误核心

你遇到的iam.serviceAccounts.getAccessToken权限拒绝,本质是GitHub Actions通过工作负载身份池 impersonate目标服务账号时,没有获取该服务账号访问令牌的权限。以下是具体排查步骤:


1. 确认工作负载身份池的绑定权限

检查工作负载身份池中的GitHub身份提供者对应的IAM绑定:

  • 需要给GitHub的身份主体(格式为principalSet://iam.googleapis.com/projects/[PROJECT_NUMBER]/locations/global/workloadIdentityPools/[POOL_ID]/attribute.repository/[OWNER/REPO])授予roles/iam.workloadIdentityUser权限,作用对象是你的目标服务账号。
  • 注意:是把这个权限赋予GitHub的身份主体,不是给服务账号本身添加角色。

2. 验证服务账号的令牌创建权限

  • 给上述GitHub身份主体额外授予roles/iam.serviceAccountTokenCreator权限,作用对象同样是目标服务账号——这个角色才是允许外部身份获取服务账号访问令牌的关键,仅给服务账号本身添加该角色无效。
  • 你已配置的Cloud Datastore Import Export Admin和Storage Admin是备份所需的业务权限,需确保这些角色的作用范围覆盖目标Firestore数据库和存储桶(项目级或资源级均可)。

3. 检查GitHub Action配置细节

  • 确认workload_identity_provider的值是完整的资源路径,正确格式为:projects/[PROJECT_NUMBER]/locations/global/workloadIdentityPools/[POOL_ID]/providers/[PROVIDER_ID],不能仅填写名称。
  • 移除gcloud config set project $PROJECT_ID步骤,可在google-github-actions/auth中通过project_id参数直接指定项目,避免手动配置冲突。
  • 添加gcloud auth list步骤验证认证身份,确认是否成功 impersonate目标服务账号。

优化后的配置示例:

name: Backup Firestore

on: workflow_dispatch

env:
  PROJECT_ID: my_project
  BUCKET: gs://my_bucket

jobs:
  backup:
    permissions:
      contents: read
      id-token: write
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - id: auth
        name: Authenticate to Google Cloud
        uses: google-github-actions/auth@v1
        with:
          workload_identity_provider: projects/[PROJECT_NUMBER]/locations/global/workloadIdentityPools/[POOL_ID]/providers/[PROVIDER_ID]
          service_account: myserviceaccount@myproject.gserviceaccount.com
          project_id: ${{ env.PROJECT_ID }}
      - run: gcloud auth list
      - run: gcloud firestore export ${{ env.BUCKET }}

4. 排查权限边界与组织政策限制

  • 检查目标服务账号是否设置了权限边界(Permission Boundary),若有需确保边界包含iam.serviceAccounts.getAccessToken权限,或调整边界范围。
  • 确认组织级IAM政策未禁止外部身份(如GitHub)impersonate服务账号,部分组织会限制此类操作。

内容的提问来源于stack exchange,提问作者Coolkid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:26:01