使用 Active Storage 需要最严格的 IAM(权限和存储桶)策略?

Strictest possible IAM (permissions and bucket) policy required to work with Active Storage?

设置使用 Active Storage 的工作应用程序以与 Amazon S3 一起工作需要哪些 smallest/strictest 权限集?

的事情开始:AmazonS3FullAccess

从技术上讲这是可行的,但是 非常 不好的做法,因为 IAM 现在具有 完全 访问权限(即它可以做任何事情)并提供访问帐户中的所有 个存储桶,包括那些与应用程序无关的存储桶!所以我们可以说这 遵守 Principle of Least Privilege

问题

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

The core features of Active Storage require the following permissions: s3:ListBucket, s3:PutObject, s3:GetObject, and s3:DeleteObject.

就此问题而言,请假设该应用仅使用一个名为 mybucket

的存储桶

到目前为止我所知道的

在阅读了大量 googling/reading 文档之后,我发现 'examples' 大多没有明确地将 S3 权限映射到确切的 ActiveStorage 要求。无论如何,here 我发现的最好的:

{
  "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/*"]
    }
  ]
}

我可以确认 'works'(rails 应用程序可以 'see' 图片、添加新图片和删除图片)。

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

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

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