2

我正在尝试创建一个存储桶,该存储桶具有特定用户的存储桶/对象的读/写权限以及仅适用于 AllUsers 的对象的读取权限。

我有:

  • 创建了一个桶,
  • 将此添加到默认 acl 列表中:
<Entry>
    <Scope type="AllUsers"/>
    <Permission>
        READ
    </Permission>
</Entry>

通过:gsutil setdefacl <f> gs://bucket

  • 添加了一个对象(test.png)

现在我正在尝试使用 url 从浏览器访问它,http[s]://storage.cloud.google.com/bucket/test.png但它会将我带到 google 帐户登录页面。当我使用另一个没有明确权限设置的谷歌账户(不是我用来创建项目/存储桶/对象)登录时,它会显示图片。

gsutil getacl在新对象上显示 AllUsers 具有 READ 权限,但它的工作方式与 AllAuthenticatedUsers 类似。

关于如何处理按预期工作的权限的任何想法?

4

1 回答 1

1

当您说您将该条目添加到默认 ACL 时,您的意思是您将其添加为 AccessControlList.Entries 中的一个元素,对吗?如果没有看到完整的 ACL 文本,就很难知道发生了什么。

而且,由于您要使对象公开可读(为范围 AllUsers 授予 READ 权限),因此您不需要存储桶的默认对象 ACL 中的其他范围;你可以简单地做:

gsutil setdefacl public-read gs://bucket

然后将对象上传到存储桶。

我意识到您想为特定用户授予读/写权限,但写权限由存储桶 ACL 控制,而不是对象 ACL(因此也不受存储桶上的默认对象 ACL 控制)。

请尝试上述方法,并让我们知道您是否仍无法通过浏览器访问对象而无需先进行身份验证。

Mike Schwartz,谷歌云存储团队

于 2012-12-12T14:18:27.437 回答