如何为多个IAM用户设置S3策略,以便每个用户只能访问他们自己的桶文件夹



我有两个用户User1和User2,每个用户在AWS中都有一个IAM帐户。我有一个s3桶"external_bucket.frommycompany.com"。在该存储桶中是每个用户帐户"User1"one_answers"User2"的文件夹。我想授予用户1对User1文件夹的R/W访问权限,并授予用户2对User2文件夹的R/W访问权限。我不希望他们能够在external_bucket.frommycompany.com的根目录中看到彼此的文件夹。是否有一种方法来设置他们的IAM策略,这样这是可能的?

我的目标是使我们的用户能够从S3浏览器应用程序(如cloudberry)连接到S3桶,这样他们就可以上传和下载文件到他们的文件夹。

这是你问题的官方答案。

示例:允许每个IAM用户访问桶中的一个文件夹

在本例中,您希望两个IAM用户Alice和Bob具有访问权限到您的bucket examplebucket,以便它们可以添加、更新和删除对象。但是,您希望将每个用户的访问限制为单个文件夹在桶中。您可以创建名称匹配的文件夹用户名

策略变量的使用是真正的游戏规则改变者,如果你今天不这样做的话。

参见S3策略示例中的示例:

但是,您可以将策略附加到单个用户编写使用策略变量的单个策略,并附加策略到组。首先需要创建一个组,并将两者都添加进去爱丽丝和鲍勃到小组。下面的示例策略允许一组examplebucket/${aws:username}文件夹下的Amazon S3权限。在评估策略时,策略变量${aws:username}为由请求者的用户名替换。例如,如果Alice发送了一个请求放置一个对象,只有当Alice是上传对象到examplebucket/Alice文件夹

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion"
         ],
         "Resource":"arn:aws:s3:::examplebucket/${aws:username}/*"
      }
   ]
}

从这里

这样做应该允许User1只访问User1的文件夹:

{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowUserToSeeBucketListInTheConsole",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowRootAndHomeListingOfCompanyBucket",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::my-company"],
     "Condition":{"StringEquals":{"s3:prefix":["","/"],"s3:delimiter":["/"]}}
    },
   {
     "Sid": "AllowListingOfUserFolder",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::my-company"],
     "Condition":{"StringLike":{"s3:prefix":["user1/*"]}}
   },
   {
     "Sid": "AllowAllS3ActionsInUserFolder",
     "Effect": "Allow",
     "Action": ["s3:*"],
     "Resource": ["arn:aws:s3:::user1/*"]
   }
 ]
}

将其应用为User1的策略,并且他们应该只能访问user1/文件夹。"s3:prefix":["","/"]...部分可能可以更改,但我对策略语言不够熟悉,不知道如何更改。

如果在user2的策略中将user2替换为user1,则user2应该只能访问user2/文件夹,以此类推。

相关内容

  • 没有找到相关文章

最新更新