AWS S3 - ACL 与 CORS 配置与 bucket/object 权限
AWS S3 - ACL vs. CORS configuration vs. bucket/object permissions
似乎在配置 S3 的访问设置时,访问控制列表 (ACL)、CORS 配置以及每个存储桶和对象的权限都会发挥作用 buckets/objects。
谁能解释一下它们之间的区别以及它们如何协同工作?
S3 存储桶策略
它们是配置 S3 存储桶访问的推荐方式。策略是由语句组成的 JSON 文档。在每个语句中,您可以 Allow 或 Deny 对 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。
似乎在配置 S3 的访问设置时,访问控制列表 (ACL)、CORS 配置以及每个存储桶和对象的权限都会发挥作用 buckets/objects。
谁能解释一下它们之间的区别以及它们如何协同工作?
S3 存储桶策略
它们是配置 S3 存储桶访问的推荐方式。策略是由语句组成的 JSON 文档。在每个语句中,您可以 Allow 或 Deny 对 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。