你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

设置队列 ACL

Set Queue ACL 操作为队列设置存储的访问策略,这些策略可与 SAS (共享访问签名) 一起使用。 有关详细信息,请参阅定义存储的访问策略

注意

版本 2012-02-12 和更高版本中提供了 Set Queue ACL 操作。

请求

可以按如下所示构造 Set Queue ACL 请求。 建议使用 HTTPS。 将 myaccount 替换为存储帐户的名称:

方法 请求 URI HTTP 版本
PUT https://myaccount.queue.core.windows.net/myqueue?comp=acl HTTP/1.1

模拟存储服务请求

对模拟存储服务发出请求时,请将模拟器主机名和队列服务端口指定为 127.0.0.1:10001,后跟模拟的存储帐户名称:

方法 请求 URI HTTP 版本
PUT http://127.0.0.1:10001/devstoreaccount1/myqueue?comp=acl HTTP/1.1

有关详细信息,请参阅使用 Azurite 模拟器进行本地 Azure 存储开发

URI 参数

可以在请求 URI 上指定以下附加参数:

参数 描述
timeout 可选。 timeout 参数以秒表示。 有关详细信息,请参阅 为队列服务操作设置超时

请求标头

下表描述了必需的和可选的请求标头:

请求标头 说明
Authorization 必需。 指定授权方案、帐户名称和签名。 有关详细信息,请参阅授权对 Azure 存储的请求
Datex-ms-date 必需。 指定请求的协调世界时 (UTC)。 有关详细信息,请参阅授权对 Azure 存储的请求
x-ms-version 可选。 指定用于此请求的操作的版本。 有关详细信息,请参阅 Azure 存储服务的版本控制
x-ms-client-request-id 可选。 提供客户端生成的不透明值,其中包含 1-kibite (KiB) 配置日志记录时记录在日志中的字符限制。 强烈建议使用此标头将客户端活动与服务器接收的请求相关联。 有关详细信息,请参阅 监视 Azure 队列存储

请求正文

要指定存储访问策略,请在 Set Queue ACL 操作的请求正文中提供唯一的标识符和访问策略。

SignedIdentifier 元素包含唯一标识符(在 Id 元素中指定)和访问策略(在 AccessPolicy 元素中指定)详细信息。 唯一标识符的最大长度为 64 个字符。

StartExpiry 字段必须表示为 UTC 时间,并且必须遵循有效的 ISO 8061 格式。 支持的 ISO 8061 格式包括:

  • YYYY-MM-DD
  • YYYY-MM-DDThh:mmTZD
  • YYYY-MM-DDThh:mm:ssTZD
  • YYYY-MM-DDThh:mm:ss.ffffffTZD

对于这些格式的日期部分,YYYY 是四位数的年份表示形式,MM 是两位数的月份表示形式,而 DD 是两位数的日期表示形式。 对于时间部分,hh 是二十四小时制的小时表示形式,mm 是两位数的分钟表示形式,ss 是两位数的秒钟表示形式,而 ffffff 是六位数的毫秒表示形式。 时间指示符 T 分隔字符串的日期和时间部分,时区指示符 TZD 指定时区。

<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>unique-64-character-value</Id>  
    <AccessPolicy>  
      <Start>start-time</Start>  
      <Expiry>expiry-time</Expiry>  
      <Permission>abbreviated-permission-list</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

示例请求

Request Syntax:  
PUT https://myaccount.queue.core.windows.net/myqueue?comp=acl HTTP/1.1  
  
Request Headers:  
x-ms-version: 2012-02-12  
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT  
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>  
    <AccessPolicy>  
      <Start>2009-09-28T08:49:37.0000000Z</Start>  
      <Expiry>2009-09-29T08:49:37.0000000Z</Expiry>  
      <Permission>raup</Permission>  
    </AccessPolicy>  
  </SignedIdentifier>  
</SignedIdentifiers>  
  

响应

响应包括 HTTP 状态代码和一组响应标头。

状态代码

成功的操作将返回状态代码 204(无内容)。

有关状态代码的详细信息,请参阅 状态和错误代码

响应头

此操作的响应包括以下标头。 该响应还可能包括其他标准 HTTP 标头。 所有标准标头都符合 HTTP/1.1 协议规范

响应标头 说明
x-ms-request-id 唯一标识发出的请求,可用于对请求进行故障排除。 有关详细信息,请参阅 API 操作疑难解答
x-ms-version 指示用于执行请求的队列服务版本。 对于针对版本 2009-09-19 及更高版本发出的请求,返回此标头。
Date 由服务生成的 UTC 日期/时间值,指示启动响应的时间。
x-ms-client-request-id 此标头可用于对请求和相应的响应进行故障排除。 如果请求中存在标头, x-ms-client-request-id 并且该值包含的可见 ASCII 字符不超过 1,024 个,则此标头的值等于标头的值。 x-ms-client-request-id如果请求中不存在标头,则响应中不会显示该标头。

示例响应

Response Status:  
HTTP/1.1 204 No Content  
  
Response Headers:  
Transfer-Encoding: chunked  
Date: Sun, 25 Sep 2011 22:42:55 GMT  
x-ms-version: 2012-02-12  
Server: Windows-Azure-Queue/1.0 Microsoft-HTTPAPI/2.0  
  

授权

只有帐户所有者可以调用此操作。

注解

除非所有者为队列中的资源颁发了共享访问签名,否则只有帐户所有者可以访问特定队列中的资源。

在设置队列的权限时,将替换现有的权限。 若要更新队列的权限,请调用 获取队列 ACL 以提取与队列关联的所有访问策略。 修改要更改的访问策略,然后使用完整的数据集调用 Set Queue ACL 以执行更新。

建立存储访问策略

存储访问策略可以指定与其关联的共享访问签名的开始时间、到期时间和权限。 根据控制对队列资源的访问的方式,可以在存储访问策略中指定所有这些参数,并从共享访问签名的 URL 中省略这些参数。 通过这样做,可以随时修改关联的签名的行为或撤销它。 或者,可以在存储的访问策略中指定一个或多个访问策略参数,并在 URL 上指定其他访问策略参数。 最后,可以在 URL 上指定所有参数。 在这种情况下,你可以使用存储访问策略来撤消签名,但不修改其行为。 有关建立访问策略的详细信息,请参阅 定义存储访问策略

共享访问签名和存储访问策略必须同时包含授权签名所需的所有字段。 如果缺少任何必填字段,请求将失败。 同样,如果在共享访问签名 URL 和存储访问策略中都指定了字段,则请求将失败,状态代码为 400 (错误请求) 。

在任何时候,最多可以为单个队列设置五个单独的访问策略。 如果在请求正文中传递了五个以上的访问策略,则服务将返回状态代码 400 (错误的请求) 。

在队列上建立存储访问策略时,最长可能需要 30 秒才能生效。 在此时间间隔内,与存储访问策略关联的共享访问签名失败,状态代码为 403 (禁止访问) ,直到访问策略变为活动状态。

请参阅

定义存储访问策略
获取队列 ACL
授权对 Azure 存储的请求
状态和错误代码