Поделиться через


Configure anonymous read access for containers and blobs

Azure Storage supports optional anonymous read access for containers and blobs. Анонимный доступ к данным по умолчанию никогда не разрешен. Unless you explicitly enable anonymous access, all requests to a container and its blobs must be authorized. При настройке параметра уровня доступа контейнера для разрешения анонимного доступа клиенты могут считывать данные в этом контейнере без авторизации запроса.

Предупреждение

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

This article describes how to configure anonymous read access for a container and its blobs. Для получения информации об устранении анонимного доступа к данным BLOB-объектов для оптимальной безопасности см. "Устранение анонимного доступа на чтение к данным BLOB-объектов".

О анонимном доступе для чтения

Анонимный доступ к данным всегда запрещен по умолчанию. Существует два отдельных параметра, влияющих на анонимный доступ:

  1. Параметр анонимного доступа для учетной записи хранения. Учетная запись хранения Azure Resource Manager предлагает параметр для разрешения или запрета анонимного доступа для учетной записи. Корпорация Майкрософт рекомендует запретить анонимный доступ для учетных записей хранения для оптимальной безопасности.

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

  2. Настройте параметр анонимного доступа контейнера. По умолчанию параметр анонимного доступа контейнера отключен, то есть для каждого запроса к контейнеру или его данным требуется авторизация. Пользователь с соответствующими разрешениями может изменить параметр анонимного доступа контейнера, чтобы включить анонимный доступ только в том случае, если анонимный доступ разрешен для учетной записи хранения.

В следующей таблице показано, как два параметра влияют на анонимный доступ для контейнера.

Уровень анонимного доступа для контейнера установлен на Приватный (параметр по умолчанию). Уровень анонимного доступа для контейнера установлен на значение «Контейнер» Уровень анонимного доступа для контейнера установлен на Blob.
Анонимный доступ запрещен для учетной записи хранения Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. The storage account setting overrides the container setting. Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. The storage account setting overrides the container setting.
Анонимный доступ разрешен для учетной записи хранения Анонимный доступ к этому контейнеру (конфигурация по умолчанию) отсутствует. Anonymous access is permitted to this container and its blobs. Anonymous access is permitted to blobs in this container, but not to the container itself.

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

Разрешить или запретить анонимный доступ на чтение для учетной записи хранения

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

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

Disallowing anonymous access for the storage account overrides the access settings for all containers in that storage account, preventing anonymous access to blob data in that account. Если анонимный доступ запрещен для учетной записи, невозможно настроить параметр доступа для контейнера, чтобы разрешить анонимный доступ, и любые будущие анонимные запросы к этой учетной записи завершаются ошибкой. Before changing this setting, be sure to understand the impact on client applications that might be accessing data in your storage account anonymously. Дополнительные сведения см. в разделе "Предотвращение анонимного доступа на чтение к контейнерам и BLOB-объектам".

Внимание

После запрета анонимного доступа для учетной записи хранения клиенты, использующие вызов анонимного носителя, будут находить, что служба хранилища Azure возвращает ошибку 403 (запрещено), а не ошибку 401 (несанкционированно). Рекомендуется сделать все контейнеры частными для устранения этой проблемы. Дополнительные сведения об изменении параметра анонимного доступа для контейнеров см. в разделе "Настройка уровня доступа для контейнера".

Для разрешения или запрета анонимного доступа требуется версия 2019-04-01 или более поздняя версия поставщика ресурсов хранилища Azure. Дополнительные сведения см. в разделе REST API поставщика ресурсов службы хранилища Microsoft Azure.

Разрешения для запрета анонимного доступа

Чтобы задать свойство AllowBlobAnonymousAccess для учетной записи хранения, пользователь должен иметь разрешения на создание учетных записей хранения и управление ими. Роли управления доступом на основе ролей в Azure (Azure RBAC), предоставляющие эти разрешения, включают в себя действие Microsoft.Storage/storageAccounts/write. Built-in roles with this action include:

Назначения ролей должны быть ограничены уровнем учетной записи хранения или выше, чтобы разрешить пользователю запретить анонимный доступ для учетной записи хранения. For more information about role scope, see Understand scope for Azure RBAC.

Будьте осторожны, чтобы ограничить назначение этих ролей только теми пользователями администратора, которым требуется возможность создать учетную запись хранения или обновить его свойства. Используйте принцип наименьших привилегий, чтобы предоставлять пользователям минимальный набор разрешений, необходимый для выполнения их задач. Дополнительные сведения об управлении доступом с помощью Azure RBAC см. в разделе Рекомендации по использованию Azure RBAC.

Эти роли не предоставляют доступ к данным в учетной записи хранения с помощью идентификатора Microsoft Entra. Однако они включают действие Microsoft.Storage/storageAccounts/listkeys/action, которое предоставляет доступ к ключам доступа учетной записи. Пользователь с этим разрешением может использовать ключи доступа учетной записи для доступа ко всем данным в учетной записи хранения.

Microsoft.Storage /storageAccounts/listkeys/action сам предоставляет доступ к данным через ключи учетной записи, но не предоставляет пользователю возможность изменять свойство AllowBlobPublicAccess для учетной записи хранения. Для пользователей, которым требуется доступ к данным в вашей учетной записи хранения, но которые не должны иметь возможности изменять конфигурацию учетной записи хранения, рекомендуется назначать такие роли, как Вкладчик данных BLOB-хранилища, Читатель данных BLOB-хранилища или Читатель и доступ к данным.

Примечание.

Роли администратора классической подписки "администратор службы" и "соадминистратор" включают в себя эквивалент роли владельца Azure Resource Manager. Роль владельца включает все действия, поэтому пользователь с одной из этих административных ролей также может создавать учетные записи хранения и управлять конфигурацией учетной записи. Дополнительные сведения см. в статье о ролях Azure, ролях Microsoft Entra и классических ролях администратора подписки.

Установить свойство AllowBlobPublicAccess для учетной записи хранения

Чтобы разрешить или запретить анонимный доступ для учетной записи хранения, задайте свойство AllowBlobPublicAccess этой учетной записи. Это свойство доступно для всех учетных записей хранения, созданных с помощью модели развертывания Azure Resource Manager. Дополнительные сведения см. в статье Общие сведения об учетных записях хранения.

Чтобы разрешить или запретить анонимный доступ для учетной записи хранения в портал Azure, выполните следующие действия.

  1. Войдите в свою учетную запись хранения на портале Azure.

  2. Выберите параметр Configuration (Конфигурация) в разделе Settings (Параметры).

  3. Установите Разрешить анонимный доступ к Blob в положение включено или отключено.

    Снимок экрана: разрешение или запрет анонимного доступа для учетной записи

Примечание.

Запрет анонимного доступа для учетной записи хранения не влияет на статические веб-сайты, размещенные в этой учетной записи хранения. Контейнер $web всегда является общедоступным.

После обновления параметра анонимного доступа для учетной записи хранения может потребоваться до 30 секунд до полного распространения изменения.

Если контейнер настроен для анонимного доступа, запросы на чтение больших двоичных объектов в этом контейнере не должны быть авторизованы. Однако все правила брандмауэра, настроенные для учетной записи хранения, остаются в силе и блокируют трафик в соответствии с настроенными списками управления доступом.

Для разрешения или запрета анонимного доступа требуется версия 2019-04-01 или более поздняя версия поставщика ресурсов хранилища Azure. Дополнительные сведения см. в разделе REST API поставщика ресурсов службы хранилища Microsoft Azure.

В примерах этого раздела показано, как считывать свойство AllowBlobPublicAccess для учетной записи хранения, чтобы определить, разрешен ли анонимный доступ в настоящее время или запрещен. Сведения о том, как убедиться, что параметр анонимного доступа учетной записи настроен для предотвращения анонимного доступа, см. в статье "Исправление анонимного доступа" для учетной записи хранения.

Настройка уровня анонимного доступа для контейнера

To grant anonymous users read access to a container and its blobs, first allow anonymous access for the storage account, then set the container's anonymous access level. Если анонимный доступ запрещен для учетной записи хранения, вы не сможете настроить анонимный доступ для контейнера.

Внимание

Microsoft recommends against permitting anonymous access to blob data in your storage account.

Если анонимный доступ разрешен для учетной записи хранения, можно настроить контейнер со следующими разрешениями:

  • No public read access: The container and its blobs can be accessed only with an authorized request. Это — параметр по умолчанию для всех новых контейнеров.
  • Общедоступный доступ на чтение только для больших двоичных объектов: большие двоичные объекты в контейнере можно считывать анонимным запросом, но данные контейнера недоступны анонимно. Anonymous clients can't enumerate the blobs within the container.
  • Общий доступ на чтение для контейнера и его BLOB-объектов: данные контейнера и BLOB-объектов могут считываться анонимным запросом, кроме параметров разрешений и метаданных контейнера. Клиенты могут перечислять блоб-объекты внутри контейнера с помощью выполненного анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения.

You can't change the anonymous access level for an individual blob. Уровень анонимного доступа устанавливается только на уровне контейнера. При создании контейнера можно задать анонимный уровень доступа контейнера или обновить параметр существующего контейнера.

Чтобы обновить уровень анонимного доступа для одного или нескольких существующих контейнеров в портал Azure, выполните следующие действия.

  1. Перейдите на страницу обзора вашей учетной записи хранения в портале Azure.

  2. В колонке меню хранилища данных выберите контейнеры.

  3. Выберите контейнеры, для которых необходимо задать уровень анонимного доступа.

  4. Нажмите кнопку "Изменить уровень доступа", чтобы отобразить параметры анонимного доступа.

  5. Выберите требуемый уровень анонимного доступа в раскрывающемся списке "Анонимный доступ" и нажмите кнопку "ОК", чтобы применить изменение к выбранным контейнерам.

    Снимок экрана: настройка уровня анонимного доступа на портале.

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

Снимок экрана: настройка уровня анонимного доступа контейнера блокируется, когда анонимный доступ запрещен для учетной записи

Проверьте параметр анонимного доступа для набора контейнеров

Можно проверить, какие контейнеры в одной или нескольких учетных записях хранения настроены для анонимного доступа, перечислив контейнеры и проверив параметр анонимного доступа. Этот подход является удобным решением, когда в учетной записи хранения мало контейнеров или когда параметр проверяется в небольшом числе аккаунтов хранения. Однако при попытке перечисления большого количества контейнеров производительность может снизиться.

В следующем примере powerShell используется для получения параметра анонимного доступа для всех контейнеров в учетной записи хранения. Не забудьте заменить значения заполнителей в скобках собственными значениями.

$rgName = "<resource-group>"
$accountName = "<storage-account>"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName
$ctx = $storageAccount.Context
Get-AzStorageContainer -Context $ctx | Select Name, PublicAccess

Поддержка функций

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. If you've enabled any of these capabilities, see Blob Storage feature support in Azure Storage accounts to assess support for this feature.

Следующие шаги