问题描述
在一个谷歌项目上生成的谷歌签名 URL 能否将存储桶对象上传到另一个谷歌项目?
我已经使用 google-document(代码示例 C#)将数据上传到谷歌存储桶,但不想将数据上传到另一个/不同的项目存储桶。 例如如果用于生成 Singed URL 的服务帐户和 google 项目名称是“gcp-project-signed-data”,则生成的签名 url 只能将数据上传到“gcp-project-signed-data”,而不能上传任何其他项目,即使目标项目是不同的,即它必须给出一些与访问相关的错误消息,
我们如何才能做到这一点?
解决方法
两件事:
- 存储分区名称位于全局命名空间中,如果您的签名 URL 用于
my-bucket
,则任何其他项目中都没有其他具有该名称的存储分区:
https://cloud.google.com/storage/docs/naming-buckets#considerations
- 签名 URL 反映了原始(签名)服务帐户的权限。如果服务帐户无权写入
other-bucket
,则使用该帐户创建的任何签名网址也无法写入other-bucket
。