IAM策略,用于列出用户的S3存储桶中的特定文件夹

时间:2013-11-18 05:51:24

标签: amazon-web-services amazon-s3 amazon-iam

我在数据桶 demo.for.customers

下面有以下键
demo.for.customers/customer1/
demo.for.customers/customer2/

现在我有2个客户,即 customer1 customer2 。这就是我想要的:

  1. 授予他们仅访问 demo.for.customers 存储桶的权限。
  2. customer1应该只能访问demo.for.customers/customer1/,而customer2应该只能访问demo.for.customers/customer2/
  3. 我能够通过以下政策实现这一目标(我正在为每个客户创建政策。因此,我只为下面的客户1粘贴了一个。)我已经在IAM中定义了此策略,而不是在S3中。

    {
     "Version":"2012-10-17",
     "Statement": [
       {
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::*"]
       },
       {
          "Action": ["s3:ListBucket"],
          "Effect": "Allow",
          "Resource": ["arn:aws:s3:::demo.for.customers"],
          "Condition":{"StringEquals":{"s3:prefix":["","customer1/"],"s3:delimiter":["/"]}}
       },
        {
          "Effect": "Allow",
          "Action": ["s3:*"],
          "Resource": ["arn:aws:s3:::demo.for.customers/customer1/*"]
        }
    ]
    }
    

    问题:

    1. 尽管客户无法访问其中任何一个,但我能看到我的所有存储桶。我不想要这个。他应该只能看到 demo.for.customers
    2. 尽管客户无法访问{1}},但他也可以看到demo.for.customers/customer2。这是非常不可接受的,因为我不想让他甚至看到我在这个桶下的其他客户文件夹。
    3. 问题:

      1. 经过大量的谷歌搜索,我发现没有办法列出特定的桶。这是真的吗?
      2. 但是,我必须找到一种方法,在给定用户的存储桶中仅列出特定文件夹。怎么做?
      3. 感谢。

1 个答案:

答案 0 :(得分:1)

关于你的问题:

  1. 不幸的是,没有办法只列出某些存储桶。如果意图只是允许访问一个已知存储桶,我将完全删除第一个语句,因为它不添加任何值(存储桶已知且不需要列出)。
  2. 您能否显示用于列出存储桶内容的代码?根据您在此处显示的内容,我希望customer1只能在其前缀的根目录中列出存储桶内容,而不是其他地方。
  3. 关于你的问题:

    1. 是的,没有办法列出某些存储桶。列表存储区API是全部或全部操作。
    2. 这是通过前缀完成的。你用的是什么语言?我们为AWS Mobile SDK提供了一个示例,该示例使用令牌自动售货机提供per user access to an S3 bucket