首页 > 解决方案 > 使用 Active Storage 所需的最严格的 IAM(权限和存储桶)策略?

问题描述

使用 Active Storage 设置工作应用程序以与 Amazon S3 一起使用所需的最小/最严格权限集是什么?

从不太好的事情开始:AmazonS3FullAccess

在此处输入图像描述

从技术上讲,这是可行的,但这是一种非常糟糕的做法,因为 IAM 现在拥有完全访问权限(即它可以做任何事情)并提供对帐户上所有存储桶的访问权限,包括那些与应用程序无关的存储桶!所以我们可以说这符合最小特权原则

问题

使用 AWS 的 JSON 格式,允许 Active Storage 正常运行(即上传、读取、删除图像等)的最严格的 IAM 策略是什么。或者换句话说,这里提到的权限:

Active Storage 的核心功能需要以下权限:s3:ListBuckets3:PutObjects3:GetObjects3:DeleteObject

出于这个问题的目的,请假设应用程序只使用一个名为mybucket

到目前为止我所知道的

经过大量谷歌搜索/阅读文档后,我大多发现“示例”没有明确地将 S3 权限映射到确切的 ActiveStorage 要求。无论如何,这里是我发现的最好的:

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

我可以确认它“有效”(rails 应用程序可以“查看”图像、添加新图像并删除它们)。

因为我过去没有设置过很多次,所以我无法确认它是否像我想要的那样精致,或者是否缺少任何可能导致问题的东西。

TL;DR,就在 IAM 政策之后,该政策允许 Active Storage 的全部功能,仅此而已。

标签: ruby-on-railsamazon-web-servicesamazon-s3ruby-on-rails-6rails-activestorage

解决方案


看不到如何在不影响功能的情况下获得更多限制。您已将其限制为仅对您希望管理的存储桶执行必要的操作。


推荐阅读