Amazon S3:仅允许用户访问任何存储桶上的子文件夹

Amazon S3:仅允许用户访问任何存储桶上的子文件夹

我正在尝试编写一个策略,允许用户从任何存储桶读取(该部分有效),但只能写入任何存储桶上的特定子文件夹。

这是我目前的政策(读取有效,但仍允许写入存储桶根):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "*"
            ]
        }
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::*/test"
                "arn:aws:s3:::*/test/*"
            ]
        }
    ]
}

使用此策略,用户仍然能够写入存储桶的根目录,但用户只能写入任何存储桶上的“测试”子文件夹。

我还尝试在最后一条语句中添加条件:

{
    "Effect": "Allow",
    "Action": [
        "s3:PutObject"
    ],
    "Resource": [
        "arn:aws:s3:::*/pdf-test",
        "arn:aws:s3:::*/pdf-test/*"
    ],
    "Condition": {
        "StringLike": {
            "s3:prefix": ["pdf-test/*"] 
        }
    }
}

但现在用户无法写入任何内容。

如何防止用户写入任何存储桶上除“测试”之外的任何文件夹?

相关内容