QingCloud 文档 – Bucket 策略(Policy) - kaiyun官方网站下载手机网页 /storage/object-storage/api/bucket/policy/ Recent content in Bucket 策略(Policy) on QingCloud 文档 Hugo -- gohugo.io Storage: Bucket Policy Condition /storage/object-storage/api/bucket/policy/policy_condition/ Mon, 01 Jan 0001 00:00:00 +0000 /storage/object-storage/api/bucket/policy/policy_condition/ <p>该接口用于设置 Bucket 的访问策略(Policy)生效的条件。支持 <strong>字符串条件运算符</strong>,和 <strong>Null 条件运算符</strong>。</p> <p>condition的基本格式</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;condition&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;条件运算符&#34;</span> : { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;被匹配元素&#34;</span>: <span style="color:#e6db74">&#34;匹配值&#34;</span> </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><p>例如:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;condition&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;string_like&#34;</span>: {<span style="color:#f92672">&#34;Referer&#34;</span>: <span style="color:#e6db74">&#34;*.example1.com&#34;</span>}, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;string_not_like&#34;</span>: {<span style="color:#f92672">&#34;Referer&#34;</span>: <span style="color:#e6db74">&#34;*.example2.com&#34;</span>}, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;ip_address&#34;</span>: {<span style="color:#f92672">&#34;source_ip&#34;</span>: [<span style="color:#e6db74">&#34;172.16.0.0/24&#34;</span>]} </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><p>一个 policy statement 中,condition 如果包含了多个条件,匹配方式为&quot;与条件&quot;关系。</p> <p><strong>字符串条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>string_like</td> <td>Dict</td> <td>字符串通配(仅支持 * )。如果匹配,返回 True; 否则,返回 False。若为 list, 则匹配任意一个就返回 True。</td> </tr> <tr> <td>string_not_like</td> <td>Dict</td> <td>字符串非通配(仅支持 * )。如果匹配,返回 False; 否则,返回 True。若为 list, 则都不匹配才返回 True。</td> </tr> </tbody> </table> <p><strong>IP 地址条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>ip_address</td> <td>Dict</td> <td>检查 IP 地址是否在该网段列表内。如果是,返回 True; 否则,返回 False。</td> </tr> <tr> <td>not_ip_address</td> <td>Dict</td> <td>检查 IP 地址是否在该网段列表内。如果是,返回 False; 否则,返回 True。</td> </tr> </tbody> </table> <p><strong>Null 条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>is_null</td> <td>Dict</td> <td>判断被匹配元素是否为空值。如果为空,返回被匹配元素的值; 否则,返回被 匹配元素的相反值。被匹配元素的有效值为 <code>True</code> 或 <code>False</code>。例如, <code>&quot;is_null&quot;: {&quot;Referer&quot;: true}</code> 意为匹配 Referer 为空值的请求。 <code>&quot;is_null&quot;: {&quot;Referer&quot;: false}</code> 意为匹配 Referer 非空的请求。</td> </tr> </tbody> </table> <p><strong>被匹配元素</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>条件运算符</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>Referer</td> <td>String or List</td> <td>字符串条件运算符、Null 条件运算符</td> <td>HTTP 请求头 Referer 字段的匹配值,例如, <code>&quot;string_not_like&quot;: {&quot;Referer&quot;: [&quot;_.example1.com&quot;, &quot;_.example2.com&quot;]}</code></td> </tr> <tr> <td>source_ip</td> <td>List</td> <td>IP 地址条件运算符</td> <td>HTTP 请求的源地址的匹配值,以 <a href="http://www.rfc-editor.org/rfc/rfc4632.txt">CIDR</a> 格式表示,例如, <code>&quot;ip_address&quot;: {&quot;source_ip&quot;: [&quot;172.16.0.0/24&quot;, &quot;172.17.0.25/32&quot;]}</code></td> </tr> </tbody> </table> Storage: DELETE Bucket Policy /storage/object-storage/api/bucket/policy/delete_policy/ Mon, 01 Jan 0001 00:00:00 +0000 /storage/object-storage/api/bucket/policy/delete_policy/ <p>该接口用于删除 Bucket 的访问策略相关设置。QingStor 对象存储定义只有 Bucket 的所有者才能调用该 API。</p> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">DELETE</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>无。</p> <h2 id="请求头">请求头</h2> <p>此接口仅包含公共请求头。关于公共请求头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>此接口仅包含公共响应头。关于公共响应头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <table> <thead> <tr> <th>错误码</th> <th>错误描述</th> <th>HTTP 状态码</th> </tr> </thead> <tbody> <tr> <td>OK</td> <td>成功删除 Bucket 的访问策略(Policy)相关配置</td> <td>204</td> </tr> </tbody> </table> <p>其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">DELETE</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:00 GMT</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">204</span> <span style="color:#a6e22e">NoContent</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:02 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">aa08cf7a43f611e5886952542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: GET Bucket Policy /storage/object-storage/api/bucket/policy/get_policy/ Mon, 01 Jan 0001 00:00:00 +0000 /storage/object-storage/api/bucket/policy/get_policy/ <p>该接口用于获取 Bucket 的访问策略相关设置。QingStor 对象存储定义只有 Bucket 的所有者才能调用该 API。</p> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>无。</p> <h2 id="请求头">请求头</h2> <p>此接口仅包含公共请求头。关于公共请求头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h2 id="请求消息体">请求消息体</h2> <p>无。</p> <h2 id="响应头">响应头</h2> <p>此接口仅包含公共响应头。关于公共响应头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="响应消息体">响应消息体</h2> <p>成功调用该 API 后,会返回一个 Json 消息体,其字段说明如下:</p> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>说明</th> </tr> </thead> <tbody> <tr> <td>statement</td> <td>Dict</td> <td>指定 Bucket 的访问策略</td> </tr> </tbody> </table> <h2 id="错误码">错误码</h2> <table> <thead> <tr> <th>错误码</th> <th>错误描述</th> <th>HTTP 状态码</th> </tr> </thead> <tbody> <tr> <td>OK</td> <td>成功获取 Bucket 的访问策略相关配置</td> <td>200</td> </tr> </tbody> </table> <p>其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">GET</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:00 GMT</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">200</span> <span style="color:#a6e22e">OK</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:02 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">300</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">aa08cf7a43f611e5886952542e6ce14b</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> &#34;statement&#34;: [ </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> &#34;id&#34;: &#34;allow everyone to get and create objects&#34;, </span></span><span style="display:flex;"><span> &#34;user&#34;: &#34;*&#34;, </span></span><span style="display:flex;"><span> &#34;action&#34;: [&#34;get_object&#34;, &#34;create_object&#34;], </span></span><span style="display:flex;"><span> &#34;effect&#34;: &#34;allow&#34;, </span></span><span style="display:flex;"><span> &#34;resource&#34;: [&#34;mybucket/*&#34;], </span></span><span style="display:flex;"><span> &#34;condition&#34;:{ </span></span><span style="display:flex;"><span> &#34;string_like&#34;: { </span></span><span style="display:flex;"><span> &#34;Referer&#34;: [&#34;*.example1.com&#34;, &#34;*.example2.com&#34;] </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> }, </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> &#34;id&#34;: &#34;allow everyone to head bucket&#34;, </span></span><span style="display:flex;"><span> &#34;user&#34;: &#34;*&#34;, </span></span><span style="display:flex;"><span> &#34;action&#34;: &#34;head_bucket&#34;, </span></span><span style="display:flex;"><span> &#34;effect&#34;: &#34;allow&#34;, </span></span><span style="display:flex;"><span> &#34;condition&#34;:{ </span></span><span style="display:flex;"><span> &#34;string_like&#34;: { </span></span><span style="display:flex;"><span> &#34;Referer&#34;: [&#34;*.example3.com&#34;, &#34;*.example4.com&#34;] </span></span><span style="display:flex;"><span> }, </span></span><span style="display:flex;"><span> &#34;string_not_like&#34;: { </span></span><span style="display:flex;"><span> &#34;Referer&#34;: [&#34;*.service.example3.com&#34;] </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> ] </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p> Storage: PUT Bucket Policy /storage/object-storage/api/bucket/policy/put_policy/ Mon, 01 Jan 0001 00:00:00 +0000 /storage/object-storage/api/bucket/policy/put_policy/ <p>该接口用于设置 Bucket 的访问策略。QingStor 对象存储定义只有 Bucket 的所有者才能调用该API。</p> <h2 id="请求语法">请求语法</h2> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;bucket-name&gt;.&lt;zone-id&gt;.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;date&gt;</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">&lt;authorization-string&gt;</span> </span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">{</span> </span></span><span style="display:flex;"><span> &lt;statement&gt;: &lt;bucket policy&gt; </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h2 id="请求参数">请求参数</h2> <p>无。</p> <h2 id="请求头">请求头</h2> <p>此接口仅包含公共请求头。关于公共请求头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E8%AF%B7%E6%B1%82%E5%A4%B4%E5%AD%97%E6%AE%B5-request-header">公共请求头</a>。</p> <h2 id="请求消息体">请求消息体</h2> <h3 id="参数说明">参数说明</h3> <p>调用该 API 需携带如 <a href="#%E8%AF%B7%E6%B1%82%E8%AF%AD%E6%B3%95">请求语法</a> 中的 Json 消息体。该消息体各字段说明如下:</p> <table> <thead> <tr> <th>名称</th> <th>类型</th> <th>说明</th> <th>是否必须</th> </tr> </thead> <tbody> <tr> <td>statement</td> <td>List</td> <td>访问策略,字典类型。访问策略的匹配规则根据规则的定义顺序依次生效,如:一个请求匹配上两条 <code>statment</code>,定义在前的 <code>statment</code> 生效。</td> <td>是</td> </tr> <tr> <td>id</td> <td>String</td> <td>策略的标识符,可用来描述策略的用途。可为任意字符,且长度不超过 100。在一个 Bucket Policy 中,策略的标识符必须唯一。</td> <td>是</td> </tr> <tr> <td>user</td> <td>String or List</td> <td>策略所应用到的用户,其值可为字符串,也可为列表。规则如下:<br>- 当策略所应用到的用户为单一用户时,可用字符串表示,否则应该用列表表示。<br>- 每个用户必须为开·云app官方版下载 QingCloud 用户,可用开·云app官方版下载 QingCloud 用户 ID 表示。 <br>- 总体长度不能超过 300 个字符。 <br>- 该字段不能省略,如果要匹配所有用户,可设置值为 <code>*</code>。</td> <td>是</td> </tr> <tr> <td>effect</td> <td>String</td> <td>当策略成功匹配用户的请求时,是否允许该请求。可选值为:<br>- <code>allow</code> 表示允许; <br>- <code>deny</code> 表示拒绝。 <br>- 如果请求与策略不匹配,则认为策略对于该请求不生效。</td> <td>是</td> </tr> <tr> <td>action</td> <td>String or List</td> <td>资源所支持操作。 其值可为列表或字符串。包括 Bucket action 与 Object action。 规则如下:<br>- 当为单一操作时,可用字符串表示,否则应该用列表表示。<br>- 总长度不能超过 500 个字符。<br>- Bucket action 包括,<code>list_objects</code>,<code>head_bucket</code> 及 <code>get_bucket_stats</code>。<br/>- Object action 包括 <code>get_object</code>,<code>create_object</code>,<code>delete_object</code>,<code>head_object</code>,<code>list_objects</code>,<code>list_object_parts</code>,<code>upload_object_part</code>,<code>abort_multipart_upload</code>,<code>initiate_multipart_upload</code> 及 <code>complete_multipart_upload</code>。<br>- 其中 <code>list_objects</code> 既属于 Bucket action 也属于 Object action</td> <td>是</td> </tr> <tr> <td>resource</td> <td>List</td> <td>允许或拒绝权限的对象资源。必须为列表或字符串。总长度不能超过 2048 个字符。 <br/>- 对于 Bucket action,<code>resource</code> 需为 Bucket 名称或者缺省。 <br/>- 对于 Object action,<code>resource</code> 须为以 <code>bucketname/</code> 为前缀的通配 Object 资源的表达式, 如 <code>resource: [&quot;mybucket/dir_a/*&quot;, &quot;mybucket/dir_b/*&quot;]</code> <br/>- 对于 <code>list_objects</code>,若指定 <code>resource: [mybucket/dir/*]</code>,则匹配前缀为 <code>mybucket/dir/</code> 的所有对象,可用于控制特定路径下的对象列取权限。 <br>- 当 <code>action</code> 包含了 Object action, 则 <code>resource</code> 不可缺省,并且须以 Object 资源的形式设置。</td> <td>是</td> </tr> <tr> <td>condition</td> <td>dict</td> <td>允许策略生效的条件。可缺省。总长度不能超过 2048 个字符。详细介绍请参见 <a href="#condition-%E8%AF%B4%E6%98%8E">Bucket Policy Condition</a></td> <td>是</td> </tr> </tbody> </table> <h3 id="condition-说明">Condition 说明</h3> <p><code>Condition</code> 字段支持字符串条件运算符和 Null 条件运算符。其基本格式如下:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;condition&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;条件运算符&#34;</span> : { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;被匹配元素&#34;</span>: <span style="color:#e6db74">&#34;匹配值&#34;</span> </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><p>例如:</p> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span><span style="color:#e6db74">&#34;condition&#34;</span><span style="color:#960050;background-color:#1e0010">:</span> { </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;string_like&#34;</span>: {<span style="color:#f92672">&#34;Referer&#34;</span>: <span style="color:#e6db74">&#34;*.example1.com&#34;</span>}, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;string_not_like&#34;</span>: {<span style="color:#f92672">&#34;Referer&#34;</span>: <span style="color:#e6db74">&#34;*.example2.com&#34;</span>}, </span></span><span style="display:flex;"><span> <span style="color:#f92672">&#34;ip_address&#34;</span>: {<span style="color:#f92672">&#34;source_ip&#34;</span>: [<span style="color:#e6db74">&#34;172.16.0.0/24&#34;</span>]} </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><p>一个 Policy Statement 中,Condition 如果包含了多个条件,匹配方式为 <code>与条件</code> 关系。</p> <p><strong>字符串条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>string_like</td> <td>Dict</td> <td>字符串通配,目前仅支持 <code>*</code> 。如果匹配,返回 True;否则,返回 False。若为 list, 则匹配任意一个就返回 True。</td> </tr> <tr> <td>string_not_like</td> <td>Dict</td> <td>字符串非通配,目前仅支持 <code>*</code>。如果匹配,返回 False;否则,返回 True。若为 list,则都不匹配才返回 True。</td> </tr> </tbody> </table> <p><strong>IP 地址条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>ip_address</td> <td>Dict</td> <td>检查 IP 地址是否在该网段列表内。如果是,返回 True;否则,返回 False。</td> </tr> <tr> <td>not_ip_address</td> <td>Dict</td> <td>检查 IP 地址是否在该网段列表内。如果是,返回 False;否则,返回 True。</td> </tr> </tbody> </table> <p><strong>Null 条件运算符</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>is_null</td> <td>Dict</td> <td>判断被匹配元素是否为空值。如果为空,返回被匹配元素的值;否则,返回被匹配元素的相反值。被匹配元素的有效值为 <code>True</code> 或 <code>False</code>。例如:<br>- <code>&quot;is_null&quot;: {&quot;Referer&quot;: true}</code> 意为匹配 Referer 为空值的请求。 <br>- <code>&quot;is_null&quot;: {&quot;Referer&quot;: false}</code> 意为匹配 Referer 非空的请求。</td> </tr> </tbody> </table> <p><strong>被匹配元素</strong></p> <table> <thead> <tr> <th>Name</th> <th>Type</th> <th>条件运算符</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>Referer</td> <td>String or List</td> <td>字符串条件运算符、Null 条件运算符</td> <td>HTTP 请求头 Referer 字段的匹配值,例如, <code>&quot;string_not_like&quot;: {&quot;Referer&quot;: [&quot;_.example1.com&quot;, &quot;_.example2.com&quot;]}</code></td> </tr> <tr> <td>source_ip</td> <td>List</td> <td>IP 地址条件运算符</td> <td>HTTP 请求的源地址的匹配值,以 <a href="http://www.rfc-editor.org/rfc/rfc4632.txt">CIDR</a> 格式表示,例如, <code>&quot;ip_address&quot;: {&quot;source_ip&quot;: [&quot;172.16.0.0/24&quot;, &quot;172.17.0.25/32&quot;]}</code></td> </tr> </tbody> </table> <h2 id="响应头">响应头</h2> <p>此接口仅包含公共响应头。关于公共响应头的更多信息,请参见 <a href="/storage/object-storage/api/common_header/#%E5%93%8D%E5%BA%94%E5%A4%B4%E5%AD%97%E6%AE%B5-response-header">公共响应头</a>。</p> <h2 id="错误码">错误码</h2> <table> <thead> <tr> <th>错误码</th> <th>错误描述</th> <th>HTTP 状态码</th> </tr> </thead> <tbody> <tr> <td>OK</td> <td>成功设置 Bucket 策略</td> <td>200</td> </tr> </tbody> </table> <p>其他错误码可参考 <a href="/storage/object-storage/api/error_code/#%E9%94%99%E8%AF%AF%E7%A0%81%E5%88%97%E8%A1%A8">错误码列表</a>。</p> <h2 id="示例">示例</h2> <h3 id="请求示例">请求示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#a6e22e">PUT</span> /?policy <span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> </span></span><span style="display:flex;"><span>Host<span style="color:#f92672">:</span> <span style="color:#ae81ff">mybucket.pek3a.qingstor.com</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:00 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">300</span> </span></span><span style="display:flex;"><span>Authorization<span style="color:#f92672">:</span> <span style="color:#ae81ff">authorization string</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>{ </span></span><span style="display:flex;"><span> &#34;statement&#34;: [ </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> &#34;id&#34;: &#34;allow certain site to get objects&#34;, </span></span><span style="display:flex;"><span> &#34;user&#34;: &#34;*&#34;, </span></span><span style="display:flex;"><span> &#34;action&#34;: [&#34;get_object&#34;], </span></span><span style="display:flex;"><span> &#34;effect&#34;: &#34;allow&#34;, </span></span><span style="display:flex;"><span> &#34;resource&#34;: [&#34;mybucket/*&#34;], </span></span><span style="display:flex;"><span> &#34;condition&#34;: { </span></span><span style="display:flex;"><span> &#34;string_like&#34;: { </span></span><span style="display:flex;"><span> &#34;Referer&#34;: [ </span></span><span style="display:flex;"><span> &#34;*.example1.com&#34;, </span></span><span style="display:flex;"><span> &#34;*.example2.com&#34; </span></span><span style="display:flex;"><span> ] </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> }, </span></span><span style="display:flex;"><span> { </span></span><span style="display:flex;"><span> &#34;id&#34;: &#34;allow user-henry to list objects and create objects&#34;, </span></span><span style="display:flex;"><span> &#34;user&#34;: &#34;user-henry&#34;, </span></span><span style="display:flex;"><span> &#34;action&#34;: [&#34;list_objects&#34;, &#34;create_object&#34;], </span></span><span style="display:flex;"><span> &#34;resource&#34;: [&#34;mybucket/*&#34;], </span></span><span style="display:flex;"><span> &#34;effect&#34;: &#34;allow&#34; </span></span><span style="display:flex;"><span> } </span></span><span style="display:flex;"><span> ] </span></span><span style="display:flex;"><span>} </span></span></code></pre></div><h3 id="响应示例">响应示例</h3> <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#66d9ef">HTTP</span><span style="color:#f92672">/</span><span style="color:#ae81ff">1.1</span> <span style="color:#ae81ff">200</span> <span style="color:#a6e22e">OK</span> </span></span><span style="display:flex;"><span>Server<span style="color:#f92672">:</span> <span style="color:#ae81ff">QingStor</span> </span></span><span style="display:flex;"><span>Date<span style="color:#f92672">:</span> <span style="color:#ae81ff">Sun, 16 Aug 2015 09:05:02 GMT</span> </span></span><span style="display:flex;"><span>Content-Length<span style="color:#f92672">:</span> <span style="color:#ae81ff">0</span> </span></span><span style="display:flex;"><span>Connection<span style="color:#f92672">:</span> <span style="color:#ae81ff">close</span> </span></span><span style="display:flex;"><span>x-qs-request-id<span style="color:#f92672">:</span> <span style="color:#ae81ff">aa08cf7a43f611e5886952542e6ce14b</span> </span></span></code></pre></div><h2 id="sdk">SDK</h2> <p>此接口所对应的各语言 SDK 可参考 <a href="/storage/object-storage/sdk/">SDK 文档</a>。</p>