更新时间:2025-08-22 GMT+08:00

设置对象ACL

功能介绍

OBS支持对对象的操作进行权限控制。默认情况下,只有对象的创建者才有该对象的读写权限。用户也可以设置其他的访问策略,比如对一个对象可以设置公共访问策略,允许所有人对其都有读权限。SSE-KMS方式加密的对象即使设置了ACL,跨租户也不生效。

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.myhuaweicloud.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

String

参数解释:

对象的版本号。表示更改指定版本对象的ACL。如何获取对象的版本ID请参见列举桶内对象

约束限制:

不涉及

取值范围:

长度为32的字符串。

默认取值:

不涉及,如果不设置则默认修改最新版本的对象。

请求消息头

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

请求消息元素

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

表2 请求消息元素

参数名称

是否必选

参数类型

描述

AccessControlList

XML

参数解释:

访问控制列表,AccessControlList是Grant、 Grantee、Permission的父节点。

约束限制:

不涉及

取值范围:

请详见表3

默认取值:

不涉及

Owner

XML

参数解释:

桶的所有者信息,Owner是ID的父节点。

约束限制:

不涉及

取值范围:

请详见表4

默认取值:

不涉及

Canned

String

参数解释:

向所有人授予权限。

约束限制:

不涉及

取值范围:

Everyone

默认取值:

不涉及

表3 AccessControlList参数说明

参数名称

是否必选

参数类型

描述

Grant

XML

参数解释:

用于标记用户及用户的权限,Grant是Grantee、Delivered的父节点。

约束限制:

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

取值范围:

请详见表5

默认取值:

不涉及

Grantee

XML

参数解释:

记录被授权用户信息。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

Permission

String

参数解释:

授予对象的权限。

约束限制:

不涉及

取值范围:

  • READ:允许被授权者获取对象内容和元数据。
  • READ_ACP:允许被授权者读取对象ACL属性。
  • WRITE_ACP:允许被授权者更新对象ACL属性。
  • FULL_CONTROL:允许被授予者对象的READ、READ_ACP和WRITE_ACP权限。

默认取值:

不涉及

表4 Owner参数说明

参数名称

是否必选

参数类型

描述

ID

String

参数解释:

被授权用户的租户ID。

约束限制:

不涉及

取值范围:

如何获取用户的DomainId请详见获取账号、IAM用户、项目、用户组、区域、委托的名称和ID

默认取值:

不涉及

表5 Grant参数说明

参数名称

是否必选

参数类型

描述

Grantee

XML

参数解释:

记录被授权用户信息。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

Delivered

Boolean

参数解释:

对象ACL是否继承桶的ACL。

约束限制:

不涉及

取值范围:

  • true:对象继承桶ACL
  • false:对象不继承桶ACL

默认取值:

true

响应消息样式

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

响应消息头

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

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

表6 附加响应消息头

参数名称

参数类型

描述

x-obs-version-id

String

参数解释:

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

取值范围:

长度为32的字符串。

响应消息元素

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

错误响应消息

该请求的响应无特殊错误,所有错误已经包含在表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.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 04:42:34 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:8xAODun1ofjkwHm8YhtN0QEcy9M=
Content-Length: 727

<AccessControlPolicy xmlns="http://obs.ap-southeast-1.myhuaweicloud.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

请求示例:已启用版本控制

PUT /object01?acl&versionId=G001118A6803675AFFFFD3043F7F91D0 HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: WED, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
 
<AccessControlPolicy  xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
    <Owner>
        <ID>d029cb567d46458sp0x75800575ee4cf</ID>
    </Owner>
    <Delivered>false</Delivered>
    <AccessControlList>
        <Grant>
            <Grantee>
                <ID>f98sx63gg849422e8f330af1349c588f</ID>
            </Grantee>
            <Permission>FULL_CONTROL</Permission>
        </Grant>
        <Grant>
            <Grantee>
                <ID>fa558a82a84946sn98u30af195as3hi5</ID>
            </Grantee>
            <Permission>READ</Permission>
        </Grant>
        <Grant>
            <Grantee>
                <Canned>Everyone</Canned>
            </Grantee>
            <Permission>READ</Permission>
        </Grant>
    </AccessControlList>
</AccessControlPolicy>

响应示例:已启用版本控制

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