Руководство: подключитесь к Azure Data Lake Storage Gen2

Примечание.

В этой статье описываются устаревшие шаблоны для настройки доступа к Azure Data Lake Storage 2-го поколения. Databricks рекомендует использовать каталог Unity. См. статью "Создание хранилища метаданных каталога Unity" и Подключение в облачное хранилище объектов с помощью каталога Unity.

В этом руководстве описаны все действия, необходимые для подключения из Azure Databricks к Azure Data Lake Storage 2-го поколения с помощью OAuth 2.0 с субъектом-службой Идентификатора Microsoft Entra.

Требования

Прежде чем начать работу с этим руководством, выполните следующие задачи:

Шаг 1. Создание субъекта-службы идентификатора Microsoft Entra ID

Чтобы использовать субъекты-службы для подключения к Azure Data Lake Storage 2-го поколения, администратор должен создать новое приложение Microsoft Entra ID (прежнее название — Azure Active Directory). Если у вас уже есть субъект-служба идентификатора Microsoft Entra, перейдите к шагу 2. Создайте секрет клиента для субъекта-службы.

Чтобы создать субъект-службу идентификатора Microsoft Entra ID, выполните следующие инструкции:

  1. Войдите на портал Azure.

    Примечание.

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

  2. Если у вас есть доступ к нескольким арендаторам, подпискам или каталогам, щелкните значок Каталоги + подписки (каталог с фильтром) в верхнем меню, чтобы перейти к каталогу, в котором необходимо подготовить субъект-службу.

  3. Найдите и выберите <Microsoft Entra ID.

  4. В разделе "Управление" щелкните Регистрация приложений > Создать регистрацию.

  5. Введите имя приложения

  6. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации (один арендатор).

  7. Щелкните Зарегистрировать.

Шаг 2. Создание секрета клиента для субъекта-службы

  1. В разделе "Управление" щелкните " Сертификаты" и "Секреты".

  2. В разделе Секреты клиента выберите Новый секрет клиента.

    Создать секрет клиента

  3. В области Добавление секрета клиента в поле Описание введите описание секрета клиента.

  4. В поле Срок действия выберите срок действия секрета клиента и нажмите кнопку Добавить.

  5. Скопируйте и сохраните значение секрета клиента в безопасном месте, так как он является паролем для вашего приложения.

  6. На странице Обзор приложения в разделе Основные компоненты скопируйте следующие значения:

    • Application (client) ID (Идентификатор приложения (клиент))
    • Идентификатор каталога (клиент)

    Обзор зарегистрированного приложения Azure

Шаг 3. Предоставление субъекту-службе доступа к Azure Data Lake Storage 2-го поколения

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

  1. На портале Azure перейдите в службу Учетные записи хранения.
  2. Выберите учетную запись хранения Azure для использования.
  3. Выберите Управление доступом (IAM).
  4. Щелкните + Добавить, а затем выберите Добавить назначение ролей в раскрывающееся меню.
  5. Задайте для поля Select имя приложения идентификатора Microsoft Entra ID, созданного на шаге 1, и задайте роль для служба хранилища участника данных BLOB-объектов.
  6. Нажмите кнопку Сохранить.

Шаг 4. Добавление секрета клиента в Azure Key Vault

Секрет клиента можно сохранить на шаге 1 в Azure Key Vault.

  1. В портал Azure перейдите в службу хранилища ключей.
  2. Выберите Azure Key Vault для использования.
  3. На странице свойств хранилища ключей выберите Секреты.
  4. Нажмите кнопку +Создать или импортировать.
  5. В параметрах отправки выберите "Вручную".
  6. В поле "Имя" введите имя секрета. Имя секрета должно быть уникальным в пределах хранилища ключей.
  7. В поле "Значение" вставьте секрет клиента, сохраненный на шаге 1.
  8. Нажмите кнопку Создать.

Шаг 5. Создание секрета, поддерживаемого Azure Key Vault, область в рабочей области Azure Databricks

Чтобы сослаться на секрет клиента, хранящийся в Azure Key Vault, можно создать секрет область, поддерживаемый Azure Key Vault в Azure Databricks.

  1. Переход к https://<databricks-instance>#secrets/createScope. Этот URL-адрес учитывает регистр; область в createScope должна указываться прописными буквами.

    Создание области

  2. Введите имя области секретов. В именах областей секретов учитывается регистр.

  3. Используйте раскрывающееся меню "Управление субъектом", чтобы указать, есть MANAGE ли у всех пользователей разрешение для этого секрета область или только создателя секрета область (то есть вы).

  4. Введите DNS-имя (например, https://databrickskv.vault.azure.net/) и идентификатор ресурса, например:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Эти свойства доступны на вкладке Свойства Azure Key Vault на портале Azure.

    Вкладка

  5. Нажмите кнопку Создать.

Шаг 6. Подключение Azure Data Lake Storage 2-го поколения с помощью Python

Теперь вы можете безопасно получить доступ к данным в учетной записи хранения Azure с помощью OAuth 2.0 с субъектом-службой приложений Идентификатора Майкрософт для проверки подлинности из записной книжки Azure Databricks.

  1. Перейдите в рабочую область Azure Databricks и создайте записную книжку Python.

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

    service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>")
    
    spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
    spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
    spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    Replace

    • <scope>с именем секрета область из шага 5.
    • <service-credential-key> на имя ключа с секретом клиента.
    • <storage-account> именем учетной записи хранения Azure.
    • <application-id>с идентификатором приложения (клиента) для приложения Microsoft Entra ID.
    • <directory-id>с идентификатором каталога (клиента) для приложения Microsoft Entra ID.

    Теперь вы успешно подключили рабочую область Azure Databricks к своей учетной записи Azure Data Lake Storage 2-го поколения.

Предоставление доступа к рабочей области Azure Databricks Azure Data Lake Storage 2-го поколения

Если вы настроите брандмауэр на Azure Data Lake Storage 2-го поколения, необходимо настроить параметры сети, чтобы разрешить рабочей области Azure Databricks подключаться к Azure Data Lake Storage 2-го поколения. Сначала убедитесь, что рабочая область Azure Databricks развернута в собственной виртуальной сети после развертывания Azure Databricks в виртуальной сети Azure (внедрение виртуальной сети). Затем можно настроить частные конечные точки или доступ из виртуальной сети, чтобы разрешить подключения из подсетей к учетной записи Azure Data Lake Storage 2-го поколения.

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

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

Вы можете использовать частные конечные точки для учетной записи Azure Data Lake Storage 2-го поколения, чтобы разрешить рабочей области Azure Databricks безопасно получать доступ к данным через приватный канал.

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

Предоставление доступа из виртуальной сети

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

Дополнительные сведения, включая Azure CLI и Инструкции PowerShell, см. в статье "Предоставление доступа из виртуальной сети".

  1. Войдите на портал Azure, используя роль участника служба хранилища учетной записи Azure Data Lake Storage 2-го поколения.
  2. Перейдите к учетной записи служба хранилища Azure и перейдите на вкладку "Сеть".
  3. Убедитесь, что вы выбрали разрешение доступа из выбранных виртуальных сетей и IP-адресов.
  4. В разделе "Виртуальные сети" выберите "Добавить существующую виртуальную сеть".
  5. На боковой панели в разделе "Подписка" выберите подписку, в которую находится виртуальная сеть.
  6. В разделе "Виртуальные сети" выберите виртуальную сеть, в которую развернута рабочая область Azure Databricks.
  7. В разделе "Подсети" выберите "Выбрать все".
  8. Выберите Включить.
  9. Нажмите кнопку Сохранить, чтобы применить изменения.

Устранение неполадок

Ошибка: IllegalArgumentException: секрет не существует с область: KeyVaultScope и ключ

Возможные причины этой ошибки:

  • Поддерживаемый Databricks область, который ссылается в коде, является недопустимым.

Просмотрите имя секрета из шага 4 в этой статье.

Ошибка: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks не удалось получить доступ к keyvault

Возможные причины этой ошибки:

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

Проверьте шаг 3, чтобы убедиться, что секрет Azure Key Vault действителен. Просмотрите имя секрета из шага 4 в этой статье.

Ошибка: ADAuthenticator$HttpException: ошибка HTTP 401: сбой маркера для получения маркера из ответа AzureAD

Возможные причины этой ошибки:

  • Срок действия секретного ключа клиента субъекта-службы истек.

Создайте секрет клиента на шаге 2 в этой статье и обновите секрет в Azure Key Vault.

Ресурсы