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

设置队列 ACL

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

注意

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

请求

可以按如下所示构造 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-kibibyte (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 是 24 小时表示法中的小时表示形式,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 标头的值,并且该值包含不超过 1,024 个可见 ASCII 字符。 如果请求中不存在 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  
  

授权

在 Azure 存储中调用任何数据访问操作时,需要授权。 可以使用 Microsoft Entra ID 或共享密钥授权 Set Queue ACL 操作。

若要使用 Microsoft Entra ID 授权 Set Queue ACL 操作,安全主体需要一个包含以下 RBAC 操作的自定义 Azure RBAC 角色:Microsoft.Storage/storageAccounts/queueServices/queues/setAcl/action

重要

Microsoft建议将 Microsoft Entra ID 与托管标识配合使用来授权对 Azure 存储的请求。 与共享密钥授权相比,Microsoft Entra ID 提供更高的安全性和易用性。

言论

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

建立存储访问策略

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

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

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

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

另请参阅

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