0

我在 S3 中有一个存储桶,其中包含许多用户的文件,如下所示:

mybucket
  /user1/file1.jpg
  /user1/file2.jpg
  /user2/doc1.jpg
  /user2/doc2.jpg

我正在使用 S3 REST API 向用户授予 POST 到他们在 S3 存储桶中的子文件夹的权限。发布的路径(例如,“user1/”)包含在签名中,因此用户无法发布到其他用户的子文件夹。

我想使用 S3 REST API 来授予用户权限以获取其子文件夹中的文件内容。但是,根据此处的文档:

http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html

URL 可以过滤存储桶的内容,如下所示:

GET /?prefix=user1 HTTP/1.1

但是要签名的字符串没有前缀:

GET\n
\n
\n
Tue, 27 Mar 2007 19:42:41 +0000\n
/bucket/

这意味着 user1 可以修改 URL 并查看其他 user2 的子目录内容(!?!?)。

有没有办法限制列出的文件内容,还是我必须为每个用户创建一个单独的存储桶?

谢谢

4

1 回答 1

0

您可以使用不同 IAM 用户的凭证对 GET URL 进行签名,每个用户都拥有您希望他们看到的路径的权限。

于 2013-03-08T02:38:12.113 回答