Руководство: подключитесь к 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.
Требования
Прежде чем начать работу с этим руководством, выполните следующие задачи:
- Создайте рабочую область Azure Databricks. Краткое руководство. Создание рабочей области Azure Databricks
- Создайте учетную запись хранения Azure Data Lake Storage 2-го поколения. См. краткое руководство. Создание учетной записи хранения Azure Data Lake Storage 2-го поколения.
- Создайте хранилище Azure Key Vault. Краткое руководство. Создание Azure Key Vault
Шаг 1. Создание субъекта-службы идентификатора Microsoft Entra ID
Чтобы использовать субъекты-службы для подключения к Azure Data Lake Storage 2-го поколения, администратор должен создать новое приложение идентификатора Microsoft Entra. Если у вас уже есть субъект-служба идентификатора Microsoft Entra, перейдите к шагу 2. Создайте секрет клиента для субъекта-службы.
Чтобы создать субъект-службу идентификатора Microsoft Entra ID, выполните следующие инструкции:
Войдите на портал Azure.
Примечание.
Используемый портал отличается в зависимости от того, работает ли ваше приложение идентификатора Microsoft Entra в общедоступном облаке Azure или в национальном или независимом облаке. Дополнительные сведения см. на странице национальных облаков.
Если у вас есть доступ к нескольким арендаторам, подпискам или каталогам, щелкните значок Каталоги + подписки (каталог с фильтром) в верхнем меню, чтобы перейти к каталогу, в котором необходимо подготовить субъект-службу.
Найдите и выберите <Microsoft Entra ID.
В разделе "Управление" щелкните Регистрация приложений > Создать регистрацию.
Введите имя приложения
В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации (один арендатор).
Щелкните Зарегистрировать.
Шаг 2. Создание секрета клиента для субъекта-службы
В разделе "Управление" щелкните " Сертификаты" и "Секреты".
В разделе Секреты клиента выберите Новый секрет клиента.
В области Добавление секрета клиента в поле Описание введите описание секрета клиента.
В поле Срок действия выберите срок действия секрета клиента и нажмите кнопку Добавить.
Скопируйте и сохраните значение секрета клиента в безопасном месте, так как он является паролем для вашего приложения.
На странице Обзор приложения в разделе Основные компоненты скопируйте следующие значения:
- Application (client) ID (Идентификатор приложения (клиент))
- Идентификатор каталога (клиент)
Шаг 3. Предоставление субъекту-службе доступа к Azure Data Lake Storage 2-го поколения
Доступ к ресурсам хранилища предоставляется путем назначения ролей субъекту-службе. В этом руководстве вы назначите участнику данных BLOB-объектов хранилища субъекту-службе в учетной записи Azure Data Lake Storage 2-го поколения. В зависимости от конкретных требований может потребоваться назначить другие роли.
- На портале Azure перейдите в службу Учетные записи хранения.
- Выберите учетную запись хранения Azure для использования.
- Выберите Управление доступом (IAM).
- Щелкните + Добавить, а затем выберите Добавить назначение ролей в раскрывающееся меню.
- Задайте для поля Select имя приложения Идентификатора Microsoft Entra, созданного на шаге 1, и задайте роль участнику данных BLOB-объектов хранилища.
- Нажмите кнопку Сохранить.
Шаг 4. Добавление секрета клиента в Azure Key Vault
Секрет клиента можно сохранить на шаге 1 в Azure Key Vault.
- В портал Azure перейдите в службу хранилища ключей.
- Выберите Azure Key Vault для использования.
- На странице свойств хранилища ключей выберите Секреты.
- Нажмите кнопку +Создать или импортировать.
- В параметрах отправки выберите "Вручную".
- В поле "Имя" введите имя секрета. Имя секрета должно быть уникальным в пределах хранилища ключей.
- В поле "Значение" вставьте секрет клиента, сохраненный на шаге 1.
- Нажмите кнопку Создать.
Шаг 5. Создание области секрета, поддерживаемой Azure Key Vault, в рабочей области Azure Databricks
Чтобы ссылаться на секрет клиента, хранящийся в Azure Key Vault, можно создать область секрета, поддерживаемую Azure Key Vault в Azure Databricks.
Переход к
https://<databricks-instance>#secrets/createScope
. Этот URL-адрес учитывает регистр; область вcreateScope
должна указываться прописными буквами.Введите имя области секретов. В именах областей секретов учитывается регистр.
Используйте раскрывающееся меню "Управление субъектом", чтобы указать, есть
MANAGE
ли у всех пользователей разрешение для этой области секрета или только создатель области секрета (то есть вы).Введите DNS-имя (например,
https://databrickskv.vault.azure.net/
) и идентификатор ресурса, например:/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
Эти свойства доступны на вкладке "Свойства параметров>" в Azure Key Vault в портал Azure.
Нажмите кнопку Создать.
Шаг 6. Подключение к Azure Data Lake Storage 2-го поколения с помощью Python
Теперь вы можете безопасно получить доступ к данным в учетной записи хранения Azure с помощью OAuth 2.0 с субъектом-службой приложений Идентификатора Майкрософт для проверки подлинности из записной книжки Azure Databricks.
Перейдите в рабочую область Azure Databricks и создайте записную книжку Python.
Выполните следующий код 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, см. в статье "Предоставление доступа из виртуальной сети".
- Войдите на портал Azure в качестве пользователя с ролью участника учетной записи хранения в вашей учетной записи Azure Data Lake Storage 2-го поколения.
- Перейдите к учетной записи служба хранилища Azure и перейдите на вкладку "Сеть".
- Убедитесь, что вы выбрали разрешение доступа из выбранных виртуальных сетей и IP-адресов.
- В разделе "Виртуальные сети" выберите "Добавить существующую виртуальную сеть".
- На боковой панели в разделе "Подписка" выберите подписку, в которую находится виртуальная сеть.
- В разделе "Виртуальные сети" выберите виртуальную сеть, в которую развернута рабочая область Azure Databricks.
- В разделе "Подсети" выберите "Выбрать все".
- Выберите Включить.
- Нажмите кнопку Сохранить, чтобы применить изменения.
Устранение неполадок
Ошибка: 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.
Ресурсы
- Доступ к хранилищу с помощью субъекта-службы и идентификатора Microsoft Entra (Azure Active Directory)
- Подключение к Azure Data Lake Storage 2-го поколения и Хранилище BLOB-объектов Azure
- Создание области секретов с поддержкой Azure Key Vault
- Начало работы. Запрос и визуализация данных из записной книжки