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

Операция Set Container ACL задает разрешения для указанного контейнера. Разрешения показывают, имеется ли общий доступ к BLOB-объектам контейнера.

Начиная с версии 2009-09-19 разрешения контейнера предоставляют следующие варианты управления доступом к контейнерам:

  • Полный общий доступ на чтение: Данные контейнера и больших двоичных объектов можно считывать с помощью анонимного запроса. Клиенты могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения.

  • Общий доступ на чтение только для больших двоичных объектов: Данные BLOB-объектов в этом контейнере можно считывать с помощью анонимного запроса, но данные контейнера недоступны. Клиенты не могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса.

  • Нет общего доступа на чтение: Данные контейнера и BLOB-объекта могут быть прочитаны только владельцем учетной записи.

Set Container ACL также задает хранимую политику доступа для использования с подписанным URL-адресом. Дополнительные сведения см. в разделе Определение хранимой политики доступа.

Весь общий доступ к контейнеру анонимен, как и доступ с использованием подписанного URL-адреса.

Запрос

Запрос 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

Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки и тестирования службы хранилища Azure.

Параметры универсального кода ресурса (URI)

В URI запроса можно указать следующие дополнительные параметры:

Параметр Описание
timeout Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций службы BLOB-объектов.

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

Обязательные и необязательные заголовки запросов описаны в следующей таблице:

Заголовок запроса Описание
Authorization Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
Date или x-ms-date Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
x-ms-version Необязательный элемент. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.
x-ms-blob-public-access Необязательный элемент. Определяет, можно ли получить общий доступ к данным контейнера, а также уровень доступа. Возможные значения:

- container: указывает полный общий доступ на чтение для данных контейнера и больших двоичных объектов. Клиенты могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения.
- blob: Указывает общий доступ на чтение для BLOB-объектов. Данные BLOB-объектов в этом контейнере можно считывать с помощью анонимного запроса, но данные контейнера недоступны. Клиенты не могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса.

Если этот заголовок не включен в запрос, данные контейнера являются частными для владельца учетной записи.

Обратите внимание, что настройка общего доступа для контейнера в учетной записи azure хранилище класса Premium не разрешена.
x-ms-lease-id: <ID> Необязательно, версия 2012-02-12 и более поздние версии. Если он указан, выполняется успешно, Set Container ACL только если аренда контейнера активна и соответствует этому идентификатору. Если активная аренда отсутствует или идентификатор не совпадает, возвращается 412 (сбой предварительного условия).
x-ms-client-request-id Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure.

Эта операция также поддерживает использование условных заголовков для выполнения операции при выполнении определенного условия. Дополнительные сведения см. в разделе Указание условных заголовков для операций службы BLOB-объектов.

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

Можно указать хранимую политику доступа, предоставив уникальный идентификатор и политику доступа в тексте запроса для операции Set Container ACL.

Элемент SignedIdentifier включает уникальный идентификатор, как указано в элементе Id, и подробности политики доступа, как указано в элементе 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.fffffffTZD

Для части даты таких форматов YYYY— представление года из четырех цифр, MM— представление месяца из двух цифр, а DD— представление дня из двух цифр. Для временной части hh — представление часа в 24-часовой нотации, 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. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках.

Любая операция, изменяющая контейнер, его свойства или метаданные, включая установку разрешений для контейнера, обновляет время последнего изменения. Операции с большими двоичными объектами не влияют на время последнего изменения контейнера.
x-ms-request-id Уникально идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в статье Устранение неполадок с операциями API.
x-ms-version Указывает версию службы BLOB-объектов, которая использовалась для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.
Date Значение даты и времени в формате UTC, созданное службой, указывающее время, когда был инициирован ответ.
x-ms-client-request-id Может использоваться для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе и содержит не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, он не будет присутствовать в ответе.

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

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  

Авторизация

Операция Set Container ACL поддерживает только авторизацию с общим ключом.

Комментарии

Только владелец учетной записи имеет доступ к ресурсам в определенном контейнере, если только владелец не задал для ресурсов этого контейнера общий доступ путем установки разрешений для контейнера или не сформировал подписанный URL-адрес для ресурса в этом контейнере.

При установке разрешений для контейнера существующие разрешения заменяются. Чтобы обновить разрешения контейнера, вызовите Get Container ACL для получения всех политик доступа, связанных с контейнером. Измените политику доступа, которую вы хотите изменить, а затем вызовите Set Container ACL с полным набором данных для выполнения обновления.

Включение анонимного общего доступа к данным контейнера

Чтобы включить анонимный общий доступ на чтение для данных контейнера, вызовите метод Set Container ACL с заданным для заголовка x-ms-blob-public-access значением container или blob. Для отключения анонимного доступа вызовите метод Set Container ACL без указания заголовка x-ms-blob-public-access.

Если задать для x-ms-blob-public-access значение blob, клиенты смогут анонимно вызывать следующие операции:

Если задать для x-ms-blob-public-access значение container, клиенты смогут анонимно вызывать следующие операции:

Установка политик доступа на уровне контейнера

Хранимая политика доступа может указать время начала, срок действия и разрешения для подписанных URL-адресов, с которыми она связана. В зависимости от того, как вы хотите управлять доступом к контейнеру или ресурсу BLOB-объекта, вы можете указать все эти параметры в хранимой политике доступа и опустить их в URL-адресе для подписанного URL-адреса. Таким образом, вы можете изменить поведение связанной сигнатуры в любое время или отозвать его. Вы также можете указать один или несколько параметров политики доступа в хранимой политике доступа, а остальные — в URL-адресе. Наконец, можно указать все параметры в URL-адресе. В этом случае хранимую политику доступа можно использовать для отмены подписи, но не для изменения поведения подписи. Дополнительные сведения см. в разделе Определение хранимой политики доступа.

Вместе подписанный URL-адрес и хранимая политика доступа должны включать все поля, необходимые для авторизации подписи. Если какие-либо обязательные поля отсутствуют, запрос завершается ошибкой. Аналогичным образом, если поле указано как в URL-адресе подписанного URL-адреса, так и в хранимой политике доступа, запрос завершается ошибкой с кодом состояния 400 (недопустимый запрос).

Для одного контейнера можно задать не более пяти отдельных политик доступа в любое время. Если в тексте запроса передается более пяти политик доступа, служба возвращает код состояния 400 (недопустимый запрос).

Подписанный URL-адрес может быть сформирован для контейнера или BLOB-объекта независимо от того, доступны ли данные контейнера для анонимного доступа на чтение. Подписанный URL-адрес предоставляет больший контроль над тем, как, когда и кому будет доступен ресурс.

Примечание

При создании хранимой политики доступа в контейнере для ее применения может потребоваться до 30 секунд. В течение этого интервала, пока политика не станет активной, подписанный URL-адрес, связанный с хранимой политикой доступа, завершается сбоем с кодом состояния 403 (запрещено).

Выставление счетов

Запросы на ценообразование могут исходить от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за каждую транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются на категорию выставления счетов, отличную от категории операций записи. В следующей таблице показана категория выставления счетов для Set Container ACL запросов на основе типа учетной записи хранения.

Операция Тип учетной записи хранения Категория выставления счетов
Set Container ACL (Задание списка управления доступом для контейнера) Блочный BLOB-объект (ценовая категории "Премиум")
Общего назначения версии 2 (цен. категория "Стандартный")
Другие операции
Set Container ACL (Задание списка управления доступом для контейнера) Стандартная общего назначения версии 1 Операции записи

Дополнительные сведения о ценах для указанной категории выставления счетов см. в разделе Цены на Хранилище BLOB-объектов Azure.

См. также раздел

Ограничение доступа к контейнерам и BLOB-объектам
Делегирование доступа с помощью подписанного URL-адреса
Создание и использование подписанного URL-адреса
Определение хранимой политики доступа
Get Container ACL (Получение списка управления доступом для контейнера)
Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок службы BLOB-объектов