更新时间:2024-04-15 GMT+08:00

设置对象ACL

功能介绍

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

OBS用户在上传对象时可以设置权限控制策略,也可以通过ACL操作API接口对已存在的对象更改或者获取ACL(access control list) 。一个对象的ACL最多支持100条Grant授权。

本节将介绍如何更改对象ACL,改变对象的访问权限。

多版本

默认情况下,更改的是最新版本的对象ACL。要设置指定版本的对象ACL,请求可以带参数versionId。

请求消息格式

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
PUT /ObjectName?acl HTTP/1.1 
Host: bucketname.obs.region.example.com
Date: date
Authorization: authorization

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

请求消息参数

请求参数说明如表1所示。

表1 请求消息参数

参数名称

描述

是否必选

versionId

对象的版本号。标示更改指定版本的对象ACL。

类型:String

请求消息头

该请求使用公共请求消息头,具体参见表3

请求消息元素

该请求消息通过带消息元素来传递对象的ACL信息,元素的意义如表2所示。

表2 请求消息元素

元素名称

描述

是否必选

Owner

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

类型:XML

ID

用户DomainId。

类型:String

Grant

用于标记用户及用户的权限。单个对象的ACL,Grant元素不能超过100个。

类型:XML

Grantee

记录用户信息。

类型:XML

Canned

向所有人授予权限。

取值范围:Everyone。

类型:String

Delivered

对象ACL是否继承桶的ACL。

类型:Boolean

默认:true。

Permission

授予权限。

取值范围:READ | READ_ACP | WRITE_ACP | FULL_CONTROL

类型:String

AccessControlList

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

类型:XML

响应消息样式

1
2
3
HTTP/1.1 status_code
Content-Length: length
Content-Type: application/xml

响应消息头

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

除公共响应消息头之外,还可能使用如表3中的消息头。

表3 附加响应消息头

消息头名称

描述

x-obs-version-id

被更改ACL的对象的版本号。

类型:String

响应消息元素

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

错误响应消息

该请求的响应无特殊错误,所有错误已经包含在表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
PUT /obj2?acl HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.example.com
Accept: */*
Date: WED, 01 Jul 2015 04:42:34 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:8xAODun1ofjkwHm8YhtN0QEcy9M=
Content-Length: 727

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

响应示例

1
2
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3F0FD2A03D2D30B0542
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCTjCqTmsA1XRpIrmrJdvcEWvZyjbztdd
Date: WED, 01 Jul 2015 04:42:34 GMT
Content-Length: 0