Set Container ACL (Задание списка управления доступом для контейнера)Set Container ACL

Операция Set Container ACL задает разрешения для указанного контейнера.The Set Container ACL operation sets the permissions for the specified container. Разрешения показывают, имеется ли общий доступ к BLOB-объектам контейнера.The permissions indicate whether blobs in a container may be accessed publicly.

Начиная с версии 2009-09-19, разрешения контейнера предоставляют следующие возможности для управления доступом к контейнеру.Beginning with the 2009-09-19 version, the container permissions provide the following options for managing container access:

  • Полный общий доступ на чтение: Данные контейнера и BLOB-объекта можно считывать с помощью анонимного запроса.Full public read access: Container and blob data can be read via anonymous request. Клиенты могут перечислять BLOB-объекты внутри контейнера с помощью анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения.Clients can enumerate blobs within the container via anonymous request, but cannot enumerate containers within the storage account.

  • Общий доступ на чтение только для больших двоичных объектов: Данные большого двоичного объекта в этом контейнере можно считать с помощью анонимного запроса, но данные контейнера недоступны.Public read access for blobs only: Blob data within this container can be read via anonymous request, but container data is not available. Клиенты не могут перечислять BLOB-объекты внутри с помощью анонимного запроса.Clients cannot enumerate blobs within the container via anonymous request.

  • Нет общего доступа для чтения: Данные контейнера и BLOB-объекта могут быть прочитаны только владельцем учетной записи.No public read access: Container and blob data can be read by the account owner only.

Set Container ACL также задает хранимую политику доступа для использования с подписанным URL-адресом.Set Container ACL also sets a stored access policy for use with shared access signatures. Дополнительные сведения см. в разделе Определение хранимой политики доступа.For more information, see Define a stored access policy.

Весь общий доступ к контейнеру анонимен, как и доступ с использованием подписанного URL-адреса.All public access to the container is anonymous, as is access via a shared access signature.

ЗапросRequest

Запрос Set Container ACL можно составить следующим образом.The Set Container ACL request may be constructed as follows. Рекомендуется использовать протокол HTTPS.HTTPS is recommended. Замените MyAccount именем вашей учетной записи хранения:Replace myaccount with the name of your storage account:

МетодMethod Универсальный код ресурса (URI) запросаRequest URI Версия HTTPHTTP Version
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1HTTP/1.1

Имитированный URI службы хранилищаEmulated Storage Service URI

При построении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт службы BLOB-объектов как 127.0.0.1:10000, затем укажите имя эмулированной учетной записи хранилища.When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

МетодMethod Универсальный код ресурса (URI) запросаRequest URI Версия HTTPHTTP Version
PUT http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl HTTP/1.1HTTP/1.1

Дополнительные сведения см. в статье Использование эмулятора хранения Azure для разработки и тестирования.For more information, see Using the Azure Storage Emulator for Development and Testing.

Параметры URIURI Parameters

В URI запроса могут быть заданы следующие дополнительные параметры.The following additional parameters may be specified on the request URI.

ПараметрParameter ОписаниеDescription
timeout Необязательный элемент.Optional. Параметр timeout указывается в секундах.The timeout parameter is expressed in seconds. Дополнительные сведения см. в разделе Настройка времени ожидания для операций службы BLOB-объектов.For more information, see Setting Timeouts for Blob Service Operations.

Заголовки запросовRequest Headers

В следующей таблице перечислены обязательные и необязательные заголовки запросов.The following table describes required and optional request headers.

Заголовок запросаRequest Header ОписаниеDescription
Authorization Обязательный.Required. Указывает схему авторизации, имя учетной записи и подпись.Specifies the authorization scheme, account name, and signature. Дополнительные сведения см. в статье авторизация запросов к службе хранилища Azure.For more information, see Authorize requests to Azure Storage.
Date или x-ms-dateDate or x-ms-date Обязательный.Required. Задает время запроса в формате UTC.Specifies the Coordinated Universal Time (UTC) for the request. Дополнительные сведения см. в статье авторизация запросов к службе хранилища Azure.For more information, see Authorize requests to Azure Storage.
x-ms-version Необязательный элемент.Optional. Задает версию операции, используемой для этого запроса.Specifies the version of the operation to use for this request. Дополнительные сведения см. в статье Управление версиями для служб хранилища Azure.For more information, see Versioning for the Azure Storage Services.
x-ms-blob-public-access Необязательный элемент.Optional. Определяет, можно ли получить общий доступ к данным контейнера, а также уровень доступа.Specifies whether data in the container may be accessed publicly and the level of access. Ниже перечислены возможные значения.Possible values include:

- container: Указывает полный общий доступ на чтение для контейнера и данных большого двоичного объекта.- container: Specifies full public read access for container and blob data. Клиенты могут перечислять BLOB-объекты внутри контейнера с помощью анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения.Clients can enumerate blobs within the container via anonymous request, but cannot enumerate containers within the storage account.
- blob:Указывает общий доступ на чтение для больших двоичных объектов.- blob: Specifies public read access for blobs. Данные BLOB-объектов в этом контейнере можно считать с помощью анонимного запроса, но данные контейнера недоступны.Blob data within this container can be read via anonymous request, but container data is not available. Клиенты не могут перечислять BLOB-объекты внутри с помощью анонимного запроса.Clients cannot enumerate blobs within the container via anonymous request.

Если этот заголовок не включен в запрос, то данные контейнера доступны только владельцу учетной записи.If this header is not included in the request, container data is private to the account owner.

Обратите внимание, что не допускается установка общего доступа к контейнеру в учетной записи хранилища Azure Premium.Note that setting public access for a container in an Azure Premium Storage account is not permitted.
x-ms-lease-id: <ID> Необязательно, версия 2012-02-12 и более поздняя.Optional, version 2012-02-12 and newer. Если задано, то Set Container ACL успешно завершится только в том случае, если аренда контейнера активна и совпадает с данным идентификатором.If specified, Set Container ACL only succeeds if the container's lease is active and matches this ID. Если отсутствует активная аренда или идентификатор не совпадает, то будет возвращена ошибка 412 (не выполнено необходимое условие).If there is no active lease or the ID does not match, 412 (Precondition Failed) is returned.
x-ms-client-request-id Необязательный элемент.Optional. Предоставляет генерируемое клиентом непрозрачное значение с ограничением в 1 КИБ символов, которое записывается в журналы аналитики при включенном ведении журнала аналитики хранилища.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления операций на стороне клиента с запросами, которые получает сервер.Using this header is highly recommended for correlating client-side activities with requests received by the server. Дополнительные сведения см. в статье о ведении журнала аналитика службы хранилища и Azure Logging: использование журналов для мониторинга запросов к хранилищу.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

Эта операция также поддерживает использование условных заголовков для выполнения операции при выполнении определенного условия.This operation also supports the use of conditional headers to execute the operation only if a specified condition is met. Дополнительные сведения см. в статье Указание условных заголовков для операций службы BLOB-объектов.For more information, see Specifying Conditional Headers for Blob Service Operations.

Текст запросаRequest Body

Можно указать хранимую политику доступа, предоставив уникальный идентификатор и политику доступа в тексте запроса для операции Set Container ACL.To specify a stored access policy, provide a unique identifier and access policy in the request body for the Set Container ACL operation.

Элемент SignedIdentifier включает уникальный идентификатор, как указано в элементе Id, и подробности политики доступа, как указано в элементе AccessPolicy.The SignedIdentifier element includes the unique identifier, as specified in the Id element, and the details of the access policy, as specified in the AccessPolicy element. Максимальная длина уникального идентификатора составляет 64 знака.The maximum length of the unique identifier is 64 characters.

Поля Start и Expiry должны быть выражены через время по Гринвичу (UTC) и соответствовать действительному формату ISO 8061.The Start and Expiry fields must be expressed as UTC times and must adhere to a valid ISO 8061 format. В число поддерживаемых форматов ISO 8061 входят следующие:Supported ISO 8061 formats include the following:

  • YYYY-MM-DD

  • YYYY-MM-DDThh:mmTZD

  • YYYY-MM-DDThh:mm:ssTZD

  • YYYY-MM-DDThh:mm:ss.fffffffTZD

Для части даты таких форматов YYYY— представление года из четырех цифр, MM— представление месяца из двух цифр, а DD— представление дня из двух цифр.For the date portion of these formats, YYYY is a four-digit year representation, MM is a two-digit month representation, and DD is a two-digit day representation. Для временной части hh — это представление часа в 24-часовом формате, mm — двузначное представление в виде минуты, ss — это двузначное представление с двумя цифрами, которое fffffff является представлением из семи цифр в миллисекундах.For the time portion, hh is the hour representation in 24-hour notation, mm is the two-digit minute representation, ss is the two-digit second representation, and fffffff is the seven-digit millisecond representation. Обозначение времени T разделяет части даты и времени в строке, а обозначение часового пояса TZD определяет часовой пояс.A time designator T separates the date and time portions of the string, while a time zone designator TZD specifies a time zone.

<?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>  
  

Пример запросаSample Request

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>  
  

ОтветResponse

Ответ включает код состояния HTTP и набор заголовков ответа.The response includes an HTTP status code and a set of response headers.

Код состоянияStatus Code

Успешная операция возвращает код состояния 200 (ОК).A successful operation returns status code 200 (OK).

Сведения о кодах состояния см. в разделе состояние и коды ошибок.For information about status codes, see Status and Error Codes.

Заголовки откликовResponse Headers

Ответ для этой операции включает следующие заголовки.The response for this operation includes the following headers. Ответ может также включать дополнительные стандартные заголовки HTTP.The response may also include additional standard HTTP headers. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.All standard headers conform to the HTTP/1.1 protocol specification.

Заголовок ответаResponse header ОписаниеDescription
ETag ETag для контейнера.The ETag for the container. Если версия запроса 2011-08-18 или более поздняя, то значение ETag будет указано в кавычках.If the request version is 2011-08-18 or newer, the ETag value will be in quotes.
Last-Modified Возвращает дату и время последнего изменения контейнера.Returns the date and time the container was last modified. Дата в формате согласно RFC 1123.The date format follows RFC 1123. Дополнительные сведения см. в разделе представление значений даты и времени в заголовках.For more information, see Representation of Date-Time Values in Headers.

Любая операция, изменяющая контейнер, его свойства или метаданные, включая установку разрешений для контейнера, обновляет время последнего изменения.Any operation that modifies the container or its properties or metadata updates the last modified time, including setting the container's permissions. Операции с BLOB-объектами не влияют на время последнего изменения контейнера.Operations on blobs do not affect the last modified time of the container.
x-ms-request-id Этот заголовок однозначно определяет выполненный запрос, его также можно использовать для устранения связанных с запросом неполадок.This header uniquely identifies the request that was made and can be used for troubleshooting the request. Дополнительные сведения см. в разделе Устранение неполадок API-операций .For more information, see Troubleshooting API Operations
x-ms-version Указывает версию службы BLOB-объектов, используемую для выполнения запроса.Indicates the version of the Blob service used to execute the request. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.This header is returned for requests made against version 2009-09-19 and later.
Date Значение даты и времени в формате UTC, сформированное службой и указывающее время, когда был инициирован ответ.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-client-request-id Этот заголовок можно использовать для устранения неполадок запросов и соответствующих ответов.This header can be used to troubleshoot requests and corresponding responses. Значение этого заголовка равно значению x-ms-client-request-id заголовка, если оно имеется в запросе, а значение не превышает 1024 видимых символов ASCII.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. Если x-ms-client-request-id заголовок отсутствует в запросе, этот заголовок не будет присутствовать в ответе.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

Пример ответаSample Response

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  

АвторизацияAuthorization

Вызов этой операции доступен только владельцу учетной записи.Only the account owner may call this operation.

КомментарииRemarks

Только владелец учетной записи имеет доступ к ресурсам в определенном контейнере, если только владелец не задал для ресурсов этого контейнера общий доступ путем установки разрешений для контейнера или не сформировал подписанный URL-адрес для ресурса в этом контейнере.Only the account owner may access resources in a particular container, unless the owner has specified that container resources are available for public access by setting the permissions on the container, or has issued a shared access signature for a resource within the container.

При установке разрешений для контейнера существующие разрешения заменяются.When you set permissions for a container, the existing permissions are replaced. Чтобы обновить разрешения контейнера, вызовите команду получения ACL контейнера , чтобы получить все политики доступа, связанные с контейнером, измените политику доступа, которую необходимо изменить, а затем вызовите Set Container ACL с полным набором данных для выполнения обновления.To update the container's permissions, call Get Container ACL to fetch all access policies associated with the container, modify the access policy that you wish to change, and then call Set Container ACL with the complete set of data to perform the update.

Разрешение анонимного общего доступа для данных контейнераEnabling Anonymous Public Access on Container Data

Чтобы включить анонимный общий доступ на чтение для данных контейнера, вызовите метод Set Container ACL с заданным для заголовка x-ms-blob-public-access значением container или blob.To enable anonymous public read access on container data, call Set Container ACL with the x-ms-blob-public-access header set to container or blob. Для отключения анонимного доступа вызовите метод Set Container ACL без указания заголовка x-ms-blob-public-access.To disable anonymous access, call Set Container ACL without specifying the x-ms-blob-public-access header.

Если задать для x-ms-blob-public-access значение blob, клиенты смогут анонимно вызывать следующие операции:If you set x-ms-blob-public-access to blob, clients can call the following operations anonymously:

Если задать для x-ms-blob-public-access значение container, клиенты смогут анонимно вызывать следующие операции:If you set x-ms-blob-public-access to container, clients can call the following operations anonymously:

Установка политик доступа на уровне контейнераEstablishing Container-Level Access Policies

Хранимая политика доступа может задавать время начала, время окончания и разрешения для подписей коллективного доступа, с которыми она сопоставлена.A stored access policy can specify the start time, expiry time, and permissions for the shared access signatures with which it's associated. В зависимости от того, как требуется управлять доступом к ресурсу контейнера или BLOB-объекта, можно указать все эти параметры в рамках хранимой политики доступа и исключить их из URL-адреса для подписи коллективного доступа.Depending on how you want to control access to your container or blob resource, you can specify all of these parameters within the stored access policy, and omit them from the URL for the shared access signature. Это позволяет изменить поведение связанной подписи в любое время, а также отменить ее.Doing so permits you to modify the associated signature's behavior at any time, as well as to revoke it. Или же вы можете указать один или несколько параметров в политике доступа, а остальные указать в URL-адресе.Or you can specify one or more of the access policy parameters within the stored access policy, and the others on the URL. И наконец, вы можете указать все параметры в URL-адресе.Finally, you can specify all of the parameters on the URL. В этом случае хранимую политику доступа можно использовать для отмены подписи, но не для изменения поведения подписи.In this case, you can use the stored access policy to revoke the signature, but not to modify its behavior. Дополнительные сведения см. в разделе Определение хранимой политики доступа.For more information, see Define a stored access policy.

Вместе подпись общего доступа и хранимая политика доступа должны включать все поля, необходимые для авторизации подписи.Together the shared access signature and the stored access policy must include all fields required to authorize the signature. Если какие-либо обязательные поля отсутствуют, то запрос завершится ошибкой.If any required fields are missing, the request will fail. Аналогично, если поле указано и в подписанном URL-адресе, и в хранимой политике доступа, запрос завершится ошибкой с кодом состояния 400 (неправильный запрос).Likewise, if a field is specified both in the shared access signature URL and in the stored access policy, the request will fail with status code 400 (Bad Request).

Для заданного контейнера в любое время можно установить самое большее 5 отдельных политик доступа.At most five separate access policies can be set for a given container at any time. Если в тексте запроса передается больше 5 политик доступа, служба возвращает код состояния 400 (неправильный запрос).If more than five access policies are passed in the request body, then the service returns status code 400 (Bad Request).

Подписанный URL-адрес может быть сформирован для контейнера или BLOB-объекта независимо от того, доступны ли данные контейнера для анонимного доступа на чтение.A shared access signature can be issued on a container or a blob regardless of whether container data is available for anonymous read access. Подписанный URL-адрес предоставляет больший контроль над тем, как, когда и кому будет доступен ресурс.A shared access signature provides a greater measure of control over how, when, and to whom a resource is made accessible.

Примечание

Для ввода в действие хранимой политики доступа в контейнере после настройки может потребоваться до 30 секунд.When you establish a stored access policy on a container, it may take up to 30 seconds to take effect. В этот промежуток времени попытка применения подписанного URL-адреса, связанного с хранимой политикой доступа, будет завершаться ошибкой с кодом состояния 403 (запрещено), пока политика доступа не станет активной.During this interval, a shared access signature that is associated with the stored access policy will fail with status code 403 (Forbidden), until the access policy becomes active.

См. такжеSee Also

Ограничение доступа к контейнерам и BLOB-объектам Restrict Access to Containers and Blobs
Делегирование доступа с помощью подписанного URL-доступа Delegate access with a shared access signature
Создание и использование подписанного URL-доступа Create and Use a Shared Access Signature
Определение хранимой политики доступа Define a stored access policy
Получение ACL контейнера Get Container ACL
Авторизация запросов к службе хранилища Azure Authorize requests to Azure Storage
Коды состояния и ошибок Status and Error Codes
Коды ошибок службы BLOB-объектовBlob Service Error Codes