AWS S3存储桶策略

时间:2013-10-22 15:04:26

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

我想要做的是列出存储桶的所有内容,但特定文件夹(存档)的内容除外。问题是当我“使用”存储桶时,我也从“存档”文件夹中获取文件。这是我目前的设置:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:ListBucket"
      ],
      "Sid": "Stmt1382452205000",
      "Resource": [
        "arn:aws:s3:::mybucket"
      ],
      "Condition":{
          "StringNotLike":{"s3:prefix":["archive/"]}
       },
      "Effect": "Allow"
    },
    {
      "Sid": "ExplictDenyAccessToArchive",
      "Action": ["s3:*"],
      "Effect": "Deny",
      "Resource":["arn:aws:s3:::mybucket/archive/*"]
    },
    {
      "Sid": "DenyListBucketOnArchive",
      "Action": ["s3:ListBucket"],
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::*"],
      "Condition":{
          "StringLike":{"s3:prefix":["archive/"]}
       }
    }
  ]
}

1 个答案:

答案 0 :(得分:2)

IAM策略中的ListBucket操作适用于存储桶级别。您无法在存储桶的子集上授予它。

听起来您的目标是从文件列表中排除文件,而不是限制对用户的访问。不幸的是,S3 api不允许您指定要排除的前缀。但是,您可以使用API​​的分隔符选项获取所有顶级路径的顶级列表,然后使用前缀和标记参数进行后续调用,以仅列出您感兴趣的路径。

更多详情: http://docs.aws.amazon.com/AmazonS3/latest/API/SOAPListBucket.html