访问控制列表(AccessControlList,ACL)可以作用于桶和对象。每个桶和对象都有一个默认的ACL,ACL定义了用户或用户组对资源具有何种类型的访问权限。
使用ACL进行访问控制有如下限制:
- 桶和对象的所有者默认具有对该资源的完整权限,且无法删除和修改。
- 匿名用户无法成为资源的所有者,此时对象资源的所有者为存储空间的所有者。
- 每个资源的ACL最多可以设置100条授权信息。
ACL使用场景
桶ACL使用场景
- 当其他账号需要对桶进行读写时,可以使用桶ACL,将读写权限开放给该用户,该用户就可以通过XstorBrowser、API&SDK等方式访问到该桶。
对象ACL使用场景
- 当其他账号需要访问某个单独的对象时,桶策略就无法适用了,而对象ACL可以将该对象的权限授权给其他用户。
- 当需要使用对象链接直接访问对象时。一般使用对象ACL,通过对象链接的方式开放给所有用户进行读取操作。需要注意的是,修改对象权限后,需删除历史链接或重新获取链接地址,否则过期的链接会导致无法正常访问资源。
ACL权限类型
媒体存储支持的ACL权限类型如下表:
权限类型 | 作用于桶 | 作用于对象 |
---|---|---|
READ | 允许列出存储桶中的对象 | 允许读取对象数据和元数据 |
WRITE | 允许创建、覆盖、删除存储桶中的对象 | 无作用 |
READ_ACP | 允许获取存储桶的ACL信息 | 允许获取对象的ACL信息 |
WRITE_ACP | 允许修改存储桶的ACL | 允许修改对象的ACL |
FULL_CONTROL | 获得READ、WRITE、READ_ACP、WRITE_ACP权限 | 获得READ、READ_ACP、WRITE_ACP权限 |
桶ACL权限
权限 | 选项 | 描述 |
---|---|---|
公共权限 | 私有 | 只有主账号或被授权者可以访问该桶,其他用户没有权限访问该桶 |
公共权限 | 公共读 | 其他用户(包括匿名访问者)都可以对桶进行访问 |
公共权限 | 公共读写 | 其他用户(包括匿名访问者)都可以对桶进行读取、对象写入和对象删除操作 |
用户权限 | 数据读取 | 授权用户可以读取该桶 |
用户权限 | 数据写入 | 授权用户可以对该桶进行对象写入和对象删除操作 |
用户权限 | 权限读取 | 授权用户可以读取该桶的ACL权限配置信息 |
用户权限 | 权限写入 | 授权用户可以修改该桶的ACL权限配置策略 |
用户权限 | 完全控制 | 授权用户拥有该桶的全部权限 |
对象ACL权限
权限 | 选项 | 描述 |
---|---|---|
公共权限 | 私有 | 只有主账号或被授权者拥有该对象的读写权限,其他用户没有权限操作该对象 |
公共权限 | 公共读 | 其他用户(包括匿名访问者)都可以对对象进行访问 |
用户权限 | 数据读取 | 授权用户可以读取该对象 |
用户权限 | 数据写入 | 无作用 |
用户权限 | 权限读取 | 授权用户可以读取该对象的ACL权限配置信息 |
用户权限 | 权限写入 | 授权用户可以修改该对象的ACL权限配置信息 |
用户权限 | 完全控制 | 授权用户拥有该对象的全部权限 |
预设ACL
用户通过接口对天翼云媒体存储进行操作的时候,可以通过预设ACL来快捷地进行权限管理。
例如,在创建桶和上传对象的时候,在请求头部中的X-Amz-Acl字段中描述预设的ACL。预设ACL可参考下表。
预设ACL | 作用资源 | 描述 |
---|---|---|
private | 桶、对象 | 资源的默认权限,资源的所有者拥有FULL_CONTROL权限,其他用户对该资源不具有任何权限。 |
public-read | 桶、对象 | 资源的所有者拥有FULL_CONTROL权限,AllUsers用户组的用户(匿名用户)具有READ权限。 |
public-read-write | 桶、对象 | 资源的所有者拥有FULL_CONTROL权限,AllUsers用户组的用户(匿名用户)具有READ和WRITE权限。 |
bucket-owner-full-control | 桶、对象 | 资源的所有者和存储桶的所有者拥有FULL_CONTROL权限。 |
authenticated-read | 桶、对象 | 资源的所有者拥有FULL_CONTROL权限,同一资源池的用户具有READ权限。 |
bucket-owner-read | 桶、对象 | 资源的所有者拥有FULL_CONTROL权限,存储桶的所有者具有READ权限。 |
ACL参数说明
ACL使用XML格式的数据管理。参数包括:
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
AccessControlPolicy | 是 | Container | 配置权限策略的容器 | AccessControlList,Owner | |
AccessControlList | 是 | Container | 包含ACL 信息的容器 | Grant | |
Owner | 是 | Container | 包含存储桶拥有者ID 和显示名的容器 | ID,DisplayName | |
ID | 是 | String | 存储桶拥有者的ID | testuser1 | |
DisplayName | 是 | String | testuser1 | ||
Grant | 否 | Container | 一个关于被授予许可的用户的容器 | Grantee,Permission | |
Grantee | 有条件,如果Grant项存在,那么该项也需要存在 | Container | 一个关于被授予许可的用户的ID 和显示名的容器 | ID,DisplayName,URI | |
URI | 否 | String | 授权组的URI | ||
Permission | 有条件,如果Grant项存在,那么该项也需要存在 | String | 存储桶被授予的权限 | FULL_CONTROL |
ACL设置方式
设置桶ACL的设置方式如下:
操作途径 | 使用方式 |
---|---|
控制台 | 可参考:权限管理-存储桶ACL权限。 |
XstorBrowser | 可参考:配置桶ACL权限。 |
SDK | 请从SDK概览页面选择进入对应的开发指南查阅。 |
设置对象ACL的设置方式如下:
操作途径 | 使用方式 |
---|---|
控制台 | 上传对象是设置对象访问权限可参考:上传对象。 更改对象访问权限可参考:管理对象。 |
XstorBrowser | 可参考:编辑对象ACL。 |
SDK | 请从SDK概览页面选择进入对应的开发指南查阅。 |