更新时间:2024-09-29 GMT+08:00

设置桶ACL

功能介绍

OBS支持对桶操作进行权限控制。默认情况下,只有桶的创建者才有该桶的读写权限。用户也可以设置其他的访问策略,比如对一个桶可以设置公共访问策略,允许所有人对其都有读权限。

OBS用户在创建桶时可以设置权限控制策略,也可以通过ACL操作API接口对已存在的桶更改或者获取ACL(access control list) 。一个桶的ACL最多支持100条Grant授权。PUT接口为幂等的覆盖写语意,新设置的桶ACL将覆盖原有的桶ACL,如果需要修改或者删除某条ACL重新PUT一个新的桶ACL即可。

使用桶ACL进行权限控制请参考《对象存储服务权限配置指南》的OBS权限控制概述章节。

请求消息样式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
PUT /?acl HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Date: date
Authorization: authorization
Content-Type: application/xml 
Content-Length: length

<AccessControlPolicy> 
    <Owner> 
        <ID>ID</ID> 
    </Owner> 
    <AccessControlList> 
        <Grant> 
            <Grantee>
               <ID>domainId</ID>
            </Grantee> 
            <Permission>permission</Permission> 
            <Delivered>false</Delivered>
        </Grant>
    </AccessControlList> 
</AccessControlPolicy>

请求消息参数

该操作请求不带消息参数。

请求消息头

使用者可以使用头域设置的方式来更改桶的ACL,每一种头域设置的ACL都有一套自己预先定义好的被授权用户以及相应权限,通过头域设置的方式授予访问权限,使用者必须添加以下的头域并且指定取值。

表1 头域方式设置桶ACL

名称

类型

是否必选

描述

x-obs-acl

String

参数解释:

通过canned ACL的方式来设置桶的ACL。

约束限制:

取值范围:

  • private
  • public-read
  • public-read-write
  • public-read-delivered
  • public-read-write-delivered

各策略详细说明见ACL章节的“使用头域设置ACL”

默认取值:

private

请求消息元素

更改桶的ACL请求需要在消息元素中带上ACL信息,元素的具体含义如表3所示。

表2 附加请求消息元素

元素名称

元素类型

是否必选

描述

Owner

XML

参数解释:

桶的所有者信息,包含ID。

约束限制:

取值范围:

默认取值:

ID

String

参数解释:

被授权用户的租户ID。

约束限制:

取值范围:

默认取值:

Grant

XML

参数解释:

用于标记用户及用户的权限。

约束限制:

单个桶的ACL,Grant元素不能超过100个。

取值范围:

默认取值:

Grantee

XML

参数解释:

记录用户信息。

约束限制

取值范围:

默认取值:

Canned

String

参数解释:

向所有人授予权限。

约束限制:

取值范围:

Everyone

默认取值:

Delivered

Boolean

参数解释:

桶的ACL是否向桶内对象传递。作用于桶内所有对象。

约束限制:

取值范围:

  • true:向桶内对象传递
  • false:不向桶内对象传递

默认取值:

false

Permission

String

参数解释:

授予的权限。详情参见桶ACL访问权限

约束限制:

取值范围:

  • READ
  • READ_ACP
  • WRITE
  • WRITE_ACP
  • FULL_CONTROL

默认取值:

AccessControlList

XML

参数解释:

访问控制列表,包含Grant、 Grantee、Permission三个元素。

约束限制:

取值范围:

默认取值:

响应消息样式

1
2
3
HTTP/1.1 status_code
Date: date
Content-Length: length

响应消息头

该请求的响应消息使用公共消息头,具体请参考表1

响应消息元素

该请求的响应消息中不带有响应元素。

错误响应消息

无特殊错误,所有错误已经包含在表2中。

请求示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
PUT /?acl HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 02:37:22 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
Content-Length: 727

<AccessControlPolicy xmlns="http://obs.ap-southeast-1.myhuaweicloud.com/doc/2015-06-30/">
  
  <Owner> 
    <ID>b4bf1b36d9ca43d984fbcb9491b6fce9</ID> 
  </Owner>  
  <AccessControlList> 
    <Grant> 
      <Grantee> 
        <ID>b4bf1b36d9ca43d984fbcb9491b6fce9</ID> 
      </Grantee>  
      <Permission>FULL_CONTROL</Permission> 
    </Grant>  
    <Grant> 
      <Grantee> 
        <ID>783fc6652cf246c096ea836694f71855</ID> 
      </Grantee>  
      <Permission>READ</Permission>  
      <Delivered>false</Delivered> 
    </Grant>  
    <Grant> 
      <Grantee> 
        <Canned>Everyone</Canned> 
      </Grantee>  
      <Permission>READ_ACP</Permission> 
    </Grant> 
  </AccessControlList> 
</AccessControlPolicy>

响应示例

1
2
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF2600000164361F2954B4D063164704
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT78HTIBuhe0FbtSptrb/akwELtwyPKs
Date: WED, 01 Jul 2015 02:37:22 GMT
Content-Length: 0

请求示例:使用头域方式指定的访问权限

PUT /?acl HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
x-obs-acl: private
Date: WED, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml

响应示例:使用头域方式指定的访问权限

x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSmpL2dv6zZLM2HmUrXKTAi258MPqmrp
x-obs-request-id: 0000018A2A73AF59D3085C8F8ABF0C65
Server: OBS
Content-Length: 0
Date: WED, 01 Jul 2015 02:37:22 GMT