【问题标题】:Bucket policy denying S3:DeleteBucket and S3:DeleteObject still deletes objects拒绝 S3:DeleteBucket 和 S3:DeleteObject 的存储桶策略仍然删除对象
【发布时间】:2017-08-24 05:40:29
【问题描述】:

我已将以下存储桶策略应用于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

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

为什么会这样?

甚至在版本化存储桶中也会发生这种情况。它只是擦除所有版本并且对象已消失。

【问题讨论】:

  • 我试过这个,我面临同样的问题。也许您可以向 AWS 报告此情况
  • 我试过了。他们的论坛很没用。如果可以的话,也许我会发送支持请求。
  • 是的,通过电话或聊天的支持请求通常可以为我解决问题
  • 是的,非常有趣! “删除桶”命令不是 API 调用,它实际上触发管理控制台中的代码删除对象,然后删除桶(如向导)。出于某种原因,即使用户无法在控制台中直接删除对象,它也可以删除对象。
  • 你是用root账号删除bucket吗?这可能是个问题。但由于 S3 策略是基于资源的策略,您甚至可以拒绝 root,因为您在主体中提到了“*”。

标签: amazon-web-services amazon-s3


【解决方案1】:

建议的最佳做法是除了创建您的初始 IAM 用户之外不要使用根账户,这样您就可以添加限制以防止此类事件发生。如果有人有一个以编程方式需要这种行为的用例,他们不想在系统中设置限制作为“安全卫士”。用户有责任遵循最佳实践并实施适用于他们情况的必要保护措施

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

本文档的第 2|A 部分描述了在用户上下文中应用于根账户的行为:“如果使用 AWS 账户的根凭证发出请求,Amazon S3 将跳过此步骤。”

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2022-01-04
    • 2017-02-14
    • 2018-01-10
    • 2019-11-09
    • 2023-03-29
    • 1970-01-01
    • 2018-10-22
    • 2019-04-20
    相关资源
    最近更新 更多