AWS S3 - ACL 与 CORS 配置与 bucket/object 权限

AWS S3 - ACL vs. CORS configuration vs. bucket/object permissions

似乎在配置 S3 的访问设置时,访问控制列表 (ACL)、CORS 配置以及每个存储桶和对象的权限都会发挥作用 buckets/objects。

谁能解释一下它们之间的区别以及它们如何协同工作?

S3 存储桶策略

它们是配置 S3 存储桶访问的推荐方式。策略是由语句组成的 JSON 文档。在每个语句中,您可以 AllowDeny 对 Principal(受政策影响的用户)的 action ).

访问控制列表

被认为是遗留的,它们早于存储桶策略的实施,但它们允许在文件级别设置权限。例如,如果您想限制对存储桶中特定文件的访问,而不是整个存储桶,则需要使用 ACL。

CORS 配置

这是一个 XML 文件,用于配置 CORS headers。您可以选择仅允许 http 某些方法(例如 GET 和 POST)或所有方法。

More details in the AWS Documentation.

有关 CORS 的更多信息:What is CORS?

IAM 政策

它们类似于存储桶策略,不同之处在于您将它们附加到用户、组或角色,存储桶除外。

冲突

如果 ACL/IAM policies/Bucket 策略之间发生冲突,例如,如果 Allow 和 Deny 都应用于同一资源和用户,则 Deny 总是获胜。

解析权限的算法基本上是: - 如果有拒绝,拒绝访问 - 如果有允许,允许访问 - 如果什么都没有,默认拒绝

最佳实践

应用最小权限原则(除非需要,否则不允许访问)。 不建议将策略直接附加到用户,而是创建一个附加权限的组,然后将用户添加到组中。 例如,您可以拥有一个对 S3 具有完全访问权限的组 Developer,一个具有 read-only 访问权限的 Finance 组。 如果您需要限制对存储桶的访问,请使用存储桶策略。 仅当您需要配置对单个文件的访问权限时才使用 ACL。