Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
служба хранилища Azure поддерживает опциональный анонимный доступ к чтению контейнеров и blobs. Анонимный доступ к данным по умолчанию никогда не разрешен. Если вы явно не включили анонимный доступ, все запросы к контейнеру и его BLOB-объектам должны быть авторизованы. При настройке параметра уровня доступа контейнера для разрешения анонимного доступа клиенты могут считывать данные в этом контейнере без авторизации запроса.
Предупреждение
Когда контейнер настроен для анонимного доступа, любой клиент может считывать данные в этом контейнере. Анонимный доступ представляет потенциальную угрозу безопасности, поэтому если в вашем случае этого не требуется, исправьте анонимный доступ для аккаунта хранения.
В этой статье описано, как настроить анонимный доступ на чтение для контейнера и его блобов. Для получения информации об устранении анонимного доступа к данным BLOB-объектов для оптимальной безопасности см. "Устранение анонимного доступа на чтение к данным BLOB-объектов".
О анонимном доступе для чтения
Анонимный доступ к данным всегда запрещен по умолчанию. Два режима влияют на анонимный доступ:
Параметр анонимного доступа для учетной записи хранения. Учетная запись хранения Azure Resource Manager предлагает параметр для разрешения или запрета анонимного доступа для учетной записи. Корпорация Майкрософт рекомендует запретить анонимный доступ для учетных записей хранения для оптимальной безопасности.
Если анонимный доступ разрешен на уровне учетной записи, данные блоб недоступны для анонимного доступа к чтению, если пользователь не выполняет дополнительный шаг, чтобы явно настроить настройки анонимного доступа контейнера.
Настройте параметр анонимного доступа контейнера. По умолчанию параметр анонимного доступа контейнера отключен, то есть для каждого запроса к контейнеру или его данным требуется авторизация. Пользователь с соответствующими разрешениями может изменить параметр анонимного доступа контейнера, чтобы включить анонимный доступ только в том случае, если анонимный доступ разрешен для учетной записи хранения.
В следующей таблице показано, как два параметра влияют на анонимный доступ для контейнера.
| Уровень анонимного доступа для контейнера установлен на Приватный (параметр по умолчанию). | Уровень анонимного доступа для контейнера установлен на значение «Контейнер» | Уровень анонимного доступа для контейнера установлен на Blob. | |
|---|---|---|---|
| Анонимный доступ запрещен для учетной записи хранения | Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. | Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. Настройка учетной записи хранения переопределяет настройку контейнера. | Анонимный доступ к какому-либо контейнеру в учетной записи хранения запрещен. Настройка учетной записи хранения переопределяет настройку контейнера. |
| Анонимный доступ разрешен для учетной записи хранения | Анонимный доступ к этому контейнеру (конфигурация по умолчанию) отсутствует. | Анонимный доступ разрешен для этого контейнера и его блобов. | Анонимный доступ разрешен для объектов BLOB в этом контейнере, но не к самому контейнеру. |
Когда для учётной записи хранения разрешён анонимный доступ и он настроен для конкретного контейнера, служба принимает запрос на чтение BLOB-объекта в этом контейнере, который передаётся без заголовка Authorization, и возвращает в ответе данные BLOB-объекта. Однако, если запрос передаётся сAuthorization заголовком, сервис игнорирует анонимный доступ к аккаунту хранения и авторизирует запрос на основе предоставленных учетных данных.
Разрешить или запретить анонимный доступ на чтение для учетной записи хранения
Когда вы разрешаете анонимный доступ для аккаунта хранения, пользователь с соответствующими правами может изменить настройки анонимного доступа контейнера, чтобы обеспечить анонимный доступ к данным в этом контейнере. Данные Blob никогда не доступны для анонимного доступа, если пользователь не предпримет дополнительный шаг для явной настройки анонимного доступа контейнера.
Анонимный доступ к контейнеру всегда отключён по умолчанию и должен быть явно настроен для разрешения анонимных запросов. Независимо от настройки на аккаунте хранения, ваши данные никогда не становятся доступны для анонимного доступа, если пользователь с соответствующими правами не предпримет этот дополнительный шаг для включения анонимного доступа в контейнере.
Запрет анонимного доступа к аккаунту хранения переопределяет настройки доступа для всех контейнеров в этой учетной записи, предотвращая анонимный доступ к данным blob в этой учетной записи. Когда вы запрещаете анонимный доступ для аккаунта, вы не можете настроить режим доступа для контейнера для разрешения анонимного доступа, и любые будущие анонимные запросы на этот аккаунт не проходят. Прежде чем менять эту настановку, убедитесь, что вы понимаете влияние на клиентские приложения, которые могут анонимно получать доступ к данным в вашей учетной записи хранения. Дополнительные сведения см. в разделе "Предотвращение анонимного доступа на чтение к контейнерам и BLOB-объектам".
Внимание
После того как вы запрещаете анонимный доступ для аккаунта хранилища, клиенты, использующие вызов анонимного носителя, обнаруживают, что служба хранилища Azure возвращает ошибку 403 (Запретно), а не ошибку 401 (Unauthorized). Сделайте все контейнеры приватными, чтобы уменьшить эту проблему. Дополнительные сведения об изменении параметра анонимного доступа для контейнеров см. в разделе "Настройка уровня доступа для контейнера".
Для разрешения или запрета анонимного доступа требуется версия 2019-04-01 или более поздняя версия поставщика ресурсов хранилища Azure. Дополнительные сведения см. в разделе REST API поставщика ресурсов службы хранилища Microsoft Azure.
Разрешения для запрета анонимного доступа
Чтобы установить свойство AllowBlobPublicAccess для аккаунта хранения, нужны права на создание и управление аккаунтами хранения. Роли управления доступом на основе ролей в Azure (Azure RBAC), предоставляющие эти разрешения, включают в себя действие Microsoft.Storage/storageAccounts/write. Встроенные роли, включающие это действие, включают:
- роль Владельца в Azure Resource Manager
- Роль Azure Resource Manager Contributor
- Контрибьютор учетной записи хранения
Назначения ролей должны быть ограничены уровнем учетной записи хранения или выше, чтобы разрешить пользователю запретить анонимный доступ для учетной записи хранения. Подробнее о области действия ролей см. раздел Понимание области действия для 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, выполните следующие действия.
Войдите в свою учетную запись хранения на портале Azure.
Найдите параметр «Конфигурация» в разделе «Настройки».
Установите Разрешить анонимный доступ к Blob в положение включено или отключено.
Примечание.
Запрет анонимного доступа для аккаунта хранения не влияет на статические сайты, размещённые в этой учетной записи. Контейнер $web всегда является общедоступным.
После обновления настройки анонимного доступа для аккаунта хранения может пройти до 30 секунд, прежде чем изменения полностью распространятся.
Если контейнер настроен для анонимного доступа, запросы на чтение больших двоичных объектов в этом контейнере не должны быть авторизованы. Однако любые правила межсетевого экрана, которые вы настроили для аккаунта хранения, остаются в силе и блокируют трафик в прямой линии с установленными ACL.
Следующие примеры показывают, как прочитать свойство AllowBlobPublicAccess для аккаунта хранилища, чтобы определить, разрешен ли анонимный доступ в данный момент или нет. Сведения о том, как убедиться, что параметр анонимного доступа учетной записи настроен для предотвращения анонимного доступа, см. в статье "Исправление анонимного доступа" для учетной записи хранения.
Настройка уровня анонимного доступа для контейнера
Чтобы предоставить анонимным пользователям доступ к контейнеру и его блокам, сначала разрешите анонимный доступ для аккаунта хранения, а затем установите уровень анонимного доступа контейнера. Перед началом убедитесь, что анонимный доступ разрешён на уровне аккаунта (через свойство AllowBlobPublicAccess ) и что у вас есть разрешение на запись в контейнере. Если анонимный доступ для аккаунта хранения запрещён, вы не сможете настроить анонимный доступ для контейнера.
Внимание
Microsoft не рекомендует разрешать анонимный доступ к данным blob в вашей учетной записи хранения.
Когда вы разрешаете анонимный доступ для аккаунта хранения, вы можете настроить контейнер со следующими правами:
- Нет публичного доступа для чтения (портал: Private; PowerShell: Выключен): Контейнер и его скопления доступны только с авторизованным запросом. Это — параметр по умолчанию для всех новых контейнеров.
- Публичный доступ на чтение только для блобов (портал и PowerShell: Blob): Блобы в контейнере доступны для чтения по анонимному запросу, но данные контейнера недоступны по анонимному запросу. Анонимные клиенты не могут перечислять капли внутри контейнера.
- Публичный доступ к чтению контейнера и его blob (портал и PowerShell: Container): Данные контейнеров и blob можно читать анонимным запросом, за исключением настроек разрешений контейнера и метаданных контейнера. Клиенты могут перечислять blob-ы внутри контейнера по анонимному запросу, но не могут перечислять контейнеры внутри аккаунта хранения.
Вы не можете изменить уровень анонимного доступа для отдельного blob-а. Установить уровень анонимного доступа только на уровне контейнера. При создании контейнера можно задать анонимный уровень доступа контейнера или обновить параметр существующего контейнера.
Чтобы обновить уровень анонимного доступа для одного или нескольких существующих контейнеров в портал Azure, выполните следующие действия.
Перейдите к обзору вашего аккаунта хранения в портале Azure.
В колонке меню хранилища данных выберите контейнеры.
Выберите контейнеры, для которых необходимо задать уровень анонимного доступа.
Выберите «Изменить уровень доступа », чтобы открыть анонимные настройки доступа.
Выберите желаемый уровень анонимного доступа в выпадающем меню уровня анонимного доступа и выберите OK , чтобы применить изменение к выбранным контейнерам.
Чтобы проверить изменение, снова откройте Изменить уровень доступа и убедитесь, что Анонимный уровень доступа показывает выбранное вами значение.
Когда анонимный доступ для аккаунта хранения запрещён, вы не можете установить уровень анонимного доступа контейнера. Если вы пытаетесь задать уровень анонимного доступа контейнера, параметр отключен, так как анонимный доступ запрещен для учетной записи.
Проверьте параметр анонимного доступа для набора контейнеров
Вы можете проверить, какие контейнеры в одном или нескольких аккаунтах хранения настроены для анонимного доступа, перечислив контейнеры и проверив режим анонимного доступа. Этот подход является удобным решением, когда в учетной записи хранения мало контейнеров или когда параметр проверяется в небольшом числе аккаунтов хранения. Однако производительность может снизиться, если вы пытаетесь перечислить большое количество контейнеров.
В следующем примере 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. Если вы включили любую из этих возможностей, см. Поддержка функций Хранилище BLOB-объектов в учетных записях хранения Azure, чтобы оценить поддержку этой функции.