【问题标题】:Basic AWS IAM permissions for an S3 bucketS3 存储桶的基本 AWS IAM 权限
【发布时间】:2012-02-22 19:55:58
【问题描述】:

我正在尝试为 IAM 用户/密钥找出一个基本权限集,使其只能访问 S3 中的单个存储桶 - 仅对单个存储桶进行读/写访问。

完成这项工作所需的最低权限是多少?我在 S3 的 IAM 策略生成器中选择了所有选项,在存储桶上启用了除 CreateBucketDeleteBucket 之外的所有权限。我还创建了一组特定于该用户的密钥。

当我尝试使用这些凭据访问存储桶时,我在列出存储桶时遇到问题,即使 ListAllMyBuckets 属性已启用。

任何人都有这样设置基本存储桶配置的经验吗?好像会很常见……

【问题讨论】:

  • 当 IAM 用户只应该访问 S3 中的单个存储桶时,为什么要首先列出存储桶?
  • 如果您不记录用户有权访问的存储桶名称,那么 ListAllMyBuckets 是可以的 - 然后代码可以确定用户实际可以进入哪些存储桶。这取决于您希望存储桶名称的“私密性”。但是由于存储桶名称基本上在公共域中(您可以 ping 亚马逊以了解是否正在使用任何存储桶名称),只有“随机字符串”存储桶名称接近私有,即使这是稍纵即逝的,因为存储桶名称去生成每个 URL,等等。
  • Steffen,我不 想要 ListAllBuckets 的帐户,但它不能使用我想要的权限,所以我正在逐步启用更多权限以查看是否有一些权限更高级别的拒绝访问正在进行中......

标签: ruby-on-rails permissions amazon-s3 amazon-web-services


【解决方案1】:

Example Policies for Amazon S3 涵盖了与您的类似或相关的各种用例 - 特别是您可能希望将示例 1:允许每个用户在 Amazon S3 中拥有一个主目录示例2:允许用户仅列出公司存储桶中其主目录中的对象 - 您只需调整Resource 以改为针对您的存储桶根目录,即替换/home/bob/*with *.

请注意,示例 2 促进了 ListBucket,这是一个 operation on a bucket返回有关存储桶中某些项目的信息,而 ListAllMyBuckets 是一个operation on the service返回请求的发送者拥有的所有存储桶的列表,因此可能不适用于您的用例(请参阅我关于后者澄清的评论)。

【讨论】:

    【解决方案2】:

    这将允许列出所有存储桶,假设您没有在其他地方拒绝它(我 99% 肯定首先评估拒绝语句;顺序与 IAM 政策无关):

        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        }
    

    允许任何您想要的存储桶(也不要忘记 /*):

        {
            "Effect": "Allow",
            "Action": [
                "s3:<Put your actions here; cherry pick from the AWS documentation>"
            ],
            "Resource": [
                "arn:aws:s3:::<Bucket name here>",
                "arn:aws:s3:::<Bucket name here>/*"
            ]
        }
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 2019-11-09
      相关资源
      最近更新 更多