0

我正在尝试将 IAM 角色限制为只能访问 S3 存储桶中的特定子文件夹(键前缀)。这是我正在使用的策略 JSON,但目前用户仍然可以访问存储桶中的其他文件夹:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::somebucket",
                "arn:aws:s3:::somebucket/*"
            ]
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucketByTags",
                "s3:GetBucketAcl"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket"
            ]
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/datasets/company1/*"
            ]
        }
    ]
}

目前,使用这个角色我仍然可以做,例如

aws s3 cp s3://mybucket/datasets/company2/dataset.csv

并下载数据集。我究竟做错了什么?

当我尝试模拟该策略时,它似乎是正确的(尝试 getObject onmybucket/datasets/company2/dataset.csv隐式失败,但这在实践中不会发生。此用户没有附加其他策略。

4

0 回答 0