使用 Active Storage 所需的最严格的 IAM权限和存储桶策略? 问题目前我所知道的

问题描述

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

从一些不太好的开始:AmazonS3FullAccess

enter image description here

从技术上讲,这是可行的,但是非常不好的做法,因为 IAM 现在拥有完全访问权限(即它可以做任何事情)并且可以访问all em> 账户上的buckets,包括那些与app无关的!所以我们可以说这遵守Principle of Least Privilege

问题

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

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

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

的存储桶

目前我所知道的

经过大量的谷歌搜索/阅读文档后,我主要发现没有将 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/*"]
    }
  ]
}

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

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

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

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...