在S3中,我有一个名为customerdata
的bucket。在这种情况下,我希望每个客户都有文件夹,所以
/customerdata/bobjones/project1/data
/customerdata/jamessmith/project1/data
我需要让每个客户只访问他们的文件夹和其中的数据,最好是使用一个简单的免费工具,比如cloudberry s3 explorer。目标是让Bob Jones登录cloudberry,并查看bobjones
文件夹中的数据。
不过到目前为止,我只能向鲍勃展示水桶里的一切,或者什么都没展示。这是我在这篇文章、这篇文章和这篇文章之后试图建立的策略:
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"],
"Condition":{"StringEquals":{"s3:prefix":["","customerdata/"],"s3:delimiter":["/"]}}
},
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::customerdata"],
"Condition":{"StringEquals":{"s3:prefix":["","bobjones/"],"s3:delimiter":["/"]}}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::customerdata"],
"Condition":{"StringLike":{"s3:prefix":["bobjones/*"]}}
},
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::customerdata/bobjones/*"]
}
]
}
我做错了什么?这可能是我想要做的吗?我还尝试了小组优先的方法,但在cloudberry没有看到任何结果。
如果这不是正确的方法,那么正确的设置方法是什么,以便每个客户只看到他们的项目和数据?
使用${aws:username}
IAM策略变量可能更简单,如下所述:http://docs.aws.amazon.com/IAM/latest/UserGuide/PolicyVariables.html
但请注意,这将适用于IAM用户,不适合应用程序用户。