ACL(访问控制列表)

最近更新时间:2019-01-14 10:10:53

KS3使用ACL(访问控制列表)方便用户管理存储空间(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子用户。

  • KS3账户 :在授权语句中,使用账户ID来表示。
    <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser"><ID>ID</ID><DisplayName>GranteesEmail</DisplayName>
    </Grantee>
  • 所有用户(包含匿名用户):在授权语句中,使用http://acs.ksyun.com/groups/global/AllUsers表示。
    <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权限 对存储空间(Bucket)授权 对文件(Object)授权
READ 允许被授权者列出存储空间中的文件 允许被授权者读取文件数据及其元数据
WRITE 允许被授权者创建、覆盖和删除存储空间(Bucket)中的任意文件 不适用
FULL_CONTROL 授予被授权者在存储空间(Bucket)上的READ、WRITE 权限 授予被授权者在文件上的READ权限

从上表得知,ACL仅允许授予有限数量的权限。其中的每个权限允许一个或多个 KS3 操作,例如:文件(Object)的读权限,包含了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控制台中存储空间权限和文件访问权限相对应。

  • 存储空间权限

提供存储空间(Bucket)的权限访问控制。目前存储空间(Bucket)有三种访问权限:private, public-read,public-read-write。

权限值 中文名称 权限对访问的限制
private 私有 空间所有者拥有所有的访问权限。其他人没有访问权限(默认)。
public-read 公开读 空间所有者拥有所有的访问权限,任何用户(包括匿名用户)都拥有列举空间下所有文件的权限
public-read-write 公开读写 任何用户(包括匿名用户)都可以向存储空间写入文件、删除文件、列举空间下所有文件的权限
  • 文件访问权限

提供文件(Object)的权限访问控制。目前文件(Object)有两种访问权限:private, public-read。

权限值 中文名称 权限对访问的限制
private 私有 文件所有者拥有访问权限。其他人没有访问权限(默认)。
public-read 公开 所有用户(包括匿名用户)拥有文件的访问权限
  • 设置

1,用户在调用接口创建存储空间、文件、修改权限时,使用x-kss-acl请求头来指定预设ACL权限。

2,用户也可以在KS3控制台通过用户界面,直接设置访问权限。如图:

20.png

21.png

如何设置ACL

  • 用户在创建存储空间或上传对象时:用户可以在请求头中通过设置以下的请求头来指定ACL。详情请见:PUT Bucket APIPUT Object API
名称 描述
x-kss-acl 设置预设ACL
x-kss-grant-read 为若干用户授予READ权限
x-kss-grant-write 为若干用户授予WRITE权限
x-kss-grant-full-control 为若干用户授予FULL_CONTROL权限。

金山云,开启您的云计算之旅

注册有礼