如何为Google Cloud默认凭据授予Google Drive/Sheets访问权限?
解决GAE云端默认凭据的Drive/Sheets访问权限问题
问题根源
本地环境通过gcloud auth application-default login指定scopes,使用的是个人用户凭据,已手动授权Drive访问;但云端GAE运行时依赖项目的默认服务账号(格式:[项目ID]@appspot.gserviceaccount.com),该账号默认未获得Drive API访问权限,导致BigQuery无法获取Drive凭据触发403错误。
解决步骤
1. 启用Drive与Sheets API
进入Google Cloud控制台的API和服务 > 库,搜索并启用以下API:
- Google Drive API
- Google Sheets API
2. 为默认服务账号分配Drive权限
方式一:IAM全局角色授权(适用于需访问多个Drive文件)
在IAM与管理员 > IAM页面找到默认服务账号,点击「编辑」,添加对应角色:
Drive 文件查看者:仅需读取Sheets数据时使用Drive 文件编辑者:需要修改Sheets时使用Drive 管理员:最高权限(生产环境谨慎使用)
方式二:单个Sheets文件共享(更安全,遵循最小权限原则)
打开目标Google Sheets文件,点击右上角「共享」,输入服务账号邮箱,授予「查看者」或更高权限。
3. 配置BigQuery与Drive的关联权限
若通过BigQuery直接引用Sheets作为外部数据源:
- 创建外部数据源时,勾选「允许BigQuery访问Google Drive文件」
- 确保服务账号已拥有BigQuery相关权限(如
BigQuery 数据查看者、BigQuery 作业用户)
4. 验证权限
重新部署GAE应用后,可通过以下方式确认:
- 在IAM与管理员 > 权限检查,输入服务账号邮箱及
drive.files.read权限,验证授权状态 - 查看GAE日志,排查是否存在特定文件权限未开放的细节错误
内容的提问来源于stack exchange,提问作者Justin
相关产品推荐
相关产品推荐

