PUT Bucket Policy
该接口用于设置 Bucket 的访问策略。QingStor 对象存储定义只有 Bucket 的所有者才能调用该API。
请求语法
PUT /?policy HTTP/1.1
Host: <bucket-name>.<zone-id>.qsstor.com
Date: <date>
Authorization: <authorization-string>
{
<statement>: <bucket policy>
}
请求参数
无。
请求头
此接口仅包含公共请求头。关于公共请求头的更多信息,请参见公共请求头。
请求消息体
参数说明
调用该 API 需携带如请求语法中的 Json 消息体。该消息体各字段说明如下:
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
statement |
List |
访问策略,字典类型。访问策略的匹配规则根据规则的定义顺序依次生效,如:一个请求匹配上两条 |
是 |
id |
String |
策略的标识符,可用来描述策略的用途。可为任意字符,且长度不超过 100。在一个 Bucket Policy 中,策略的标识符必须唯一。 |
是 |
user |
String or List |
策略所应用到的用户,其值可为字符串,也可为列表。规则如下:
|
是 |
effect |
String |
当策略成功匹配用户的请求时,是否允许该请求。可选值为:
|
是 |
action |
String or List |
资源所支持操作。 其值可为列表或字符串。包括 Bucket action 与 Object action。 规则如下:
|
是 |
resource |
List |
允许或拒绝权限的对象资源。必须为列表或字符串。总长度不能超过 2048 个字符。
|
是 |
condition |
dict |
允许策略生效的条件。可缺省。总长度不能超过 2048 个字符。详细介绍请参见 Condition 说明。 |
是 |
Condition 说明
Condition
字段支持字符串条件运算符和 Null 条件运算符。其基本格式如下:
"condition": {
"条件运算符" : {
"被匹配元素": "匹配值"
}
}
例如:
"condition": {
"string_like": {"Referer": "*.example1.com"},
"string_not_like": {"Referer": "*.example2.com"},
"ip_address": {"source_ip": ["172.16.0.0/24"]}
}
一个 Policy Statement 中,Condition 如果包含了多个条件,匹配方式为 与条件
关系。
字符串条件运算符
Name | Type | Description |
---|---|---|
string_like |
Dict |
字符串通配,目前仅支持 |
string_not_like |
Dict |
字符串非通配,目前仅支持 |
IP 地址条件运算符
Name | Type | Description |
---|---|---|
ip_address |
Dict |
检查 IP 地址是否在该网段列表内。如果是,返回 True;否则,返回 False。 |
not_ip_address |
Dict |
检查 IP 地址是否在该网段列表内。如果是,返回 False;否则,返回 True。 |
Null 条件运算符
Name | Type | Description |
---|---|---|
is_null |
Dict |
判断被匹配元素是否为空值。如果为空,返回被匹配元素的值;否则,返回被匹配元素的相反值。被匹配元素的有效值为
|
被匹配元素
Name | Type | 条件运算符 | Description |
---|---|---|---|
Referer |
String or List |
字符串条件运算符、Null 条件运算符 |
HTTP 请求头 Referer 字段的匹配值,例如, |
source_ip |
List |
IP 地址条件运算符 |
HTTP 请求的源地址的匹配值,以 CIDR 格式表示,例如, |
响应头
此接口仅包含公共响应头。关于公共响应头的更多信息,请参见公共响应头。
错误码
错误码 | 错误描述 | HTTP 状态码 |
---|---|---|
OK |
成功设置 Bucket 策略 |
200 |
其他错误码可参考错误码列表。
示例
请求示例
PUT /?policy HTTP/1.1
Host: mybucket.pek3a.qsstor.com
Date: Sun, 16 Aug 2015 09:05:00 GMT
Content-Length: 300
Authorization: authorization string
{
"statement": [
{
"id": "allow certain site to get objects",
"user": "*",
"action": ["get_object"],
"effect": "allow",
"resource": ["mybucket/*"],
"condition": {
"string_like": {
"Referer": [
"*.example1.com",
"*.example2.com"
]
}
}
},
{
"id": "allow user-henry to list objects and create objects",
"user": "user-henry",
"action": ["list_objects", "create_object"],
"resource": ["mybucket/*"],
"effect": "allow"
}
]
}
响应示例
HTTP/1.1 200 OK
Server: QingStor
Date: Sun, 16 Aug 2015 09:05:02 GMT
Content-Length: 0
Connection: close
x-qs-request-id: aa08cf7a43f611e5886952542e6ce14b