销售电话: 1-800-867-1380

设置容器 ACL (REST API)

更新时间: 2014年12月

Set Container ACL 操作设置指定容器的权限。这些权限指示是否可以公开访问容器中的 Blob。

从 2009-09-19 版开始,容器权限提供了以下选项以管理容器访问:

  • 完全公共读取访问:可通过匿名请求读取容器和 Blob 数据。客户端可以通过匿名请求枚举容器中的 Blob,但无法枚举存储帐户中的容器。

  • 仅针对 Blob 的公共读取访问:可以通过匿名请求读取此容器中的 Blob 数据,但容器数据不可用。客户端无法通过匿名请求枚举容器中的 Blob。

  • 无公共读取访问:仅帐户所有者可读取容器和 Blob 数据。

Set Container ACL 还设置了一个存储访问策略以便与共享访问签名一起使用。有关详细信息,请参阅使用存储访问策略

对容器的所有公共访问都是匿名的,与通过共享访问签名的访问相同。

可以按如下方式构建Set Container ACL请求。建议使用 HTTPS。将 myaccount 替换为你的存储帐户名称:

 

方法 请求 URI HTTP 版本

PUT

https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl

HTTP/1.1

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

 

方法 请求 URI HTTP 版本

PUT

http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl

HTTP/1.1

有关详细信息,请参阅使用 Azure 存储模拟器进行开发和测试

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

 

Parameter 说明

timeout

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

下表介绍必需的和可选的请求标头。

 

请求标头 说明

Authorization

必需。指定身份验证方案、帐户名和签名。有关详细信息,请参阅Azure 存储服务身份验证

Datex-ms-date

必需。为请求指定协调世界时 (UTC)。有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

可选。指定用于此请求的操作的版本。有关详细信息,请参阅Windows Azure 中 BLOB 服务、队列服务和表服务的版本管理

x-ms-blob-public-access

可选。指定是否可以公开访问容器中的数据以及访问级别。可能的值包括:

  • container:指定容器和 Blob 数据的完全公共读取访问权限。客户端可以通过匿名请求枚举容器中的 Blob,但无法枚举存储帐户中的容器。

  • blob::指定 Blob 的公共读取访问权限。可以通过匿名请求读取此容器中的 Blob 数据,但容器数据不可用。客户端无法通过匿名请求枚举容器中的 Blob。

如果请求中不包含此标头,则容器数据是帐户所有者私有的。

x-ms-lease-id: <ID>

可选,2012-02-12 和更高版本。如果指定,则只有在容器的租约处于活动状态并且与此 ID 匹配时,Set Container ACL 才会成功。如果没有活动租约或者 ID 不匹配,则会返回 412(前提条件失败)。

x-ms-client-request-id

可选。提供客户端生成的、附带 1 KB 字符限制的模糊值,在启用存储分析日志记录时,将在分析日志中记录该值。强烈建议使用此标头将客户端活动与服务器接收的请求相关联。有关详细信息,请参阅关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

此操作还支持仅当满足指定条件时才使用条件头执行操作。有关详细信息,请参阅为 Blob 服务操作指定条件标头

要指定存储访问策略,请在 Set Container 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.fffffffTZD

对于这些格式的日期部分,YYYY 是四位数的年份表示形式,MM 是两位数的月份表示形式,而 DD 是两位数的日期表示形式。对于时间部分,hh 是二十四小时制的小时表示形式,mm 是两位数的分钟表示形式,ss 是两位数的秒钟表示形式,而 fffffff 是七位数的毫秒表示形式。时间指示符 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.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1

Request Headers:
x-ms-version: 2011-08-18
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT
x-ms-blob-public-access: container
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>rwd</Permission>
    </AccessPolicy>
  </SignedIdentifier>
</SignedIdentifiers>

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

此操作成功后返回状态代码 200(正常)。

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

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

 

响应标头 说明

ETag

容器的 ETag。如果请求版本为 2011-08-18 和更高版本,ETag 值将用引号引起来。

Last-Modified

返回上次修改容器的日期和时间。日期格式遵循 RFC 1123。有关详细信息,请参阅标头中日期/时间值的表示

修改容器或者其属性或元数据的任何操作将更新上次修改时间,包括设置容器的权限。Blob 上的操作不会影响容器的上次修改时间。

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。有关详细信息,请参阅 API 操作故障排除

x-ms-version

指示用于执行请求的 BLOB 服务的版本。针对 2009-09-19 和更高版本发出的请求将返回此标头。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

Response Status:
HTTP/1.1 200 OK

Response Headers:
Transfer-Encoding: chunked
Date: Sun, 25 Sep 2011 22:42:55 GMT
ETag: "0x8CB171613397EAB"
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

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

仅帐户所有者可以访问特定容器中的资源,除非帐户所有者通过设置容器上的权限来指定可以公开访问容器资源,或者为容器中的资源发布了共享访问签名。

在设置容器的权限时,将替换现有的权限。要更新容器的权限,请调用 获取容器 ACL (REST API) 以提取与容器关联的所有访问策略,修改要更改的访问策略,然后为完整数据集调用 Set Container ACL 以执行更新。

在容器数据上启用匿名公共访问

要在容器数据上启用匿名公共读取访问,请调用 Set Container ACL 并将 x-ms-blob-public-access 标头设置为 containerblob。要禁用匿名访问,请调用 Set Container ACL 而不指定 x-ms-blob-public-access 标头。

如果将 x-ms-blob-public-access 设置为 blob,客户端可以按匿名方式调用以下操作:

如果将 x-ms-blob-public-access 设置为 container,客户端可以按匿名方式调用以下操作:

设置容器级别访问策略

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

共享访问签名和存储访问策略一同必须包括对签名进行身份验证所需的所有字段。如果缺少任何必需的字段,则请求将失败。同样地,如果在共享访问签名 URL 中和存储访问策略中都指定了字段,则请求将失败,状态代码为 400(错误请求)。有关构成共享访问签名的字段的更多信息,请参见Creating a Shared Access Signature

在任何时候,最多可以为给定容器设置 5 个单独的访问策略。如果在请求正文中传递超过 5 个访问策略,服务将返回状态代码 400(错误的请求)。

可以在容器或 Blob 上发布共享访问签名,而无论是否可以对容器数据进行匿名读取访问。共享访问签名提供了一种更好的方法来控制访问资源的方式、时间和人员。

note备注
建立容器的存储访问策略时,它可能最多需要 30 秒才能生效。在此期间,与该存储访问策略关联的共享访问签名将失败,状态代码为 403(禁止访问),直到访问策略成为活动的。

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft