你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
设置表 ACL
该 Set Table ACL
操作为表设置可与共享访问签名一起使用的存储访问策略。 有关详细信息,请参阅定义存储的访问策略。
注意
版本 2012-02-12 和更高版本中提供了 Set Table ACL
操作。
注意
ACL) (访问控制 列表 是 ACE) (访问控制项 的列表。 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 存储的请求。 |
Date 或 x-ms-date |
必需。 指定请求的协调世界时 (UTC)。 有关详细信息,请参阅授权对 Azure 存储的请求。 |
x-ms-version |
可选。 指定用于此请求的操作的版本。 有关详细信息,请参阅 Azure 存储服务的版本控制。 |
x-ms-client-request-id |
可选。 提供客户端生成的不透明值,其中包含 1 kibite (KiB) 字符限制,该限制在配置日志记录时记录在存储分析日志中。 强烈建议使用此标头将客户端活动与服务器接收的请求相关联。 |
请求正文
要指定存储访问策略,请在 Set Table ACL
操作的请求正文中提供唯一的标识符和访问策略。
元素 SignedIdentifier
包含元素中指定的 Id
唯一标识符。
SignedIdentifier
还包括元素中指定的 AccessPolicy
访问策略的详细信息。 唯一标识符的最大长度为 64 个字符。
Start
和 Expiry
字段必须表示为 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.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
授权
只有帐户所有者才能调用此操作。
注解
只有帐户所有者可以访问特定表中的资源,除非所有者为表中的资源颁发了共享访问签名。
设置表的权限时,将替代现有权限。 若要更新表的权限,请调用 Get Table ACL 来提取与表关联的所有访问策略。 修改要更改的访问策略,然后使用完整的数据集调用 Set Table ACL
以执行更新。
建立存储访问策略
存储访问策略可以为与之关联的共享访问签名指定开始时间、过期时间和权限。 根据你希望如何控制对共享或文件资源的访问,你可以:
- 在存储访问策略中指定所有这些参数,并从共享访问签名的 URL 中省略这些参数。 这样做允许你随时修改关联签名的行为或撤销它。
- 在存储的访问策略中指定一个或多个访问策略参数,并在 URL 上指定其他参数。
- 指定 URL 上的所有参数。 在这种情况下,可以使用存储的访问策略来撤销签名,但不能修改其行为。
有关建立访问策略的详细信息,请参阅 定义存储访问策略。
共享访问签名和存储访问策略必须同时包含授权签名所需的所有字段。 如果缺少任何必需的字段,则请求将失败。 同样,如果在共享访问签名 URL 和存储访问策略中都指定了字段,则请求将失败,状态代码为 400 (错误请求) 。 有关构成共享访问签名的字段的详细信息,请参阅 创建服务 SAS。
可以随时为表设置最多五个单独的访问策略。 如果在请求正文中传递了五个以上的访问策略,则服务将返回状态代码 400 (错误请求) 。
注意
在表上建立存储访问策略时,最长可能需要 30 秒才能生效。 在此时间间隔内,与存储访问策略关联的共享访问签名将失败,状态代码为 403 (禁止) ,直到访问策略变为活动状态。
另请参阅
定义存储访问策略
创建和使用共享访问签名
使用共享访问签名委托访问权限
获取表 ACL
授权对 Azure 存储的请求
状态和错误代码