访问控制列表 ACL(Access Control List)是 TOS 提供的指定被授权对象和所授予权限的授权列表。
ACL 是基于账号的读写访问控制,桶或对象的所有者拥有该资源的完全控制权限。
ACL 的权限控制粒度不如桶策略和 IAM 权限,建议您使用桶策略和 IAM 权限进行访问控制。
ACL 被授权者分为特定用户和预定义组两类,说明如下:
特定用户:IAM 用户。当您需要为不同的 IAM 用户授予不同的权限时,可以使用桶策略。
预定义组如下表所示。
组名 | 描述 |
---|---|
AuthenticatedUsers | 所有已签名(经身份认证)的用户。 |
AllUsers | 任何(经身份认证或匿名)用户。 |
TOS 支持的 ACL 权限如下表所示。
权限 | 桶 ACL | 对象 ACL |
---|---|---|
READ | 允许被授权者获取桶元数据,获取对象的元数据,下载对象,列举桶内对象和分片任务。 | 允许被授权者读取对象数据及其元数据。 |
READ_NON_LIST | 允许被授权者获取桶元数据,获取对象的元数据,下载对象。 | 不适用。 |
READ_ACP | 允许被授权者读取存储桶的 ACL。 | 允许被授权者读取对象的 ACL。 |
WRITE | 允许被授权者创建、覆盖和删除桶中的任意对象,初始化分片任务,上传分片,合并分片,取消分片任务。 | 不适用。 |
WRITE_ACP | 允许被授权者修改或删除存储桶的 ACL。 | 允许被授权者修改对象的 ACL。 |
FULL_CONTROL | 允许被授权者在存储桶上的 READ、WRITE、READ_ACP 和 WRITE_ACP 权限。 | 允许被授权者在对象上的 READ、READ_ACP 和 WRITE_ACP 权限。 |
注意
如果您的存储桶设置了对象公共读权限,存储桶会直接暴露在公网,任何人均可对桶内文件进行读取,同时产生流量费用,存在财产损失和数据泄露风险,建议您选择私有权限。
您可以通过 x-tos-acl
头域,选择预定义的权限,预定义权限说明如下。
预定义权限 | 描述 |
---|---|
private | 桶或对象的所有者拥有完全控制权限,其他人没有权限。 |
public-read |
|
public-read-write |
|
authenticated-read |
|
bucket-owner-read | 在对象上授权:桶和对象的所有者,拥有对象的 READ 权限。 |
bucket-owner-full-control | 在对象上授权:桶和对象的所有者,拥有对象的完全控制权限。 |
bucket-owner-entrusted | 在对象上授权:当对象所有者不是桶所有者时,可以允许桶所有者具有此对象的所有控制权,同时可以通过桶策略授权允许或禁止其他账号或用户访问此对象。 |
default | 在对象上授权,对象将继承桶 ACL 的权限,即对象的 ACL 策略将和桶 ACL 策略保持一致。 |
您可以通过以下头域,授予指定用户相应权限,权限说明如下所示。
头域 | 描述 |
---|---|
x-tos-grant-read | 被授权者拥有 READ 权限。 |
x-tos-grant-read-acp | 被授权者拥有 READ_ACP 权限。 |
x-tos-grant-read-non-list |
|
x-tos-grant-write | 被授权者拥有 WRITE 权限。 |
x-tos-grant-write-acp | 被授权者拥有 WRITE_ACP 权限。 |
x-tos-grant-full-control | 被授权者拥有 FULL_CONTROL 权限。 |
TOS 支持设置对象的访问控制策略为继承桶,即对象的 ACL 策略和桶 ACL 策略保持一致。以下介绍对象继承桶的 READ、WRITE 等 ACL 后的权限。
权限 | 桶 ACL | 对象继承桶 ACL |
---|---|---|
READ | 允许被授权者获取桶元数据,获取对象元数据,下载对象,列举桶内对象和分片任务。 | 允许被授权者读取对象数据及其元数据。 |
READ_NON_LIST | 允许被授权者获取桶元数据,访问桶内对象。 | 允许被授权者读取对象数据及其元数据。 |
WRITE | 允许被授权者创建、覆盖和删除桶中的任意对象,初始化分片任务,上传分片,合并分片,取消分片任务。 | 由于对象不存在写接口,继承桶的 WRITE ACL 后,被授权者仍旧没有对象的权限,仅桶或对象的所有者拥有完全控制权限。 |
READ_ACP | 允许被授权者读取存储桶的 ACL。 | 允许被授权者读取对象的 ACL。 |
WRITE_ACP | 允许被授权者修改或删除存储桶的 ACL。 | 允许被授权者修改对象的 ACL。 |
FULL_CONTROL | 允许被授权者在存储桶上的 READ、WRITE、READ_ACP 和 WRITE_ACP 权限。 | 允许被授权者在对象上的 READ、READ_ACP 和 WRITE_ACP 权限。 |