Авторизация доступа к BLOB-объектам с помощью Microsoft Entra ID

служба хранилища Azure поддерживает использование идентификатора Microsoft Entra для авторизации запросов к данным BLOB-объектов. Используя Microsoft Entra ID, вы можете применять управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности, которым может быть пользователь, группа или служебный принципал приложения. Идентификатор Microsoft Entra проверяет подлинность субъекта безопасности и возвращает маркер OAuth 2.0. Используйте токен для авторизации запроса к службе Blob.

Вы можете использовать авторизацию Microsoft Entra ID для всех учетных записей хранения общего назначения и blob-хранилища во всех общедоступных регионах и национальных облаках. Только учетные записи хранения, созданные с помощью модели развертывания Azure Resource Manager, поддерживают авторизацию Microsoft Entra.

Внимание

Для оптимальной безопасности корпорация Майкрософт рекомендует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к blob-объектам, очередям и табличным данным, когда это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации общего ключа. Дополнительные сведения об управляемых удостоверениях см. в статье "Что такое управляемые удостоверения для ресурсов Azure". Пример включения и использования управляемого удостоверения для приложения .NET см. в статье Аутентификация размещенных в Azure приложений в ресурсах Azure с помощью .NET.

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

В сценариях, когда используются общие ключи доступа (SAS), корпорация Майкрософт рекомендует использовать SAS делегирования пользователя. SAS делегирования пользователей защищены учетными данными Microsoft Entra вместо ключа учетной записи. Дополнительные сведения о подписанных URL-адресах см. в статье Предоставление ограниченного доступа к данным с помощью подписанных URL-адресов. Пример создания и использования SAS делегирования пользователя с .NET см. в статье "Создание SAS делегирования пользователя для BLOB с использованием .NET".

Общие сведения об идентификаторе Microsoft Entra для больших двоичных объектов

Если субъект безопасности (пользователь, группа или приложение) пытается получить доступ к ресурсу BLOB, запрос должен быть авторизован, если только этот объект BLOB не доступен для анонимного доступа. С помощью Microsoft Entra ID доступ к ресурсу — это двухэтапный процесс:

  1. Вначале удостоверение участника безопасности проходит аутентификацию, которая возвращает токен OAuth 2.0.

    Для этапа аутентификации требуется, чтобы приложение запросило маркер доступа OAuth 2.0 во время выполнения. Если приложение работает внутри сущности Azure, такой как виртуальная машина Azure, масштабируемый набор виртуальных машин или приложение «Функции Azure», оно может использовать управляемое удостоверение для доступа к объектам блоб.

  2. Затем токен передается в рамках запроса к службе BLOB, а служба использует его для авторизации доступа к указанному ресурсу.

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

Использование учетной записи Microsoft Entra с порталом, PowerShell или Azure CLI

Чтобы узнать, как получить доступ к данным на портале Azure с помощью учетной записи Microsoft Entra, см. в статье Доступ к данным из портала Azure. Сведения о вызове команд Azure PowerShell или Azure CLI с помощью учетной записи Microsoft Entra можно найти в разделе Доступ данных из PowerShell или Azure CLI.

Использование идентификатора Microsoft Entra для авторизации доступа в коде приложения

Чтобы авторизовать доступ к служба хранилища Azure с помощью Microsoft Entra ID, используйте одну из следующих клиентских библиотек для получения токена OAuth 2.0:

  • Клиентская библиотека удостоверений Azure рекомендуется для большинства сценариев разработки.
  • Microsoft Authentication Library (MSAL) может подходить для определенных сложных сценариев.

Клиентская библиотека удостоверений Azure

Клиентская библиотека Azure упрощает процесс получения токена доступа OAuth 2.0 для авторизации благодаря Microsoft Entra ID через Azure SDK. Последние версии клиентских библиотек служба хранилища Azure для .NET, Java, Python, JavaScript и Go интегрируются с библиотеками удостоверений Azure для каждого из этих языков, чтобы обеспечить простой и безопасный способ получения маркера доступа для авторизации запросов служба хранилища Azure.

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

Возвращаемый клиентской библиотекой Azure Identity маркер доступа инкапсулируется в учетные данные токена. Затем учетные данные токена можно использовать для получения объекта клиента для службы, чтобы выполнять авторизованные операции в служба хранилища Azure. Простой способ получить токен доступа и учетные данные токена — использовать класс DefaultAzureCredential, который предоставляет библиотека клиента Azure Identity. DefaultAzureCredential пытается получить учетные данные токена, последовательно пробуя несколько различных типов учетных данных. DefaultAzureCredential работает как в среде разработки, так и в Azure.

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

Язык .СЕТЬ Ява JavaScript Питон Иди
Обзор проверки подлинности с помощью идентификатора Microsoft Entra Проверка подлинности приложений .NET с помощью служб Azure Аутентификация Azure с помощью Java и Azure Identity Проверка подлинности приложений JavaScript в Azure с помощью пакета SDK Azure Проверка подлинности приложений Python в Azure с помощью пакета SDK Azure
Аутентификация с использованием учетных данных службы разработчика Аутентификация приложений .NET к службам Azure во время локальной разработки с помощью служебных принципалов Аутентификация Azure с помощью учетной записи службы Аутентификация приложений JS в службах Azure с помощью принципала службы Аутентификация приложений Python к службам Azure во время локальной разработки с использованием сервисных принципалов Аутентификация Azure SDK для Go с помощью учетной записи службы
Проверка подлинности с помощью учетных записей разработчика или пользователей Проверка подлинности приложений .NET в службах Azure во время локальной разработки с помощью учетных записей разработчиков Проверка подлинности Azure с учетными данными пользователя Аутентификация приложений JS в службах Azure с учетными записями разработки Проверка подлинности приложений Python в службах Azure во время локальной разработки с помощью учетных записей разработчиков Аутентификация в Azure с использованием Azure SDK для Go
Аутентификация из приложений, расположенных в Azure Проверка подлинности размещенных в Azure приложений в ресурсах Azure с помощью пакета SDK Azure для .NET Проверка подлинности размещенных в Azure приложений Java Проверка подлинности размещенных в Azure приложений JavaScript в ресурсах Azure с помощью пакета SDK Azure для JavaScript Проверка подлинности размещенных в Azure приложений в ресурсах Azure с помощью пакета SDK Azure для Python Аутентификация с использованием Azure SDK для Go через управляемое удостоверение
Проверка подлинности из локальных приложений Аутентификация в ресурсах Azure из приложений .NET, размещенных в локальной среде Проверка подлинности локальных приложений JavaScript в ресурсах Azure Аутентификация в ресурсах Azure из приложений Python, размещенных в локальной среде
Общие сведения о клиентской библиотеке идентификации Клиентская библиотека удостоверений Azure для .NET Клиентская библиотека идентификации Azure для Java Клиентская библиотека идентификации Azure для JavaScript Клиентская библиотека Azure Identity для Python Клиентская библиотека идентификации Azure для Go

Библиотека проверки подлинности Майкрософт (MSAL)

Хотя Microsoft рекомендует использовать клиентскую библиотеку удостоверений Azure, где это возможно, библиотека MSAL может использоваться в определенных сложных сценариях. Дополнительные сведения см. в разделе "Сведения о MSAL".

При использовании MSAL для получения токена OAuth для доступа к служба хранилища Azure необходимо указать идентификатор ресурса Microsoft Entra. Идентификатор ресурса Microsoft Entra указывает аудиторию, для которой можно использовать маркер, выданный для предоставления доступа к ресурсу Azure. В случае служба хранилища Azure идентификатор ресурса может быть конкретным для одной учетной записи хранения или может применяться к любой учетной записи хранения.

Если указать идентификатор ресурса, относящийся к одной учетной записи хранения и службе, идентификатор ресурса используется для получения маркера для авторизации запросов только к указанной учетной записи и службе. В следующей таблице перечислены значения, используемые для идентификатора ресурса, в зависимости от облака, с которым вы работаете. Замените <account-name> именем своей учетной записи хранения.

Облако ИД ресурса
Глобальная служба Azure https://<account-name>.blob.core.windows.net
Azure для государственных организаций https://<account-name>.blob.core.usgovcloudapi.net
Azure для Китая (21Vianet) https://<account-name>.blob.core.chinacloudapi.cn

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

Облако ИД ресурса
Глобальная служба Azure
Azure для государственных организаций
Azure для Китая (21Vianet)
https://storage.azure.com/

Назначение ролей Azure для предоставления прав доступа

Microsoft Entra разрешает доступ к защищенным ресурсам через Azure RBAC. Служба хранилища Azure определяет набор встроенных ролей RBAC, охватывающих общие наборы разрешений, используемые для доступа к данным BLOB-объектов. Вы также можете определить собственные роли для доступа к данным BLOB. Дополнительные сведения о назначении ролей Azure для доступа к BLOB-объектам см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

Субъект безопасности Microsoft Entra может быть пользователем, группой, служебным принципалом приложений или управляемым удостоверением для ресурсов Azure. Роли RBAC, которые вы назначаете субъекту безопасности, определяют разрешения, которые субъект имеет для указанного ресурса.

Сведения о том, как назначить роли Azure для доступа к объектам BLOB, см. в статье Назначение роли Azure для доступа к данным BLOB.

В некоторых случаях вам может потребоваться включить детализированный доступ к объектам BLOB или упростить управление разрешениями, если у вас много назначений ролей для ресурса хранилища. Используйте Azure управление доступом на основе атрибутов (Azure ABAC) для настройки условий назначения ролей. Вы можете использовать условия с настраиваемой ролью или выбрать встроенные роли. Дополнительные сведения о настройке условий для ресурсов хранилища Azure с помощью ABAC см. в статье Авторизация доступа к большим двоичным объектам с помощью условий назначения ролей Azure (предварительная версия). Подробные сведения о поддерживаемых условиях для операций с данными BLOB см. в статье Действия и атрибуты условий назначения ролей Azure в служба хранилища Azure (предварительная версия).

Примечание.

При создании учетной записи служба хранилища Azure вам не назначены автоматические разрешения на доступ к данным через Microsoft Entra ID. Для получения доступа к хранилищу Blob необходимо явно назначить себе роль Azure. Вы можете назначить ее на уровне подписки, группы ресурсов, учетной записи хранения, контейнера.

Область ресурса

Прежде чем присвоить роль RBAC Azure субъекту безопасности, определите область доступа, которую этот субъект должен иметь. Всегда предоставлять только самую узкую возможную область. Роли RBAC Azure, определенные для более широкого уровня, унаследованы ресурсами под ними.

Вы можете ограничить доступ к ресурсам BLOB-объектов Azure на следующих уровнях, начиная с самой узкой области:

  • Отдельный контейнер. В этой области назначение роли применяется ко всем blob-объектам в контейнере, а также к свойствам и метаданным контейнера.
  • Учетная запись хранения. В этой области назначение ролей применяется ко всем контейнерам и их BLOB-объектам.
  • Группа ресурсов. В этой области назначение ролей применяется ко всем контейнерам, а также ко всем учетным записям хранения в группе ресурсов.
  • Подписка. В этой области назначение ролей применяется ко всем контейнерам во всех учетных записях хранения во всех группах ресурсов в подписке.
  • Группа управления. В этой области назначение ролей применяется ко всем контейнерам во всех учетных записях хранения во всех группах ресурсов во всех подписках в группе управления.

Дополнительные сведения об области для назначения ролей Azure RBAC см. в статье Сведения об области действия для Azure RBAC.

Встроенные роли Azure для BLOB-объектов

Azure RBAC предоставляет несколько встроенных ролей для авторизации доступа к данным BLOB-объектов с помощью Microsoft Entra ID и OAuth. Некоторые примеры ролей, которые предоставляют разрешения для ресурсов данных в хранилище Azure, включают:

Чтобы узнать, как назначить встроенную роль Azure субъекту безопасности, см. статью Назначение роли Azure для доступа к данным BLOB-объектов. Чтобы узнать, как составить список ролей RBAC Azure и их разрешений, см. Список определений ролей Azure.

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

Только роли, явно определенные для доступа к данным, позволяют объекту безопасности получать доступ к BLOB-данным. Встроенные роли, такие как владелец, участник и участник учетной записи хранения, позволяют субъекту безопасности управлять учетной записью хранения, но не предоставляют доступ к данным BLOB в этой учетной записи через Microsoft Entra ID. Однако, если роль включает Microsoft.Storage/storageAccounts/listKeys/action, то пользователь, которому назначена эта роль, может получить доступ к данным в аккаунте хранения через авторизацию общего ключа, используя ключи доступа к аккаунту. Дополнительные сведения см. в разделе Выбор способа авторизации доступа к данным BLOB-объектов на портале Azure.

Подробные сведения о встроенных ролях Azure для служба хранилища Azure, как для служб данных, так и для службы управления, см. в разделе Хранилище в разделе Встроенные роли Azure для Azure RBAC. Кроме того, сведения о различных типах ролей, которые предоставляют разрешения в Azure, см. в ролях Azure, ролях Microsoft Entra и классических ролях администратора подписки.

Внимание

Назначения ролей Azure могут занимать до 30 минут для распространения.

Разрешения доступа к операциям с данными

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

Задержки распространения назначения ролей для доступа к данным BLOB

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

Встроенные роли можно назначать с действиями данных в области группы управления. Однако в редких сценариях может возникнуть значительная задержка (до 12 часов), прежде чем разрешения на действия данных эффективны для определенных типов ресурсов. В конце концов, разрешения применяются. Для встроенных ролей с операциями с данными, добавление или удаление назначений ролей в области управления группами не рекомендуется для сценариев, когда требуется своевременное введение в силу или отзыв разрешений, например, в системе управления привилегированными идентификаторами Microsoft Entra (PIM).

Если вы устанавливаете соответствующие разрешения на доступ к данным через Microsoft Entra ID и не можете получить доступ к данным, например, если вы получаете ошибку "AuthorizationPermissionMismatch", убедитесь, что прошло достаточно времени для того, чтобы изменения разрешений, внесенные в Microsoft Entra ID, были реплицированы. Кроме того, убедитесь, что у вас нет каких-либо запретных назначений, которые блокируют доступ. Дополнительные сведения см. в разделе Понимание отказов назначений Azure.

Доступ к данным с помощью учетной записи Microsoft Entra

Вы можете авторизовать доступ к данным BLOB-объектов с помощью портала Azure, PowerShell или Azure CLI с помощью учетной записи Microsoft Entra или с помощью ключей доступа к учетной записи (авторизация с общим ключом).

Внимание

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

Использование ключей доступа и строка подключения должно быть ограничено первоначальным подтверждением концепции приложений или прототипов разработки, которые не обращаются к рабочим или конфиденциальным данным. В противном случае классы проверки подлинности на основе маркеров, доступные в пакете SDK Azure, всегда должны быть предпочтительнее при проверке подлинности в ресурсах Azure.

Компания Майкрософт рекомендует клиентам использовать Microsoft Entra ID или общий ключ доступа (SAS), чтобы авторизовать доступ к данным в службе хранения Azure. Дополнительные сведения см. в разделе "Авторизация операций для доступа к данным".

Доступ к данным с портала Azure

Портал Azure может использовать учетную запись Microsoft Entra или ключи доступа к учетной записи для доступа к данным BLOB в Azure Storage. Схема авторизации, используемая порталом Azure, зависит от назначенных вам ролей Azure.

При попытке доступа к данным блоба портал Azure сначала проверяет, назначена ли вам роль Azure с Microsoft.Storage/storageAccounts/listkeys/action. Если вам назначена роль с этим действием, портал Azure использует ключ учетной записи для доступа к данным объектов BLOB через авторизацию общим ключом. Если вам не назначается роль для этого действия, портал Azure пытается получить доступ к данным при помощи учетной записи Microsoft Entra.

Чтобы получить доступ к данным BLOB-объектов на портале Azure с помощью учетной записи Microsoft Entra, требуются разрешения для доступа к данным BLOB-объектов, а также необходимы разрешения для перехода через ресурсы учетной записи хранения на портале Azure. Встроенные роли, предоставляемые службой служба хранилища Azure, предоставляют доступ к объектам BLOB, однако не дают разрешений для ресурсов учетной записи хранилища. По этой причине для доступа к порталу также требуется назначение роли Azure Resource Manager (например, роли Читатель), ограниченной до уровня учетной записи хранилища или выше. Роль Читатель предоставляет наиболее ограниченные разрешения, однако можно использовать и другую роль Azure Resource Manager, которая предоставляет доступ к ресурсам управления учетными записями хранения. Дополнительные сведения о назначении пользователям разрешений для доступа к данным на портале Azure с учетной записью Microsoft Entra см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

Портал Azure указывает, какая схема авторизации используется при переходе к контейнеру. Дополнительные сведения о доступе к данным на портале см. в разделе Выбор способа авторизации доступа к данным BLOB-объектов на портале Azure.

Доступ к данным с помощью PowerShell или Azure CLI

Azure CLI и PowerShell поддерживают вход с помощью учетных данных Microsoft Entra. После входа в систему сеанс выполняется под этими учетными данными. Дополнительные сведения см. в следующих статьях:

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

На поддержку данной функции может повлиять включение протокола Data Lake Storage 2-го поколения, протокола сетевой файловой системы (NFS) 3.0 или протокола SFTP. Если вы активировали любую из этих возможностей, см. Поддержка функций хранилища BLOB в учетных записях Azure, чтобы оценить её поддержку.

Авторизация операций с данными больших двоичных объектов с идентификатором Microsoft Entra поддерживается только для REST API версий 2017-11-09 и более поздних версий. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.

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