S3存储桶策略与访问控制列表

Ave*_*235 15 amazon-s3 amazon-web-services

在AWS网站上,它建议使用以下存储桶策略将S3存储桶公开:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::example-bucket/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

它与仅通过访问控制列表设置之间的区别是什么?

在此输入图像描述

Dar*_*Ivy 21

结论:1)访问控制列表(ACL)是遗留的(但不是已弃用),2)AWS建议使用bucket/IAM策略,3)ACL控制存储桶和对象,策略仅在存储桶级别.

通过考虑以下因素来决定使用哪个:(如下面 John Hanley所述,可以应用多种类型,并且适用最严格/最低权限的权限.)

如果您想要使用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/

  • 我认为指出人们也可以通过存储桶策略控制对单个对象的访问是有意义的。如 ```"Resource": ["arn:aws:s3:::example/myfile.txt"]``` (8认同)

Mar*_*ark 8

AWS在此处概述了不同访问策略选项的特定用例

他们布置...

何时使用对象 ACL

  • 当对象不归存储桶所有者所有时
  • 权限因对象而异

何时使用存储桶 ACL

  • 向 Amazon S3 日志传输组授予写入权限以将访问日志对象写入您的存储桶

何时使用存储桶策略

  • 管理所有 Amazon S3 权限的跨账户权限(ACL 只能执行读取、写入、读取 ACL、写入 ACL 和“完全控制”——之前的所有权限)

何时使用用户策略

  • 如果您想通过将策略附加到用户(或用户组)而不是使用存储桶策略在存储桶级别单独管理权限


Joh*_*ley 5

如果要对存储桶中的单个对象实施细粒度控制,请使用ACL。如果要实现全局控制(例如将整个存储桶公开),请使用策略。

ACL是S3中的第一个授权机制。存储桶策略是较新的方法,该方法几乎用于所有AWS服务。策略可以实现非常复杂的规则和权限,ACL很简单(它们具有ALLOW但没有DENY)。要管理S3,您需要对两者都有深刻的了解。

当您同时实现ACL和策略时,就会发生真正的麻烦。最终权限集将是两者的最小特权联合。