Подключение к хранилищу с доступом к данным на основе удостоверений с помощью пакета SDK версии 1

В этой статье вы узнаете, как подключиться к службам хранилища в Azure с доступом к данным на основе удостоверений и Машинное обучение Azure хранилищами данных с помощью пакета SDK Машинное обучение Azure для Python.

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

Сведения о создании хранилищ данных с доступом к данным на основе удостоверений через пользовательский интерфейс студии Машинного обучения Azure см. в статье Подключение к данным с помощью студии Машинного обучения Azure.

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

Доступ к данным на основе удостоверений в Машинном обучении Azure

Доступ к данным на основе удостоверений можно применить в Машинное обучение Azure в двух сценариях. Эти сценарии подходят для доступа на основе удостоверений при работе с конфиденциальными данными и требуют более детального управления доступом к данным:

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

Доступ к данным на основе удостоверений не поддерживается для экспериментов автоматизированного машинного обучения.

  • Доступ к службам хранилища
  • Обучение моделей машинного обучения с помощью частных данных

Доступ к службам хранилища

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

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

При использовании доступа к данным на основе удостоверений Машинное обучение Azure запрашивает маркер Microsoft Entra для проверки подлинности доступа к данным вместо хранения учетных данных в хранилище данных. Этот подход позволяет управлять доступом к данным на уровне хранилища и поддерживать безопасность учетных данных.

Это же поведение применяется, когда вы:

Примечание.

Учетные данные, сохраненные с помощью проверки подлинности на основе учетных данных, включают идентификатор подписки, маркеры подписанного URL-адреса (SAS), ключи доступа к хранилищу и сведения о субъекте-службе, такие как идентификатор клиента.

Обучение модели на частных данных

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

Необходимые компоненты

Создание и регистрация хранилищ данных

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

Дополнительные сведения о подключении к хранилищу данных за виртуальными сетями см. в разделе Работа с виртуальными сетями.

В следующем коде обратите внимание на отсутствие параметров проверки подлинности, таких как sas_token, account_key, subscription_id и субъект-служба client_id. Это упущение указывает, что Машинное обучение Azure использует доступ к данным на основе удостоверений для проверки подлинности. Так как создание хранилищ данных обычно происходит в интерактивном режиме в записной книжке или в студии, Проверка подлинности доступа к данным использует маркер Microsoft Entra.

Примечание.

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

Контейнер BLOB-объектов Azure

Чтобы зарегистрировать контейнер BLOB-объектов в качестве хранилища данных, используйте register_azure_blob_container().

Следующий код создает и регистрирует хранилище данных credentialless_blob в рабочей области ws и присваивает его переменной blob_datastore. Это хранилище данных обращается к контейнеру BLOB-объектов my_container_name в учетной записи хранения my-account-name.

# Create blob datastore without credentials.
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
                                                      datastore_name='credentialless_blob',
                                                      container_name='my_container_name',
                                                      account_name='my_account_name')

Хранилище Azure Data Lake Storage 1-го поколения

Используйте метод register_azure_data_lake(), чтобы зарегистрировать хранилище, которое подключается к хранилищу данных Azure Data Lake Storage 1-го поколения.

Следующий код создает и регистрирует хранилище данных credentialless_adls1 в рабочей области workspace и присваивает его переменной adls_dstore. Это хранилище данных получает доступ к учетной записи хранения Azure Data Lake Store adls_storage.

# Create Azure Data Lake Storage Gen1 datastore without credentials.
adls_dstore = Datastore.register_azure_data_lake(workspace = workspace,
                                                 datastore_name='credentialless_adls1',
                                                 store_name='adls_storage')

Azure Data Lake Storage 2-го поколения

Используйте метод register_azure_data_lake_gen2(), чтобы зарегистрировать хранилище, которое подключается к хранилищу данных Azure Data Lake Storage 2-го поколения.

Следующий код создает и регистрирует хранилище данных credentialless_adls2 в рабочей области ws и присваивает его переменной adls2_dstore. Это хранилище данных обращается к файловой системе tabular в учетной записи хранения myadls2.

# Create Azure Data Lake Storage Gen2 datastore without credentials.
adls2_dstore = Datastore.register_azure_data_lake_gen2(workspace=ws, 
                                                       datastore_name='credentialless_adls2', 
                                                       filesystem='tabular', 
                                                       account_name='myadls2')

База данных SQL Azure

Для базы данных SQL Azure используйте register_azure_sql_database (), чтобы зарегистрировать хранилище данных, которое подключается к хранилищу базы данных SQL Azure.

Следующий код создает и регистрирует хранилище данных credentialless_sqldb в рабочей области ws и присваивает его переменной sqldb_dstore. Это хранилище данных обращается к базе данных mydb на myserver сервере базы данных SQL.

# Create a sqldatabase datastore without credentials
                                                       
sqldb_dstore = Datastore.register_azure_sql_database(workspace=ws,
                                                       datastore_name='credentialless_sqldb',
                                                       server_name='myserver',
                                                       database_name='mydb')                                                       
                                                   

Разрешения на доступ к хранилищу

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

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

Кросс-клиентский доступ к учетным записям хранения не поддерживается. Если для вашего сценария необходим доступ между клиентами, обратитесь к псевдониму amldatasupport@microsoft.com группы поддержки данных Машинное обучение Azure, чтобы получить помощь с пользовательским решением кода.

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

  • хранилище BLOB-объектов Azure
  • Хранилище Azure Data Lake Storage 1-го поколения
  • Azure Data Lake Storage 2-го поколения
  • База данных SQL Azure

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

Если вы предпочитаете не использовать удостоверение пользователя (идентификатор Microsoft Entra ID), вы также можете предоставить управляемому удостоверению рабочей области разрешение MSI для создания хранилища данных. Для этого необходимо иметь разрешения владельца для учетной записи хранения и добавить grant_workspace_access= True параметр в метод регистрации данных.

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

Работа с виртуальными сетями

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

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

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

  • В сценариях, где доступ к хранилищу разрешен только определенным IP-адресам и подсетям, Машинное обучение Azure использует MSI-файл рабочей области для выполнения предварительных версий и профилей данных.

  • Если используется хранилище ADLS Gen 2 или большой двоичный объект, и хранилище имеет параметры виртуальной сети, клиенты могут использовать удостоверение пользователя или MSI рабочей области в зависимости от параметров хранилища данных, определенных во время создания.

  • Если параметр виртуальной сети имеет значение "Разрешить службы Azure в списке доверенных служб для доступа к этой учетной записи хранения", то используется MSI-файл рабочей области.

Использование данных в хранилище

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

Внимание

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

Наборы данных упаковывают ваши данные в потребляемый объект с отложенной оценкой для задач машинного обучения, таких как обучение. Кроме того, с помощью наборов данных можно загружать или подключать файлы любого формата из служб хранилища Azure, таких как хранилище BLOB-объектов Azure и Azure Data Lake, к целевому объекту вычислений.

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

  • Если базовый тип учетной записи хранения — BLOB-объект или ADLS 2-го поколения, удостоверение пользователя должно иметь роль читателя BLOB-объектов.
  • Если базовое хранилище — ADLS 1-го поколения, вы можете задать разрешения с помощью списка контроль доступа хранилища (ACL).

В следующем примере blob_datastore уже существует и использует доступ к данным на основе удостоверений.

blob_dataset = Dataset.Tabular.from_delimited_files(blob_datastore,'test.csv') 

Вы также можете пропустить создание хранилища данных и создать наборы данных непосредственно из URL-адресов хранилища. В настоящее время эта функция поддерживает только BLOB-объекты Azure и Azure Data Lake Storage 1-го и 2-го поколения. Для создания на основе URL-адреса хранилища требуется только удостоверение пользователя для проверки подлинности.

blob_dset = Dataset.File.from_files('https://myblob.blob.core.windows.net/may/keras-mnist-fashion/')

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

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