AWS IAM 策略拒绝除一个以外的所有存储桶

AWS IAM Policy to Deny all buckets except one

我正在尝试创建 IAM 策略以授予对特定存储桶的只读权限:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::mybucket/*"
            ]
        }
    ]
}

问题是我有一些存储桶 public,所以我想拒绝对这些存储桶的所有权限,我尝试在策略中编写类似以下内容但不起作用。我的想法是拒绝我特定桶之外的一切。

{
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "StringNotLike": {
                    "s3:prefix": [
                        "mybucket",
                        "mybucket/",
                        "mybucket/*"
                    ]
                }
            }
        },

我用不同的方法解决了自己的问题,因为 s3:prefix 仅适用于一部分操作,这种方法不适合我的用例。 相反,我可以使用 NotResource

    {
        "Effect": "Deny",
        "Action": "*",
        "NotResource": [
            "arn:aws:s3:::mybucket",
            "arn:aws:s3:::mybucket/*"
        ]
    }