如何仅授予用户 Amazon S3 控制台访问某个存储桶的权限?

上次更新时间:2019 年 6 月 20 日

我想授予用户 Amazon Simple Storage Service (Amazon S3) 控制台访问某个存储桶的权限。但是,我不希望用户在账户中看到其他存储桶。如何限制用户的控制台访问权限,使之只能访问某个存储桶? 

简短描述

要限制用户的 Amazon S3 控制台访问权限,使之只能访问某个存储桶,请在用户的 AWS Identity and Access Management (IAM) 权限中更改以下内容:

  1. 删除 s3:ListAllMyBuckets 操作权限。
  2. 仅为您希望用户访问的存储桶添加 s3:ListBucket 权限。

警告:在您更改这些权限后,用户在访问主 Amazon S3 控制台时会收到“访问被拒绝”错误。主控制台链接类似于以下内容:

https://s3.console.aws.amazon.com/s3/home

用户必须使用指向存储桶的直接控制台链接访问存储桶,类似于以下内容: 

https://s3.console.aws.amazon.com/s3/buckets/awsexamplebucket/

解决方法

按照以下步骤更新用户控制台仅访问某个存储桶的 IAM 权限:

1.    打开 IAM 控制台

2.    在控制台中,打开仅应具有对某个存储桶的访问权限的 IAM 用户或角色。

3.    在 IAM 用户或角色的权限选项卡中,展开每个策略以查看其 JSON 策略文档。

4.    在 JSON 策略文档中,搜索授予用户 s3:ListAllMyBuckets 操作或 s3:* 操作(所有 S3 操作)权限的策略。

5.    修改策略以删除 s3:ListAllMyBuckets 操作权限。然后,仅为您希望用户从控制台访问的存储桶添加 s3:ListBucket 权限。

例如,以下策略允许用户在 awsexamplebucket 上执行 s3:ListBuckets3:PutObjects3:GetObject 操作:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::awsexamplebucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::awsexamplebucket/*"
      }
   ]
}

6.    为用户提供指向存储桶的直接控制台链接,类似于以下内容:

https://s3.console.aws.amazon.com/s3/buckets/awsexamplebucket/

用户必须使用直接链接才能从控制台访问存储桶。

注意:如果您希望用户能够列出所有存储桶但仅对某个存储桶执行其他 S3 操作,请参阅示例:允许 IAM 用户访问其中一个存储桶


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?