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

Posted

技术标签:

【中文标题】拒绝除一个之外的所有存储桶的 AWS IAM 策略【英文标题】:AWS IAM Policy to Deny all buckets except one 【发布时间】:2021-10-01 16:22:16 【问题描述】:

我正在尝试创建一个 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/*"
            ]
        
    ]

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


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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于拒绝除一个之外的所有存储桶的 AWS IAM 策略的主要内容,如果未能解决你的问题,请参考以下文章

拒绝除特定范围之外的所有 IP 访问 AWS S3

适用于所有存储桶的 AWS IAM 策略

多个存储桶的 AWS IAM 策略

S3 拒绝管理员访问

S3 存储桶的 IAM 组策略:拒绝文件夹但不拒绝文件

针对 Grafana 警报写入 s3 存储桶的 AWS IAM 策略问题