代码之家  ›  专栏  ›  技术社区  ›  PPShein

限制S3子文件夹级别的bucket策略关于private和public

  •  0
  • PPShein  · 技术社区  · 6 年前

    我们有很多信息可以让我们的bucket按bucket级别公开和私有。但我很好奇,我们可以制定bucket策略到文件夹级别,甚至到子文件夹。下面是我当前S3存储桶中的文件夹结构。

    companies/aa-company/public-folder
    companies/aa-company/private-folder
    companies/bb-company/public-folder
    companies/bb-company/private-folder
    

    我想知道的是我想 公共读取访问 公用文件夹 桶内政策。有可能吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Marcin    6 年前

    是的,你可以,通过 wildcards :

    可以将通配符用作资源ARN的一部分。可以使用通配符(*和?)在任何ARN段内(由冒号分隔的部分)。一个 星号(*)表示零个或多个字符的任意组合 ,还有一个问号(?)表示任何单个字符。你可以用多个*还是?每个段中的字符,但通配符不能跨越段

    示例策略 可以如下所示(基于 this ):

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PublicRead",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::test-bucket-342-d/*/public-folder/*"
            }
        ]
    }
    

    你还需要禁用block 公共访问设置 在水桶上。

        2
  •  1
  •   jellycsc    6 年前

    是的,这是绝对可能的。你可以用 wildcards 为了达到这个目的。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": [
                    "arn:aws:s3:::<bucket-name>/companies/aa-company/public-folder*",
                    "arn:aws:s3:::<bucket-name>/companies/bb-company/public-folder*"
                ]
            }
        ]
    }