存储桶策略、用户策略、存储桶 ACL 和对象 ACL 的差异点
用户策略、存储桶策略、存储桶 ACL 和对象 ACL 之间的差异点,如表1所示。
用户策略是基于用户的授权方式,存储桶策略、存储桶 ACL 和对象 ACL 是基于资源的授权方式。
用户策略和存储桶策略的授权均基于访问策略语言,权限控制的灵活程度更高,授权可以具体到每一个操作(action)且授权效果(effect)可以是 deny 或 allow;存储桶 ACL 和对象 ACL 均基于访问控制列表(ACL)进行授权,权限控制的灵活程度相对较低,使用更加简单,但只支持授予基本的读写权限。
用户策略不支持向匿名用户授权,存储桶策略、存储桶 ACL、对象 ACL 支持匿名用户授权。
用户策略在访问管理(Cloud Access Management,CAM)控制台配置,存储桶策略、存储桶 ACL、对象 ACL 在对象存储(Cloud Object Storage,COS)控制台配置。
对比项 | 用户策略 | 存储桶策略 | 存储桶 ACL | 对象 ACL | |
分类 | | 基于用户的授权 | 基于资源的授权 | 基于资源的授权 | 基于资源的授权 |
权限控制灵活程度 | | 灵活度高 | 灵活度高 | 灵活度低 | 灵活度低 |
控制台配置 | | CAM 控制台 | COS 控制台 | COS 控制台 | COS 控制台 |
访问控制元素 | 用户 | 本账号管理的所有 CAM 身份(子账号、角色等) | 子账号、主账号、匿名用户 | 子账号、其他主账号、匿名用户 | 子账号、其他主账号、匿名用户 |
| | | | | 子账号腾讯云服务、角色等 |
| | 跨账号授权需要先添加为协作者 | 直接支持跨账号授权 | | |
| 效果 | 允许+拒绝 | 允许+拒绝 | 仅允许 | 仅允许 |
| 资源 | 所有云资源,COS 所有存储桶、指定存储桶(前缀、对象等) | 指定存储桶(前缀、对象等) | 整个存储桶 | 指定对象 |
| 动作 | 每个具体动作 | 每个具体动作(不包括创建桶、列出桶) | 简化的读写权限 | 简化的读写权限 |
| 条件 | 支持 | 支持 | 不支持 | 不支持 |
如何选择合适的授权方式?
通过表1列出的差异点,可以明显看出不同授权方式的优劣,您可以根据自己的需要选择合适的授权方式。
但无论选择哪种方式,建议尽可能保持统一。随着存储桶策略、用户策略和 ACL 的增加,权限维护难度将越来越大。
何时选择 ACL?
注意
当您仅需要为存储桶和对象设置一些简单的访问权限或开放匿名访问时,可以选择 ACL。但在更多的情况下,推荐您优先使用存储桶策略或用户策略,灵活程度更高。
仅设置简单的访问权限。
在控制台快速设置访问权限。
需要将某个对象、目录或存储桶开放给所有互联网匿名用户访问,ACL 操作更为便捷。
每个账户下仅支持设置1000条 ACL,超过此上限请选择存储桶策略或用户策略替代。
何时选择用户策略?
当您关心用户能做什么时,推荐用户策略。可通过查找 CAM 用户,并检查其所属用户组的权限来了解用户能做什么。推荐场景有:
要配置 COS 服务级权限时,如创建桶、列举桶。
需要使用主账号下所有 COS 桶和对象。
要对主账号下的大量 CAM 用户授予相同权限。
何时选择存储桶策略?
当您关心谁能访问这个 COS 桶时,推荐使用桶策略。可通过查找桶,并检查桶策略来了解谁能访问。推荐场景有:
针对某个存储桶进行单独授权。
相比 ACL,授权具体到某个操作(action),授权效果(effect)需要为 deny 或 allow。
相比用户策略,存储桶策略支持跨账号授权及匿名用户授权。