amazon-web-services - 我们如何允许 iam 用户只上传对象而拒绝他删除和列出对象?
问题描述
我想创建一个任何人都可以获取对象但只有 iam 用户可以上传对象的 S3 存储桶。
我的存储桶策略是这样的。任何人都可以读取对象,但不能执行删除、列出、创建操作。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "*"
}
]
}
我附加了以下策略,以允许将对象上传到用户和组。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1347416638923",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my_bucket/*" //fixed as @Marcin mentioned
}
]
}
问题是这个用户可以列出对象,从 javascript 中删除对象。我们怎样才能允许这个用户只上传对象?
顺便说一句,我们使用芥末存储。
解决方案
arn:aws:s3:::my_bucket
是一个桶,不是对象。因此它应该是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1347416638923",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::my_bucket/*"
},
{
"Sid": "ExplityDeny",
"Effect": "Deny",
"Action": "s3:DeleteObject",
"Resource": "arn:aws:s3:::my_bucket/*"
},
{
"Sid": "ExplityDeny2",
"Effect": "Deny",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::my_bucket"
}
]
}
推荐阅读
- angular - 仅在可观察发射期间使用 NgIf 有条件地显示元素
- java - 在android studio中将文件下载代码添加到webview应用程序时无法解决错误
- pandas - 熊猫 groupby()、transform() 和 ffill()
- xamarin.forms - 如何为非商店 UWP 应用程序获取受信任的代码签名证书 (.pfx)?
- excel - 如何分配公式中的单元格?
- javascript - MongoDB在第一次尝试时没有获得价值
- linux - 二进制可执行文件的读取权限的含义?
- mongodb - 如果字段满足条件,则将元素推送到数组中,MongoDB
- python - 导入 python 模块在 cmd 中有效,但在 IDE (pycharm) 中无效
- apache-spark - 由于 pyspark 中的 csv,无法写入行