Spring Boot应用部署Cloud Run后访问Cloud Firestore权限不足如何解决?
解决方案
你遇到的权限报错是因为Cloud Run运行时使用的默认服务账号没有Firestore的访问权限,本地运行时你使用的是个人账号或本地存放的服务账号密钥,所以可以正常访问,按以下步骤配置即可:
步骤1:获取Cloud Run使用的服务账号
- 打开Cloud Run控制台,进入对应服务的详情页面,切换到「修订」标签页
- 找到当前正在运行的修订,查看「安全」板块下标注的服务账号,默认值为
[你的项目ID]-compute@developer.gserviceaccount.com
步骤2:为服务账号配置Firestore访问权限
- 进入Cloud IAM控制台,在权限列表中找到上一步查到的服务账号,点击编辑按钮
- 按需添加对应权限角色:
- 仅需读取Firestore数据:添加
Cloud Datastore User角色(Firestore与Datastore权限角色通用) - 需要读写Firestore数据:添加
Cloud Datastore Owner角色 - 生产环境建议遵循最小权限原则,自定义只包含所需操作的专属角色
- 仅需读取Firestore数据:添加
步骤3:重新部署Cloud Run服务
- 权限配置完成后,重新触发Cloud Build构建部署,或者在Cloud Run控制台重新部署当前镜像,新的修订会自动加载最新权限配置,重启后即可正常访问Firestore
额外说明
无需在代码或镜像中嵌入服务账号密钥,Google Cloud官方SDK会自动识别Cloud Run运行环境的服务账号凭证,该方式安全性更高。
内容的提问来源于stack exchange,提问作者paulcobzaru
相关产品推荐
相关产品推荐

