在AWS website上,它建议使用以下存储桶策略将S3存储桶公开:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::example-bucket/*"
]
}
]
}
它与仅通过访问控制列表设置之间的区别是什么?
2 回答
底线:1)访问控制列表(ACL)是遗留的(但不是已弃用),2)AWS建议使用bucket / IAM策略,3)ACL控制存储桶和对象,策略仅在存储桶级别 .
通过考虑以下因素来决定使用哪个:(如John Hanley所述below,可以申请多种类型,并且适用 most 限制性/最低权限许可 . )
如果您想要使用S3存储桶策略:
在S3环境中控制访问
知道谁可以访问存储桶
保持最低20kb政策规模
如果您想要使用IAM策略:
在IAM环境中控制访问,可能不仅仅是存储桶
管理大量的存储桶
了解用户可以在AWS中执行的操作
最大保留2-10kb策略大小,具体取决于用户/组/角色
如果您想要使用ACL:
控制对存储桶和对象的访问
最大超过20kb的政策规模
继续使用ACL,您对它们感到满意
https://aws.amazon.com/blogs/security/iam-policies-and-bucket-policies-and-acls-oh-my-controlling-access-to-s3-resources/
如果要对存储桶中的各个对象实施细粒度控制,请使用ACL . 如果要实现全局控制,例如将整个存储桶公开,请使用策略 .
ACL是S3中的第一个授权机制 . 存储桶策略是较新的方法,也是几乎所有AWS服务使用的方法 . 策略可以实现非常复杂的规则和权限,ACL很简单(它们具有ALLOW但没有DENY) . 要管理S3,您需要对两者有充分的了解 .
当您实施ACL和策略时,会发生真正的复杂情况 . 最终权限集将是两者的最小权限联合 .