疑难点拨 | Amazon S3 中的 ARN 和 URI


  官方指导

Amazon S3 中的存储桶及其中的对象是私有的,只有在明确授予访问权限时才可以访问。AWS 提供丰富的访问控制策略,包括存储桶策略、AWS Identity and Access Management(IAM)策略、访问控制列表(ACL)和 S3 接入点管理访问。

  比较分析

1. 存储桶策略
存储桶策略是基于资源的 AWS Identity and Access Management (IAM) 策略,可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联,附加到存储桶的权限适用于存储桶拥有者拥有的存储桶中所有对象。
存储桶策略根据策略中的元素允许或拒绝请求,包括请求者、S3 操作、资源以及请求的方面或条件;存储桶策略的大小限制为 20 KB。

2. AWS Identity and Access Management(IAM)策略
借助 AWS IAM全地控制对 Amazon S3 资源的访问,可以快捷地集中管理控制用户可访问哪些 Amazon S3 资源的权限,也可以方便地控制谁通过了身份验证(准许登录)并获得授权(具有相应权限)来使用资源。

3. 访问控制列表(ACL)
使用 ACL 向已授权的用户授予对单个存储桶和对象的读写权限。每个存储桶和对象都有一个作为子资源而附加的 ACL。ACL 定义了哪些 AWS 账户 或组将被授予访问权限以及访问的类型。ACL 是一种访问控制机制,它的出现要早于 IAM 策略。 S3 对象所有权是 Amazon S3 存储桶级别的设置,可以使用该设置来控制上传到存储桶的对象的所有权,以及禁用或启用 ACL。

4. S3 接入点管理访问
每个接入点都有自己的接入点策略。可以为每个接入点配置阻止公有访问设置。为了限制 Amazon S3 数据访问提供网络,可以将任何接入点配置为仅接受来自私有云(VPC)的请求。

  备考要点

1. 如果可行,尽可能使用存储桶策略、接入点策略、 IAM 用户策略进行访问控制
2. 大多数现代使用案例不再需要使用 ACL,建议将 ACL 保持为禁用状态,除非有需要单独控制每个对象的访问权限的特殊情况。