我试图设置一个S3策略存储桶,但它根本不起作用。我需要允许向匿名用户上传文件,但只有经过身份验证的用户才能下载这些文件。我试了两个想法:
{
"Id": "Policy1378380575437",
"Statement": [
{
"Sid": "Stmt1378380436712",
"Action": [
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my_bucket/*",
"Principal": {
"AWS": [
"*"
]
}
},
{
"Sid": "Stmt1378380568645",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::my_bucket/*",
"Principal": {
"AWS": [
"arn:aws:iam::1111111111:root"
]
}
}
]
}
但问题是默认情况下允许使用GetObject,这意味着匿名用户可以下载文件。我试图为GetObject添加一个新的Sid拒绝,但拒绝总是覆盖允许。
我很感激你的建议。
谢谢。
我认为您可以使用ACL来完成此操作。将bucket上的权限更改为要求ACL"authenticated read"。你的用户必须在上传时设置ACL标志,否则他们会收到拒绝访问的错误,但如果你能让他们设置该标志,我认为这可能对你有用。编辑Bucket权限