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

如何为Cloud Run服务授予Google Drive的OAuth访问权限

我来一步步帮你搞定Cloud Run服务访问Google Drive的权限配置,核心就是把服务账号和Drive的权限绑定好,再让Cloud Run用这个账号运行,具体步骤如下:

1. 定位Cloud Run要用的服务账号

每个Cloud Run服务都有默认的服务账号,格式是PROJECT_NUMBER-compute@developer.gserviceaccount.com,你可以在Cloud Run控制台的服务详情页找到它;要是想自定义,直接去「IAM & Admin」→「服务账号」页面创建一个就行。

2. 配置OAuth同意屏幕(按需操作)

如果你的Cloud Run服务需要访问普通用户的个人Drive数据(不是团队内部共享的资源),得先在Google Cloud Console的「API和服务」→「OAuth同意屏幕」完成配置:

  • 选择应用类型:内部(仅限你的Google Workspace组织成员)或外部(面向所有用户,需要审核)
  • 填写应用名称、支持邮箱等基础信息
  • 在「范围」里添加Google Drive的权限,比如https://www.googleapis.com/auth/drive.readonly(只读)或https://www.googleapis.com/auth/drive(全权限),记住尽量选最小权限
  • 外部应用在审核通过前,只能添加测试用户,审核通过后才能面向所有用户开放
3. 给服务账号授予Drive访问权限

这里分两种常见场景,你按需选:

场景A:访问团队/组织内的共享Drive/特定文件

这种不需要用户授权,直接用服务账号身份就能访问:

  • 先去Google Cloud Console的「API和服务」→「库」,搜索并启用Google Drive API(必须先启用才能调用)
  • 打开Google Drive,找到要授权的文件/文件夹,右键→「共享」,把步骤1里的服务账号邮箱加进去,设置对应的权限(查看、编辑等)

场景B:访问任意用户的Drive数据(需用户授权)

这种要走OAuth 2.0授权流程,让用户主动授权你的服务访问他们的Drive:

  • 回到服务账号页面,找到目标账号,点击「密钥」→「添加密钥」→「创建新密钥」,选JSON格式,下载密钥文件(代码里会用到)
  • 去「API和服务」→「凭据」,创建「OAuth客户端ID」,类型选「Web应用」,添加授权重定向URI(比如你的Cloud Run服务的回调地址)
  • 代码里通过授权码流程获取用户的访问令牌,再用令牌调用Drive API
4. 让Cloud Run使用配置好的服务账号

部署Cloud Run时指定服务账号:

  • 控制台部署:在部署页面的「安全」→「服务账号」下拉框,选你配置好的那个账号
  • 命令行部署:用gcloud run deploy YOUR_SERVICE_NAME --image YOUR_IMAGE_URL --service-account YOUR_SERVICE_ACCOUNT_EMAIL
5. 代码里的认证实现

根据场景不同,代码里的认证方式也不一样:

  • 场景A(共享资源):Cloud Run会自动挂载服务账号的凭据,用Google客户端库直接调用即可:
    from googleapiclient.discovery import build
    from google.oauth2 import service_account
    
    # 如果是本地测试可以指定密钥文件路径,Cloud Run环境下会自动获取凭据
    credentials = service_account.Credentials.from_service_account_file(
        'service-account-key.json',
        scopes=['https://www.googleapis.com/auth/drive.readonly']
    )
    drive_service = build('drive', 'v3', credentials=credentials)
    
  • 场景B(用户授权):需要在代码里实现OAuth授权码流程,引导用户登录授权,获取访问令牌后再调用Drive API

额外注意事项

  • 始终遵循最小权限原则,能选只读就不要选编辑权限,降低安全风险
  • 外部OAuth应用提交审核时,要清晰说明你使用Drive权限的具体用途,不然容易被驳回
  • 自定义服务账号要确保拥有「Cloud Run服务代理」角色,不然可能无法正常运行服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:29:04