AWS S3策略允许访问以特定名称结尾的存储桶

时间:2020-05-29 14:57:28

标签: amazon-s3 amazon-iam

是否可以编写这样的AWS S3策略

  1. 可以读取存储桶中名称以“ archive”结尾的所有对象(存储桶名称以归档文件结尾,对象名称不受限制)
  2. 可以读写以“输出”结尾的存储桶中的所有对象

可以做到吗?

我找不到允许我这样做的“条件” ...

谢谢

PS: 1)我只是编辑了这个问题,因为它是存储区还是对象名称以“ ...”结尾的模棱两可 2)从那以后,我无法过滤可以列出的存储桶的名称 3)bruno-reis的评论清楚表明,无论如何这都是一个坏主意

1 个答案:

答案 0 :(得分:1)

否,这是不可能的。

您正在请求适用于多个存储桶的策略。因此,这需要成为 IAM策略,因为存储桶策略仅适用于特定存储桶。

尽管IAM策略允许使用通配符,但它们的功能非常有限。例如,该策略将出现起作用,并且确实授予对以-output结尾的存储桶的访问权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::*-output/*"
        }
    ]
}

因此,此命令将成功:

aws s3 cp foo-output/bar.txt .

但是,它也允许以下命令:

aws s3 cp foo/results-output/bar.txt .

这是因为策略中的通配符不能区分ARN中引用存储桶名称路径/对象名称的部分。

因此,他们很可能可以访问未以-output结尾的存储桶。因此,这是不安全的政策。