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

Posted

技术标签:

【中文标题】S3 存储桶策略与访问控制列表【英文标题】:S3 bucket policy vs access control list 【发布时间】:2022-01-21 20:42:54 【问题描述】:

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


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::example-bucket/*"
            ]
        
    ]

这和只通过访问控制列表设置有什么区别?

【问题讨论】:

【参考方案1】:

底线:1) 访问控制列表 (ACL) 是遗留的(但未弃用),2) AWS 推荐存储桶/IAM 策略,3) ACL 可以控制存储桶和对象,策略仅在存储桶中级别。

通过考虑以下因素来决定使用哪个:(正如 John Hanley 所指出的below,可以应用不止一种类型,并且将应用限制性/最小权限权限。)

如果您愿意,请使用 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"]【参考方案2】:

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

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

当您同时实施 ACL 和策略时,会发生真正的复杂情况。最终权限集将是两者中权限最小的联合体。

【讨论】:

【参考方案3】:

AWS 概述了不同访问策略选项here的具体用例

他们布置...

何时使用对象 ACL

objects 不属于 bucket owner 时 权限因对象而异

何时使用存储桶 ACL

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

何时使用存储桶策略

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

何时使用用户政策

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

【讨论】:

我们可以使用 IAM 组策略进行 Amazon S3 日志传输,不是吗? @LukaSamkharadze OP 询问使用存储桶策略和存储桶 ACL 之间的区别。根据我在答案中链接并找到here 的 AWS 文档,您只能通过存储桶 ACL 而非存储桶策略启用 S3 日志传递。

以上是关于S3 存储桶策略与访问控制列表的主要内容,如果未能解决你的问题,请参考以下文章

允许从特定 VPC 或控制台访问 S3 存储桶

基于 *** 的 Amazon S3

收到我的 AWS 账户的 S3 存储桶安全通知电子邮件?

私有登台S3存储桶的策略

Amazon S3 存储桶:拒绝列表、读取、写入特定文件夹

允许用户访问特定 S3 存储桶进行备份的 AWS IAM 策略