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

如何在Colab中使用不同邮箱连接Google Cloud Storage

Colab登录邮箱与GCP账号邮箱不一致时连接Cloud Storage的方案

默认使用以下代码做GCS认证时,会自动复用Colab界面当前登录账号的身份上下文,要求该账号必须和持有目标GCS资源的GCP账号一致,否则会直接抛出权限拒绝报错:

from google.colab import auth
auth.authenticate_user()

要跨不同邮箱账号完成连接,直接用下面两种经过验证的方案即可:

  • 方案1:服务账号密钥认证(最稳定,无账号绑定限制)
    这个方案完全不依赖Colab当前登录的任何账号,是跨账号访问GCS的通用方案:

    1. 登录持有目标GCS资源的GCP控制台,创建一个服务账号,给该账号分配对应操作级别的GCS权限:只读需求就配Storage Object Viewer,读写需求就配Storage Object Admin,遵循最小权限原则不要开多余权限。
    2. 给建好的服务账号生成JSON格式的身份密钥文件,把这个密钥文件直接上传到Colab会话的本地文件目录(点左侧边栏文件图标就能看到上传入口)。
    3. 注释掉原来的auth.authenticate_user()代码,改用密钥文件初始化GCS客户端,示例代码如下:
    from google.cloud import storage
    import os
    # 引号里替换成你上传的密钥文件在Colab里的实际路径
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/content/你的服务账号密钥文件名.json"
    # 初始化客户端,此时凭证完全来自密钥文件,和Colab登录账号无关
    client = storage.Client()
    # 测试连接:打印当前凭证有权限访问的存储桶列表,正常返回就说明连接成功
    print(list(client.list_buckets()))
    

    注意:服务账号密钥拥有对应资源的全部操作权限,不要把密钥文件随笔记、代码仓库公开泄露,临时会话用完直接删除即可。

  • 方案2:强制触发手动账号选择,登录目标GCP账号
    不想用服务账号的话,可以清掉Colab默认的认证缓存,强制弹出账号选择窗口,手动选择有GCS权限的目标邮箱完成授权即可,代码如下:

    from google.colab import auth
    # 清除现有默认认证缓存,强制触发账号选择授权流程
    auth.authenticate_user(clear_output=True)
    

    弹出授权页面后,不要选择Colab当前默认登录的邮箱,手动选择/登录持有GCP资源的目标邮箱,走完授权流程即可。
    注意:授权完成后不要再跑无参数的auth.authenticate_user(),否则会覆盖当前手动授权的凭证,切回Colab默认账号再次触发权限报错。

踩坑提示:如果用gcloud CLI命令操作GCS,跨账号授权后记得执行gcloud config set account 你的目标GCP邮箱切换CLI的激活账号,避免CLI还是用旧凭证调用接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 23:48:52