最近更新时间:2021-01-20 16:02:43
KS3使用ACL(Access Control List : 访问控制列表)方便用户管理存储空间(Bucket)和文件(Object)的访问权限,每个Bucket和Object都拥有一个ACL,ACL定义了哪些用户被授予访问权限以及访问的类型,KS3收到针对某个资源的请求后,将检查相应的ACL以验证请求者是否拥有所需的访问权限。 ACL使用XML格式来表示。
ACL示例:
<AccessControlPolicy>
<Owner>
<ID>Owner-User-Id</ID>
<DisplayName>Owner-User-Name</DisplayName>
</Owner>
<AccessControlList>
<Grant>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
<ID>User2-Id</ID>
<DisplayName>User2-Name</DisplayName>
</Grantee>
<Permission>READ</Permission>
</Grant>
...
</AccessControlList>
</AccessControlPolicy>
其中Owner元素指定资源有用者的账户ID和用户名,Grant元素指定被授权人和所授予的权限。
被授权者可以是KS3账户也可以是所有用户(包括匿名用户),但不能是IAM子用户。
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>ID</ID><DisplayName>GranteesEmail</DisplayName>
</Grantee>
<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group"><URI>http://acs.ksyun.com/groups/global/AllUsers</URI></Grantee>
下表列出了KS3在ACL中支持的权限集。注意,对于文件ACL和存储空间ACL,ACL权限集相同。但根据上下文(存储空间ACL或文件ACL),这些ACL权限授予对存储空间或对象操作的特定权限不一样。下表列出了许可并介绍了它们在Bucket和Object许可语境中的含义。
ACL权限 | 对存储空间授权 | 对文件授权 |
---|---|---|
READ | 允许被授权者列出存储空间中的文件 | 允许被授权者读取文件数据及其元数据 |
WRITE | 允许被授权者创建、覆盖和删除存储空间(Bucket)中的任意文件 | 不适用 |
FULL_CONTROL | 授予被授权者在存储空间(Bucket)上的READ、WRITE 权限 | 授予被授权者在文件上的READ权限 |
从上表得知,ACL仅允许授予有限数量的权限。其中的每个权限允许一个或多个 KS3 操作,例如:文件的读权限,包含了Head Object和GET Object等KS3操作。 下表显示每个ACL权限如何映射到相应的访问策略权限。ACL 主要用于授予基本读/写权限,这与文件系统权限类似。
ACL权限 | 在Bucket授予ACL权限时的相应访问策略 | 在Objetc授予ACL权限时的相应访问策略 |
---|---|---|
READ | List Bucket,List Multipart Upload | Get Object,Head Object, List Parts |
WRITE | Put Object, Post Object, Put Object Copy, Upload Part Copy,Delete Object,Initiate Multipart Upload, Upload Part, Complete Multipart Upload, Abort Multipart Upload | 不适用 |
FULL_CONTROL | 等同于授予READ和WRITE ACL权限 | 等同于授予READ ACL权限。 |
KS3支持一系列预定义的授权,称为预设ACL。每个预设ACL都有一组预定义的被授权者和权限。这些预设ACL与KS3控制台中存储空间权限和文件访问权限相对应。
提供存储空间的权限访问控制。目前存储空间有三种访问权限:private, public-read,public-read-write。
权限值 | 中文名称 | 权限对访问的限制 |
---|---|---|
private | 私有 | 空间所有者拥有所有的访问权限。其他人没有访问权限(默认) |
public-read | 公开读 | 空间所有者拥有所有的访问权限,任何用户(包括匿名用户)都拥有列举空间下所有文件的权限 |
public-read-write | 公开读写 | 任何用户(包括匿名用户)都可以向存储空间写入文件、删除文件、列举空间下所有文件的权限 |
提供文件的权限访问控制。目前文件有两种访问权限:private, public-read。
权限值 | 中文名称 | 权限对访问的限制 |
---|---|---|
private | 私有 | 文件所有者拥有访问权限。其他人没有访问权限(默认)。 |
public-read | 公开 | 所有用户(包括匿名用户)拥有文件的访问权限 |
1,用户在调用接口创建存储空间、文件、修改权限时,使用x-kss-acl请求头来指定预设ACL权限。
2,用户也可以在KS3控制台通过用户界面,点击 XX桶 > 空间设置 > 基础设置 直接设置访问权限。如图:
名称 | 描述 |
---|---|
x-kss-acl | 设置预设ACL |
x-kss-grant-read | 为若干用户授予READ权限 |
x-kss-grant-write | 为若干用户授予WRITE权限 |
x-kss-grant-full-control | 为若干用户授予FULL_CONTROL权限。 |