存储桶策略拒绝S3:DeleteBucket和S3:DeleteObject仍然删除对象

时间:2016-10-19 05:25:11

标签: amazon-web-services amazon-s3

我已将以下存储桶策略应用于my-bucket.myapp.com S3存储桶:

{
    "Version": "2008-10-17",
    "Id": "PreventAccidentalDeletePolicy",
    "Statement": [
        {
            "Sid": "PreventAccidentalDelete",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteObject”
            ],
            "Resource": [
                “arn:aws:s3:::my-bucket.myapp.com”,
                "arn:aws:s3:::my-bucket.myapp.com/*"
            ]
        }
    ]
}

然后在控制台中,当我尝试删除存储桶时(右键单击,删除),我收到了我期望的错误:Access Denied

但是,这就是问题,问题是它仍然删除桶中的所有对象

为什么会这样?

甚至可以使用版本化的存储桶。它只是擦除所有版本,对象是GONE。

1 个答案:

答案 0 :(得分:1)

建议的最佳做法是除了创建初始IAM用户之外不使用root帐户,以便添加限制以防止此类事件发生。如果某人有一个以编程方式需要此行为的用例,他们不希望将系统限制作为“安全防护”。用户应遵循最佳实践并实施适用于其情况的必要保护措施

亚马逊如何授权对s3对象采取行动的确切过程:http://docs.aws.amazon.com/AmazonS3/latest/dev/how-s3-evaluates-access-control.html

本文档的第2节| A描述了在用户上下文中应用于root帐户的行为:“如果请求是使用AWS账户的根凭据进行的,则Amazon S3会跳过此步骤。”