AWS S3 - ACL与CORS配置与存储桶/对象权限

lsi*_*ons 7 acl amazon-s3 amazon-web-services cors

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

有人可以解释这些以及它们如何协同工作之间的区别吗?

Ant*_*iad 5

S3 存储桶策略

它们是配置 S3 存储桶访问权限的推荐方式。策略是由语句组成的 JSON 文档。在每条语句你要么允许拒绝动作,以委托人(受政策影响的用户)。

访问控制列表

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

CORS 配置

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

AWS 文档中的更多详细信息

有关 CORS 的更多信息:什么是 CORS?.

IAM 政策

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

冲突

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

解决权限的算法基本上是: - 如果有拒绝,拒绝访问 - 如果有允许,允许访问 - 如果没有任何内容,默认情况下拒绝

最佳实践

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