我有这个场景,并且一直试图弄清楚它。这笔交易是我有一个S3存储桶,任何人只能匿名上传到存储桶,即无需登录。所以他们只有写权限 - 但不能查看或做任何其他事情。当项目添加到桶中时,我可以进入并查看,下载,编辑等等 - 所以完全权限(我是桶所有者)。
问题:我设置了一个允许匿名上传到我的存储桶的策略,然后让我看到S3存储桶中的项目 - 但是我没有权限对该文件执行任何操作。
我做错了什么?
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "allow-anon-put",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::testbucket123/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "deny-other-actions",
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::123:root"
},
"NotAction": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::testbucket123/*"
}
]
}
任何帮助或提示都会受到赞赏......或者是否有更好的方法来制定政策来实现这一目标?
答案 0 :(得分:1)
要澄清@ sqlbot的答案,请使用此政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "allow-anon-put",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "arn:aws:s3:::testbucket123/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
这说:允许任何人在此存储桶中放置一个对象并设置访问控制列表,但前提是他们在上传对象时指定了bucket-owner-full-control
。
然后,用户需要在其上传命令中包含此标头:
x-amz-acl: bucket-owner-full-control
或者,他们使用AWS Command-Line Interface (CLI)和--acl bucket-owner-full-control
(将标题设置为上述内容)。
如果他们不包含此标题,则上传将被拒绝。