将桶创建限制为区域

时间:2018-05-19 20:45:57

标签: amazon-web-services amazon-s3

我想限制用户在特定区域中创建Amazon S3存储桶。我写了一个类似下面的政策并附在用户身上。但它拒绝用户创建任何存储桶。

请帮忙。编写其他语句以查看是否已创建存储桶。不幸的是,我们无法限制用户列出存储桶。

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "RegionSpecificS3BucketCreation",
        "Effect": "Allow",
        "Action": "s3:CreateBucket",
        "Resource": "arn:aws:s3:::*",
        "Condition": {
            "StringLike": {
                "s3:LocationConstraint": "us-east-1"
            }
        }
    },
    {
        "Effect": "Allow",
        "Action": "s3:ListBucket",
        "Resource": "arn:aws:s3:::*"
    },
    {
        "Sid": "VisualEditor2",
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:HeadBucket"
        ],
        "Resource": "*"
    }
]
}

1 个答案:

答案 0 :(得分:1)

us-east-1是一个特例。这是原始的S3区域,并且对于该区域中的向后兼容性桶,实际上没有声明位置约束。它们仍然受限于us-east-1(数据保留在该区域中),但是您通过不在API级别指定位置约束来在us-east-1中创建存储桶。

我怀疑该特定区域的正确条件测试是这样的:

    "Condition": {
        "StringLikeIfExists": {
            "s3:LocationConstraint": ""
        }
    }

也就是说,如果字符串完全存在,则它必须是空字符串。

对于所有其他地区,您正在做的事情应该可以正常工作。