我正在尝试编写一个策略,允许用户从任何存储桶读取(该部分有效),但只能写入任何存储桶上的特定子文件夹。
这是我目前的政策(读取有效,但仍允许写入存储桶根):
{
"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/*"
]
}
]
}
使用此策略,用户仍然能够写入存储桶的根目录,但用户只能写入任何存储桶上的“测试”子文件夹。
我还尝试在最后一条语句中添加条件:
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::*/pdf-test",
"arn:aws:s3:::*/pdf-test/*"
],
"Condition": {
"StringLike": {
"s3:prefix": ["pdf-test/*"]
}
}
}
但现在用户无法写入任何内容。
如何防止用户写入任何存储桶上除“测试”之外的任何文件夹?