ruby-on-rails - 使用 Active Storage 所需的最严格的 IAM(权限和存储桶)策略?
问题描述
使用 Active Storage 设置工作应用程序以与 Amazon S3 一起使用所需的最小/最严格权限集是什么?
从不太好的事情开始:AmazonS3FullAccess
从技术上讲,这是可行的,但这是一种非常糟糕的做法,因为 IAM 现在拥有完全访问权限(即它可以做任何事情)并提供对帐户上所有存储桶的访问权限,包括那些与应用程序无关的存储桶!所以我们可以说这不符合最小特权原则
问题
使用 AWS 的 JSON 格式,允许 Active Storage 正常运行(即上传、读取、删除图像等)的最严格的 IAM 策略是什么。或者换句话说,这里提到的权限:
Active Storage 的核心功能需要以下权限:
s3:ListBucket
、s3:PutObject
、s3:GetObject
和s3: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 的全部功能,仅此而已。
解决方案
看不到如何在不影响功能的情况下获得更多限制。您已将其限制为仅对您希望管理的存储桶执行必要的操作。
推荐阅读
- java - 如何更改 ExpandableListView 中展开的 GroupView 背景颜色?
- java - 如何在 Spring 中从文件读取参数到 Schedule 注释?
- ios - iPhone 部署目标 12.1 或以下 (Swift) 的大型 iPA 大小
- amazon-web-services - Docker 容器在本地运行,但不在 AWS Elastic BeanStalk 上
- regex - 用于匹配特殊字母数字模式的正则表达式
- json - JSON 按特定值排序 - PERL
- angular - 在 Angular 5 中使用 ng2-pdf-viewer 导航和滚动 PDF 文件
- r - 连接单个数据框中的重复列
- c# - 如何将模拟的 httpservice 注入到 asp.net 核心控制器
- ios - Swift 中 Java 的 Integer.reverseBytes() 的等价物是什么?