问题描述
使用 Active Storage 设置工作应用程序以与 Amazon S3 配合使用所需的最小/最严格的权限集是什么?
从一些不太好的开始:AmazonS3FullAccess
从技术上讲,这是可行的,但是非常不好的做法,因为 IAM 现在拥有完全访问权限(即它可以做任何事情)并且可以访问all em> 账户上的buckets,包括那些与app无关的!所以我们可以说这不遵守Principle of Least Privilege
问题
使用 AWS 的 JSON 格式,允许 Active Storage 正常运行的最严格的 IAM 策略是什么(即上传、读取、删除图像等)。或者换句话说,提到的权限here:
Active Storage 的核心功能需要以下权限:s3:ListBucket
、s3:PutObject
、s3:Getobject
和 s3: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 的全部功能,仅此而已。
解决方法
不知道如何在不影响功能的情况下获得更多限制。您已将其限制为仅对您希望管理的存储桶执行必要的操作。