AWS S3创建限制列表对象的策略

时间:2018-06-15 21:02:23

标签: amazon-web-services amazon-s3

我需要创建一个对下面的type1目录具有完全访问权限的策略,但是在其他地方没有访问权限,也无法访问其他地方列出的文件。

以下政策几乎成功实现了这一目标。

当用户登录时,他们成功获得拒绝访问错误,因此根目录中没有列出任何文件(访问被拒绝错误)。用户必须直接访问type1目录,使用直接网址 - 这就是我们想要的。

问题是,当通过url访问type1目录时,面包屑显示在页面顶部,用户仍然可以单击devs目录并查看所有文件。

我想调整以下政策,以便分配此政策的任何用户都无法在 type1目录之外的任何地方看到任何对象。

这可能吗?我很感激任何建议。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "s3:*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::devs",
                "arn:aws:s3:::devs/front-end/type1/*"
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

基于Writing IAM Policies: Grant Access to User-Specific Folders in an Amazon S3 Bucket | AWS Security Blog,这将有效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::devs"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "devs/front-end/type1/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllS3ActionsInFolder",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::devs/front-end/type1/*"
            ]
        }
    ]
}

用户需要在Amazon S3管理控制台中使用预先提供的URL直接跳转到存储桶和文件夹,因为他们无权列出任何其他路径,例如:

https://console.aws.amazon.com/s3/buckets/devs/front-end/type1/?region=ap-southeast-2&tab=overview