【问题标题】:Restrict S3 sub-folder level bucket policy about private and public限制有关私有和公共的 S3 子文件夹级别存储桶策略
【发布时间】:2020-09-19 07:28:05
【问题描述】:
我们有很多信息可以让我们的存储桶按存储桶级别公开和私有。但我很好奇我们可以对文件夹级别甚至子文件夹制定存储桶策略。以下是我当前 S3 存储桶中的文件夹结构。
companies/aa-company/public-folder
companies/aa-company/private-folder
companies/bb-company/public-folder
companies/bb-company/private-folder
我想知道的是我想在存储桶策略中对 public-folder 进行公共读取访问。有可能吗?
【问题讨论】:
标签:
amazon-web-services
amazon-s3
【解决方案1】:
是的,这绝对有可能。您可以使用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*"
]
}
]
}
【解决方案2】:
是的,您可以通过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/*"
}
]
}
您还需要禁用存储桶上的阻止公共访问设置。