我试图编写一个策略,允许用户读取任何存储桶(该部分工作),但只写入任何存储桶上的特定子文件夹。
这是我迄今的政策(阅读工作,但它仍然允许写入桶根):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "s3:PutObject" ], "Resource": [ "*" ] } { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/test" "arn:aws:s3:::*/test/*" ] } ] }
有了这个策略,用户仍然可以写入存储桶的根目录,用户只能在任何存储桶中写入“testing”子文件夹。
我也尝试在最后的声明中添加条件:
{ "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/pdf-test", "arn:aws:s3:::*/pdf-test/*" ], "Condition": { "StringLike": { "s3:prefix": ["pdf-test/*"] } } }
但是现在用户不能写任何东西。
如何防止用户写入任何文件夹,除了“testing”在任何存储桶?