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

设置表 ACL

Set Table ACL 操作设置可用于共享访问签名的表的存储访问策略。 有关详细信息,请参阅 定义存储访问策略

注意

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

注意

访问控制列表(ACL)是 访问控制项(ACL)的列表。 ACL 中的每个 ACE 标识 受托人,并指定 允许、拒绝或审核该受托人的 访问权限。 有关详细信息,请参阅 访问控制列表

请求

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

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

模拟存储服务 URI

针对模拟存储服务发出请求时,请将模拟器主机名和 Azure 表存储端口指定为 127.0.0.1:10002。 然后添加模拟的存储帐户名称。

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

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

URI 参数

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

参数 描述
timeout 自选。 以秒为单位表示。 有关详细信息,请参阅 设置表存储操作的超时

请求标头

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

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

请求正文

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

SignedIdentifier 元素包括唯一标识符,如 Id 元素中指定的。 SignedIdentifier 还包括访问策略的详细信息,如 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.table.core.windows.net/mytable?comp=acl HTTP/1.1  
  
Request Headers:  
x-ms-version: 2013-08-15  
x-ms-date: Mon, 25 Nov 2013 00:42:49 GMT  
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=  
  
Request Body:  
<?xml version="1.0" encoding="utf-8"?>  
<SignedIdentifiers>  
  <SignedIdentifier>   
    <Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>  
    <AccessPolicy>  
      <Start>2013-11-26T08:49:37.0000000Z</Start>  
      <Expiry>2013-11-27T08:49:37.0000000Z</Expiry>  
      <Permission>raud</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: Mon, 25 Nov 2013 22:42:55 GMT  
x-ms-version: 2013-08-15  
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0  
  

授权

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

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

重要

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

言论

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

建立存储访问策略

存储访问策略可以指定其关联的共享访问签名的开始时间、过期时间和权限。 根据控制对共享或文件资源的访问的方式,可以:

  • 在存储的访问策略中指定所有这些参数,并从共享访问签名的 URL 中省略这些参数。 这样做允许你修改关联的签名的行为,或随时撤销它。
  • 在存储的访问策略中指定一个或多个访问策略参数,并在 URL 上指定其他参数。
  • 指定 URL 上的所有参数。 在这种情况下,可以使用存储的访问策略来撤销签名,但不能修改其行为。

有关建立访问策略的详细信息,请参阅 定义存储访问策略

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

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

注意

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

另请参阅

定义存储访问策略
创建和使用共享访问签名
使用共享访问签名 委托访问权限
获取表 ACL
授权对 Azure 存储 的请求
状态和错误代码