为单个客户提供文件夹访问权限

时间:2014-10-03 17:58:57

标签: amazon-web-services amazon-s3 amazon-iam

在S3中,我有一个名为customerdata的存储桶。在此之下,我想为每个客户提供文件夹,所以

/customerdata/bobjones/project1/data
/customerdata/jamessmith/project1/data

我需要为每个客户提供访问其文件夹及其中的数据的权限,最好使用像cloudberry s3 explorer这样的简单免费工具。目标是让Bob Jones登录到cloudberry,并查看bobjones文件夹中的数据。

到目前为止,我只能向鲍勃展示一切,或者什么都没有。这是我尝试设置的政策,遵循this articlethis onethis one

{
 "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中看到任何东西。

如果这不是正确的方法,那么设置它的正确方法是什么,以便每个客户只能看到他们的项目和数据?

1 个答案:

答案 0 :(得分:0)

使用${aws:username} IAM策略变量执行此操作可能更简单,如下所述: http://docs.aws.amazon.com/IAM/latest/UserGuide/PolicyVariables.html

但请注意,这将适用于IAM用户,不适合应用程序用户。