我有一个带有多个文件夹/子文件夹的S3存储桶,并且我正在使用CloudBerry Drive向Windows资源管理器中的用户展示存储。出于保密原因,我需要创建一个IAM策略,默认情况下将限制s3:ListBucket
操作中显示的结果-使用特定于项目的策略,该策略将在该策略附加到IAM帐户后显示指定的文件夹。
我尝试使用前缀选项(请参见代码块)但未成功,但是我发现的文档表明这应该可行。也许我误解了前缀选项?
以下是S3结构的示例:
arn:aws-cn:s3:::mybucket
projects/
projects/confidential/
projects/my project/
projects/public/
我需要一个默认策略,该策略仅在我在资源管理器中列出project /文件夹的内容时才返回project / public。然后,我需要能够向选定的IAM帐户添加策略,当我列出项目/文件夹的内容时,该策略也将列出项目/我的项目。
{
"Action": ["s3:GetBucketLocation","s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws-cn:s3:::mybucket"],
"Condition": {
"StringLike": {
"s3:prefix": ["","projects/public/*"
],
"s3:delimiter": ["/"]
}
}
}
到目前为止,使用前缀的各种组合,我可以什么都没有列出,也可以什么都列出-我似乎无法限制返回的内容。这有可能吗?
如果没有-是否有其他方法可以实现同一目标?
谢谢
答案 0 :(得分:0)
不可能“限制返回的内容”,但是可以限制“要求的内容”。
也就是,您可以Allow
前缀为projects/public
的请求。不带有 前缀的请求将默认被拒绝。
困难之处在于用户将无法从存储桶的根“导航”到允许的前缀。他们需要转到目录前缀才能列出对象。