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

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

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

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

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

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

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

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

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

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

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

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

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

При использовании доступа к данным на основе удостоверений Машинное обучение Azure запрашивает маркер Azure Active Directory для проверки подлинности доступа к данным, а не хранит учетные данные в хранилище данных. Такой подход позволяет управлять доступом к данным на уровне хранилища и обеспечивает конфиденциальность учетных данных.

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

Примечание

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

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

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

Предварительные требования

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

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

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

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

Примечание

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

Контейнер 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 требует наличие у вас разрешения на доступ к соответствующему хранилищу данных.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно!

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

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

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

  • Если основным типом учетной записи хранения является BLOB-объект или ADLS Gen 2, для удостоверения пользователя требуется роль читателя BLOB-объектов.
  • Если основным типом учетной записи хранения является ADLS Gen 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/')

Однако при отправке задания обучения, которое использует набор данных, созданный с доступом к данным на основе удостоверений, для проверки подлинности доступа к данным используется управляемое удостоверение вычислительной среды обучения (вместо маркера Azure Active Directory). В этом сценарии необходимо убедиться, что служба хранилища предоставила управляемому удостоверению вычислительной среды как минимум роль читателя данных хранилища BLOB-объектов. Дополнительные сведения см. в разделе Настройка управляемого удостоверения для вычислительного кластера.

Дальнейшие действия