首页 > 解决方案 > 不可破解的 AWS S3 公共存储桶

问题描述

我想创建一个 S3 存储桶

规则:

  1. 互联网上的所有用户只有拥有对象的完整路径才能访问存储桶中的对象,不能访问目录结构和目录中的列表项

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

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

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

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

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

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

如果我使用相同的策略在同一个 aws 账户中创建另一个 IAM 用户怎么办?此 IAM 用户是否有权编辑、插入、删除

如果我在具有相同策略的不同 aws 账户中创建另一个 IAM 用户怎么办?此 IAM 用户是否有权编辑、插入、删除

标签: amazon-web-servicesamazon-s3

解决方案


好的,您可以从该策略开始并尝试修改它以添加所有条款。在此策略中,删除操作仅允许该帐户的 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 函数来做到这一点,但我不确定这一点。


推荐阅读