我们有一个存储桶包含多个客户端的数据,由“文件夹”分隔(当然它不是真正的文件夹,而是键..)我们希望通过 rsync 将每个文件夹中的数据同步到客户端存储桶,因为客户端提供给我们一个可以访问他的存储桶的“服务帐户”,问题是,我们如何限制该服务帐户只能从特定文件夹读取?
例如
my_bucket/client1/数据
my_bucket/client2/数据
client1-service-account 应该能够列出+读取:my_bucket/client1/*
我们有一个存储桶包含多个客户端的数据,由“文件夹”分隔(当然它不是真正的文件夹,而是键..)我们希望通过 rsync 将每个文件夹中的数据同步到客户端存储桶,因为客户端提供给我们一个可以访问他的存储桶的“服务帐户”,问题是,我们如何限制该服务帐户只能从特定文件夹读取?
例如
my_bucket/client1/数据
my_bucket/client2/数据
client1-service-account 应该能够列出+读取:my_bucket/client1/*
您可以使用Google Storage ACL允许电子邮件(用户电子邮件或服务帐户电子邮件)访问存储桶中的文件子集。
但是,Google Cloud Storage 中不存在目录。真正的名字是“前缀”或“路径”。实际上,如果您不再拥有带有某个“前缀”的文件,它就会消失,而无需明确删除。我的意思是,它不是资源,因此您不能在目录上设置 ACL,只能在 BLOB 上设置。
因此,如果您在目录中添加文件,您还必须在这些文件上设置正确的 ACL(或在整个前缀上重置 ACL)。新文件不会继承 ACL。
找到了一些解决方法:
我们将使用我们自己的服务帐户,而不是使用客户的服务帐户,并授予客户对其存储桶的写入权限,因此客户将无法访问我们的存储桶。它没有涵盖所有的要求,但它的东西..