【发布时间】:2017-12-30 11:53:14
【问题描述】:
假设存在一个与我的私有存储桶名称非常相似的公共存储桶。我想防止用户拼错私有存储桶并意外将敏感数据发布给公众。
我了解最佳做法是使存储桶名称尽可能唯一。
澄清:我想阻止用户发布到任何公共 S3 存储桶
【问题讨论】:
-
不是真的,我想阻止用户发布到任何公共存储桶。
标签: amazon-web-services amazon-s3 amazon-iam
假设存在一个与我的私有存储桶名称非常相似的公共存储桶。我想防止用户拼错私有存储桶并意外将敏感数据发布给公众。
我了解最佳做法是使存储桶名称尽可能唯一。
澄清:我想阻止用户发布到任何公共 S3 存储桶
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-iam
公共存储桶非常少见。事实上,从 安全 角度和 成本 角度来看,他们都非常不鼓励 - 有人可以上传非法文件并将其用于文件共享,而存储桶所有者会付钱吧!
我通常会说有人能够成功上传到随机存储桶的机会几乎为零,但我怀疑您正在考虑邪恶的一方可能会创建类似的情况-命名bucket,希望收集机密数据(类似于域名露营)。
在这种情况下,您可以为用户创建拒绝策略以禁止访问所有 S3 存储桶,您特别指定的存储桶除外:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::good-bucket1",
"arn:aws:s3:::good-bucket2"
]
},
{
"Sid": "NotOthers",
"Effect": "Deny",
"Action": [
"s3:*"
],
"NotResource": [
"arn:aws:s3:::good-bucket1",
"arn:aws:s3:::good-bucket2" ]
}
]
}
这将起作用,因为针对 IAM 用户的 Deny 将覆盖存储桶策略中的任何 Allow。唯一的缺点是您需要专门列出您希望包含/排除的存储桶,因为无法指定适用于“公共存储桶”的规则。
【讨论】:
您无法控制另一个存储桶,因此您无法阻止这种情况发生。
为了回应它,我想您可以定期查询该存储桶,假设它是公开可读的,以搜索您认为应该已上传到 您的 存储桶的内容,但不清楚您会做什么在那一点上做。
或者,为您的用户提供一个上传页面(可能静态托管在您的 S3 存储桶中)并要求您的用户使用该页面来启动上传(通过 POST 或 AWS S3 JavaScript SDK),这样用户就不必输入存储桶名称,因此不会意外定位到错误的存储桶。
【讨论】: