amazon-web-services - 不可破解的 AWS S3 公共存储桶
问题描述
我想创建一个 S3 存储桶
规则:
互联网上的所有用户只有拥有对象的完整路径才能访问存储桶中的对象,不能访问目录结构和目录中的列表项
只有一个 IAM 用户拥有对存储桶的读取、写入、列出和删除访问权限
其他所有用户只有在他们知道对象的完整路径并且没有写入或列表访问权限时才具有读取访问权限。
如何以最安全的方式实现这一目标?这样没有黑客可以插入/编辑/删除我存储桶中的数据
我的存储桶权限设置应该是什么样的(阻止公共访问设置)?
我的存储桶策略应该是什么样的?
我的 IAM 用户策略应该是什么样的?
如果我使用相同的策略在同一个 aws 账户中创建另一个 IAM 用户怎么办?此 IAM 用户是否有权编辑、插入、删除
如果我在具有相同策略的不同 aws 账户中创建另一个 IAM 用户怎么办?此 IAM 用户是否有权编辑、插入、删除
解决方案
好的,您可以从该策略开始并尝试修改它以添加所有条款。在此策略中,删除操作仅允许该帐户的 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 函数来做到这一点,但我不确定这一点。
推荐阅读
- javascript - 将新对象附加到 JSON 文件中的数组
- javascript - React Native 中的机读区/护照阅读
- javascript - 在上下文中从 javascript 更新 Blazor InputText 组件值
- php - 检测数组是否包含另一个数组
- coq - 矛盾陈述的使用
- java - 当两个文件都在同一个文件夹中时,为什么 relativize 会产生“../file_name”?
- apache - .htaccess 内部路径重写的最佳实践?
- css - 伪元素在 chrome 手机上消失,在桌面上运行良好
- c - 如何将文本文件与单词列表进行比较,无论哪个单词不在列表中,我都必须在第三个文件中写下(在 C 中)
- flutter - 针对 Google Ads 的严格安全 Cookie 政策