不可破解的AWS S3公共存储桶

时间:2020-05-06 14:07:53

标签: amazon-web-services amazon-s3

我想创建一个S3存储桶

规则:

  1. Internet上的所有用户只有拥有对象的完整路径,才能访问存储桶中的对象,无法访问目录结构并列出目录中的项目

  2. 只有一个IAM用户将具有对存储桶的读取,写入,列出和删除访问权限

  3. 其他所有用户只有在知道对象的完整路径并且没有写或列表访问权限时,才具有读取权限。

如何以最佳的安全方式实现这一目标?这样任何黑客都无法插入/编辑/删除我的存储桶中的数据

我的存储桶权限设置(阻止公共访问设置)应该是什么样?

我的存储桶策略应该是什么样的?

我的IAM用户策略应该是什么样的?

如果我在具有相同策略的相同aws帐户中创建另一个IAM用户怎么办?该IAM用户将有权编辑,插入,删除

如果我使用相同的策略在不同的aws帐户中创建另一个IAM用户怎么办?该IAM用户将有权编辑,插入,删除

1 个答案:

答案 0 :(得分:0)

好的,您可以从此策略开始,然后尝试对其进行修改以添加所有子句。 在此策略中,删除操作仅允许该帐户的root用户使用。 因此,还要添加列表并写入操作,以便只有root用户才能执行这些操作。

{
    "Version": "2012-10-17",
    "Id": "Policy1588186664547",
    "Statement": [
        {
            "Sid": "Stmt1588186644754",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:DeleteBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteBucketWebsite",
                "s3:DeleteObject",
                "s3:DeleteObjectTagging",
                "s3:DeleteObjectVersion",
                "s3:DeleteObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::testpolycy4/*",
                "arn:aws:s3:::testpolycy4"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:userid": "102345678910"
                }
            }
        }
    ]
}

回答您的问题:

  • 我的存储桶权限设置应该是什么样的(公开阻止 访问设置)?

全部屏蔽

  • 我的存储桶策略应该是什么样的?

修改该策略,直到获得所需的策略。

我认为您不需要IAM策略,只需使用存储桶策略,您就可以限制对对象的访问并仅允许您想要的用户。

困难的是,如果用户拥有完整的路径,则只允许访问该用户,我认为您可以使用策略或lambda函数来做到这一点,但是我不确定这一点。