我正在尝试设置S3存储桶,一些客户将能够在其自己的前缀内列出,读取,删除和上传文件。上传,下载和删除都很容易,但是我在列表时遇到了问题...
我创建了一个测试用户,并用customer-name=foo
标记了他。然后,我在其中创建了一个存储桶和一个文件夹foo
。用户位于正确的组中,因此该策略适用,但是当我打开AWS控制台列出文件时,出现访问被拒绝错误。这是我目前的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:GetObjectVersionForReplication",
"s3:DeleteObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::company-customers-data/${aws:PrincipalTag/customer-name}/*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::company-customers-data",
"Condition": {
"ForAnyValue:StringEqualsIgnoreCase": {
"s3:prefix": "${aws:PrincipalTag/customer-name}"
}
}
}
]
}
所以我的想法是,当标签为customer-name
的用户尝试列出整个存储桶时,他确实应该被拒绝访问(尽管我更喜欢他可以使用的目录/文件列表),但是当他进入自己的目录时目录(甚至通过外部提供给他的url),他也应该看到所有内容的列表,但是我仍然无法访问...