我正在尝试使用允许它们仅执行上传到s3存储桶的特定文件夹的策略来配置Amazon IAM用户 .
当策略编写如下时,我可以成功上传图像:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Put*"
],
"Resource": "*"
}
]
}
我的上传功能(在coffeescript浏览器端javascript aws-sdk):
s3.putObject data, (err, data) =>
if err
console.log err
console.log 'Error uploading data: ', data
else
console.log 'succesfully uploaded the image!'
但是我想将权限范围仅限于允许putObject,并且只在特定目录中 . 我认为这个政策会起作用,但它会引发403错误:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my_bucket/example_directory"
}
]
}
我的政策中是否存在语法错误,或者我在做其他错误的操作?我仍然是编写IAM政策的新手 .
Update
我已经通过在IAM模拟器中使用以下代码取得了一些进展,但遗憾的是,尽管我说应该允许使用putObject,但当我尝试实际上传时它仍会抛出403错误 .
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject*"
],
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"s3:PutObjectAcl*",
"s3:PutObjectVersionAcl*"
],
"Resource": "*"
}
]
}
2 回答
我终于按预期工作了,关键是我必须在
Deny
部分使用NotAction
和NotResource
.请参阅以下代码:
尝试: