多GCP账号切换访问Google Storage Bucket时出现403权限错误问题
问题核心原因
你当前Google Cloud SDK默认激活的身份仍是第一个GCP账号,该账号未被授予第二个账号下agencyq-bucket的storage.buckets.get访问权限,因此调用接口时返回403错误。
修复步骤
- 第一步:先确认当前生效的账号,执行命令:
gcloud auth list
输出结果中前缀带*的账号就是当前激活使用的身份,确认是否为有bucket访问权限的第二个GCP账号。 - 第二步:切换至有权限的第二个账号
如果第二个账号已经完成过SDK授权,直接执行切换命令:gcloud config set account 你的第二个GCP账号邮箱地址
如果第二个账号还未在SDK中完成授权,先执行登录授权命令,按页面提示完成授权操作:gcloud auth login 你的第二个GCP账号邮箱地址
如果使用的是服务账号而非个人用户账号,执行服务账号激活命令:gcloud auth activate-service-account 服务账号邮箱地址 --key-file=./你的服务账号密钥文件路径.json - 第三步:验证身份切换结果
重新执行gcloud auth list,确认*已切换到第二个账号上。 - 第四步:验证bucket访问权限
可先通过gsutil命令测试访问是否正常:gsutil ls gs://agencyq-bucket
如果命令能正常返回bucket内的文件列表,说明身份配置生效,再重新执行你的代码即可正常调用client.get_bucket接口。
异常补充
如果完成上述身份切换操作后仍然返回403错误,说明第二个账号本身未被配置该bucket的访问权限,需要登录第二个GCP账号的Cloud Storage控制台,找到agencyq-bucket的权限配置页,给你的第二个账号分配包含storage.buckets.get权限的角色,常用角色如Storage Admin、Storage Legacy Bucket Reader、Storage Object Viewer均可满足需求。
内容的提问来源于stack exchange,提问作者user395882
相关产品推荐
相关产品推荐

