Amazon web services 阻止S3用户发布到公共存储桶?
假设存在一个公共bucket,它的名称与我的私有bucket非常相似。我想防止用户拼写错误的私人存储桶,并意外地向公众发布敏感数据 我知道最好的做法是使bucket名称尽可能唯一Amazon web services 阻止S3用户发布到公共存储桶?,amazon-web-services,amazon-s3,amazon-iam,Amazon Web Services,Amazon S3,Amazon Iam,假设存在一个公共bucket,它的名称与我的私有bucket非常相似。我想防止用户拼写错误的私人存储桶,并意外地向公众发布敏感数据 我知道最好的做法是使bucket名称尽可能唯一 澄清:我想阻止用户发布到任何公共S3存储桶您无法控制其他存储桶,因此无法阻止这种情况发生 作为回应,我想你可以定期查询这个bucket,假设它是公开可读的,搜索你认为应该上传到你的bucket中的内容,尽管现在还不清楚你会做什么 或者,为用户提供一个上传页面(可能静态托管在S3 bucket中),并要求用户使用该页面启
澄清:我想阻止用户发布到任何公共S3存储桶您无法控制其他存储桶,因此无法阻止这种情况发生 作为回应,我想你可以定期查询这个bucket,假设它是公开可读的,搜索你认为应该上传到你的bucket中的内容,尽管现在还不清楚你会做什么 或者,为用户提供一个上传页面(可能静态托管在S3 bucket中),并要求用户使用该页面启动上传(通过或AWS S3 JavaScript SDK),这样用户就不必键入bucket名称,也就不会意外地指向错误的bucket。公共bucket非常罕见。事实上,他们从安全性的角度以及从成本的角度来看都是非常不受欢迎的——有人可能上传非法文件并将其用于文件共享,而bucket所有者会为此付费 我通常会说,有人能够成功上传到随机bucket的几率几乎为零,但我怀疑您正在考虑这样一种情况,邪恶的一方可能会创建一个类似命名的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
将覆盖Bucket策略中的任何Allow
。唯一的缺点是,您需要特别列出您希望包含/排除的bucket,因为无法指定规则适用于“公共bucket”。实际上,我不想阻止用户发布到任何公共bucket。检查这个