Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
В этой статье описываются устаревшие шаблоны для настройки доступа к Azure Data Lake Storage. Databricks рекомендует использовать каталог Unity. См. статью Создание хранилища метаданных каталога Unity и статью Подключение к облачному хранилищу объектов и службам с помощью каталога Unity.
В этом руководстве описаны все шаги, необходимые для подключения из Azure Databricks к Azure Data Lake Storage, используя OAuth 2.0 с учетной записью службы Microsoft Entra ID.
Требования
Прежде чем начать работу с этим руководством, выполните следующие задачи:
- Создайте рабочую область Azure Databricks. Краткое руководство: Создание рабочей области Azure Databricks
- Создайте учетную запись хранения Azure Data Lake Storage. См. руководство по быстрому началу: Создание учетной записи хранения Azure Data Lake Storage.
- Создайте хранилище Azure Key Vault. Краткое руководство: создание Azure Key Vault
Шаг 1. Создайте учетную запись службы Microsoft Entra ID
Чтобы использовать служебные принципы для подключения к Azure Data Lake Storage, администратор должен создать новое приложение Microsoft Entra ID. Если у вас уже есть служебный принципал Microsoft Entra ID, перейдите сразу к шагу 2: Создайте секрет клиента для вашего служебного принципала.
Чтобы создать учетную запись службы Microsoft Entra ID, следуйте этим инструкциям:
Войдите на портал Azure.
Примечание.
Используемый портал отличается в зависимости от того, работает ли ваше приложение идентификатора Microsoft Entra в общедоступном облаке Azure или в национальном или независимом облаке. Дополнительные сведения см. в разделе Национальных облаков.
Если у вас есть доступ к нескольким арендаторам, подпискам или каталогам, щелкните значок Каталоги + подписки (каталог с фильтром) в верхнем меню, чтобы перейти к каталогу, в котором необходимо подготовить субъект-службу.
Найдите и выберите идентификатор Microsoft Entra ID <.
В разделе "Управление" щелкните Регистрация приложений > Создать регистрацию.
В поле Имя введите название для приложения.
В разделе Поддерживаемые типы учетных записей выберите учетные записи в этом каталоге организации (только один клиент).
Щелкните Зарегистрировать.
Шаг 2. Создание секрета клиента для субъекта-службы
В разделе "Управление" щелкните " Сертификаты" и "Секреты".
В разделе Секреты клиента выберите Новый секрет клиента.
В области Добавление секрета клиента в поле Описание введите описание секрета клиента.
Для Срок окончания выберите срок действия секрета клиента и нажмите Добавить.
Скопируйте и сохраните значение секрета клиента в безопасном месте, так как он является паролем для вашего приложения.
На странице обзора страницы приложения в разделе Essentials скопируйте следующие значения:
- Application (client) ID (Идентификатор приложения (клиент))
- Идентификатор каталога (клиент)
Шаг 3: Предоставьте доступ служебному принципалу к Azure Data Lake Storage
Доступ к ресурсам хранилища предоставляется путем назначения ролей служебному принципалу. В этом руководстве вы назначите роль Storage Blob Data Contributor для service principal в учетной записи Azure Data Lake Storage. В зависимости от конкретных требований может потребоваться назначить другие роли.
- На портале Azure перейдите в службу Учетные записи хранения.
- Выберите учетную запись хранения Azure для использования.
- Выберите Управление доступом (IAM).
- Щелкните + Добавить и выберите Добавить назначение ролей в раскрывающемся меню.
- Установите поле на название приложения Microsoft Entra ID, которое вы создали на шаге 1, и установите роль на вкладчик данных хранилища Blob.
- Нажмите кнопку Сохранить.
Шаг 4. Добавление секрета клиента в Azure Key Vault
Секрет клиента можно сохранить на шаге 1 в Azure Key Vault.
- В портал Azure перейдите в службу хранилища ключей.
- Выберите Azure Key Vault для использования.
- На страницах параметров хранилища ключей выберите Секреты.
- Щелкните + Создать/Импортировать.
- В опции отправкивыберите вручную.
- В поле "Имя" введите имя секрета. Имя секрета должно быть уникальным в пределах хранилища ключей.
- В поле "Значение" вставьте секрет клиента, сохраненный на шаге 1.
- Нажмите кнопку Создать.
Шаг 5. Настройка экземпляра хранилища ключей Azure для Azure Databricks
Перейдите на портале Azure в хранилище ключей Azure.
В разделе Параметры выберите вкладку Конфигурация доступа.
Установите модель разрешений на политику доступа к хранилищу.
Примечание.
Создание роли области секретов, поддерживаемой Azure Key Vault, предоставляет Get и разрешение List идентификатору приложения службы Azure Databricks, используя политики доступа к хранилищу ключей. Модель разрешений управления доступом на основе ролей Azure не поддерживается в Azure Databricks.
В разделе Параметрывыберите Сетевые настройки.
В брандмауэрах и виртуальных сетях установите Разрешить доступ из: на Разрешить общедоступный доступ из определённых виртуальных сетей и IP-адресов.
В разделе Исключение установите флажок Разрешить доверенным службам Microsoft обходить этот брандмауэр.
Примечание.
Вы также можете задать Разрешить доступ от: до Разрешить общедоступный доступ из всех сетей.
Шаг 6. Создание области секрета, поддерживаемой 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.
Нажмите кнопку Создать.
шаг 7. Подключение к Azure Data Lake Storage с помощью Python
Теперь вы можете безопасно получить доступ к данным в учетной записи хранения Azure, используя OAuth 2.0 с помощью служебного принципала приложения Microsoft Entra ID для аутентификации из записной книжки Azure Databricks.
Перейдите в рабочую область Azure Databricks и создайте записную книжку Python.
Выполните приведенный ниже код Python, используя приведенные ниже замены, чтобы подключиться к Azure Data Lake Storage.
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")
Заменить
-
<scope>
с именем области секрета из шага 5. -
<service-credential-key>
с именем ключа, содержащим ключ клиента. -
<storage-account>
с именем учетной записи хранения Azure. -
<application-id>
с идентификатором приложения (клиента) для приложения Microsoft Entra ID. -
<directory-id>
с идентификатором каталога (клиента) для приложения Microsoft Entra ID.
Теперь вы успешно подключили рабочую область Azure Databricks к учетной записи Azure Data Lake Storage.
-
Предоставьте вашей рабочей области Azure Databricks доступ к Azure Data Lake Storage
Если вы настроите брандмауэр в Azure Data Lake Storage, необходимо настроить параметры сети, чтобы разрешить рабочей области Azure Databricks подключаться к Azure Data Lake Storage. Сначала убедитесь, что рабочая область Azure Databricks развернута в вашей собственной виртуальной сети, следуя инструкции Развертывание Azure Databricks в виртуальной сети Azure (интеграция VNet). Затем можно настроить частные конечные точки или доступ из виртуальной сети, чтобы разрешить подключения из подсетей к учетной записи Azure Data Lake Storage.
Если вы используете бессерверные вычислительные ресурсы, такие как бессерверные хранилища SQL, необходимо предоставить доступ из бессерверной вычислительной плоскости в Azure Data Lake Storage. См. сведения о сети бессерверных вычислительных плоскостей.
Предоставить доступ с помощью частных конечных точек
Вы можете использовать частные конечные точки для учетной записи Azure Data Lake Storage, чтобы рабочая область Azure Databricks могла безопасно получать доступ к данным через частное соединение.
Сведения о создании частной конечной точки с помощью портала Azure см. в руководстве по подключению к учетной записи хранения с помощью частной конечной точки Azure. Создайте частную конечную точку в той же виртуальной сети, в которую развернута рабочая область Azure Databricks.
Предоставьте доступ из виртуальной сети
Конечные точки службы виртуальной сети позволяют защищать критически важные ресурсы службы Azure, ограничивая доступ только вашими виртуальными сетями. Вы можете включить конечную точку службы для Azure Storage в виртуальной сети (VNet), используемой для рабочей области Azure Databricks.
Дополнительные сведения, включая инструкции по Azure CLI и PowerShell, см. в Предоставление доступа из виртуальной сети.
- Войдите на портал Azure в качестве пользователя с ролью участника учетной записи хранения в учетной записи Azure Data Lake Storage.
- Перейдите к учетной записи служба хранилища Azure и перейдите на вкладку "Сеть".
- Убедитесь, что вы выбрали разрешение доступа из выбранных виртуальных сетей и IP-адресов.
- В разделе Виртуальные сетивыберите Добавить существующую виртуальную сеть.
- На боковой панели в разделе Подпискавыберите подписку, в которой находится ваша виртуальная сеть.
- В разделе Виртуальные сетивыберите виртуальную сеть, в которую развернута рабочая область Azure Databricks.
- В разделе Подсетивыберите Выбрать все.
- Выберите Включить.
- Выберите Сохранить, чтобы применить изменения.
Устранение неполадок
Ошибка: IllegalArgumentException: секрет не существует с областью действия: KeyVaultScope и ключ
Возможные причины этой ошибки:
- Область, поддерживаемая Databricks, на которую ссылаются в коде, не является допустимой.
Пересмотрите название вашего секрета на шаге 4 в этой статье.
Ошибка: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks не смог получить доступ к хранилищу ключей
Возможные причины этой ошибки:
- Область, поддерживаемая Databricks и указанная в коде, недопустима. или секрет, хранящийся в Key Vault, истек.
Проверьте шаг 3, чтобы убедиться, что секрет Azure Key Vault действителен. Проверьте название вашего секрета из шага 4 в этой статье.
Ошибка: ADAuthenticator$HttpException: ошибка HTTP 401: не удалось получить токен из ответа AzureAD
Возможные причины этой ошибки:
- Срок действия секретного ключа клиента субъекта-службы истек.
Создайте секрет клиента на шаге 2 в этой статье и обновите секрет в Azure Key Vault.