Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На этой странице объясняется, как авторизовать доступ к ресурсам Azure Databricks из автоматических процессов, таких как автоматизированные команды CLI или вызовы REST API, выполненные из скриптов или приложений.
Azure Databricks использует OAuth 2.0 в качестве предпочтительного протокола для авторизации и проверки подлинности субъекта-службы за пределами пользовательского интерфейса. Единая аутентификация клиентов автоматизирует создание и обновление токенов. Когда субъект-служба входит и получает согласие, OAuth выдает маркер доступа для интерфейса командной строки, пакета SDK или другого средства, используемого от его имени. Каждый маркер доступа действителен в течение одного часа, после чего новый маркер автоматически запрашивается.
На этой странице авторизация ссылается на использование OAuth для предоставления субъекту-службе доступа к ресурсам Azure Databricks, а проверка подлинности относится к проверке учетных данных с помощью маркеров доступа.
Дополнительные сведения см. в статье "Авторизация доступа к ресурсам Azure Databricks".
Замечание
На этой странице рассматривается аутентификация OAuth M2M для служебных принципалов, управляемых Databricks. Если вы используете субъекты-службы, управляемые Microsoft Entra, см. статью "Проверка подлинности с помощью субъектов-служб Microsoft Entra".
Способы авторизации субъекта-службы
Azure Databricks поддерживает два способа авторизации служебного принципала:
Автоматически (рекомендуется): Используйте единую проверку подлинности с поддерживаемыми инструментами и пакетами SDK, такими как пакет SDK Azure Databricks Terraform. Этот подход обрабатывает создание и обновление маркеров автоматически и идеально подходит для автоматизации или других ненаблюдаемых рабочих нагрузок.
Вручную: Создайте проверяющее устройство кода и вызов подтверждения, а затем обменяйте их на токен OAuth. Используйте этот метод, если средство или API не поддерживает единую проверку подлинности. Возможно, вам потребуется создать собственный механизм обновления токенов для вашего приложения. Дополнительные сведения см. в руководстве по созданию маркеров доступа OAuth M2M.
Предпосылки
Перед настройкой OAuth выполните следующие действия.
- Создайте служебный принципал Azure Databricks. См. статью "Добавление сервисных принципалов в вашу учетную запись".
- Перейдите на вкладку "Конфигурация" субъекта-службы и выберите права, которые он должен иметь для этой рабочей области.
- Перейдите на вкладку "Разрешения" и предоставьте доступ ко всем пользователям Azure Databricks, субъектам-службам и группам, которым требуется управлять и использовать этот субъект-службу. См. раздел "Кто может управлять и использовать субъекты-службы?".
Шаг 1. Создание секрета OAuth
Чтобы авторизовать доступ к ресурсам Azure Databricks с помощью OAuth, необходимо создать секрет OAuth. Секрет используется для создания токенов доступа OAuth для аутентификации. Субъект-служба может иметь до пяти секретов OAuth, и каждый секрет может быть действительным до двух лет.
Администраторы учетных записей и администраторы рабочей области могут создавать секрет OAuth для служебного субъекта.
- Щелкните имя пользователя в верхней строке и выберите "Параметры".
- Перейдите на вкладку Идентификация и доступ.
- Рядом с учетными записями служб нажмите Управление.
- Выберите сервисный принципал.
- Перейдите на вкладку "Секреты ".
- Нажмите кнопку "Создать секрет".
- Задайте время существования секрета в днях (максимум 730 дней).
- Нажмите кнопку "Создать".
- Скопируйте отображаемый секрет и идентификатор клиента, а затем нажмите кнопку "Готово". Секрет отображается только один раз. Идентификатор клиента совпадает с идентификатором приложения субъекта-службы.
Администраторы учетных записей также могут создавать секрет OAuth из консоли учетной записи. На вкладке Управление пользователями выберите учетную запись службы, а затем перейдите на вкладку Учетные данные и секреты.
Замечание
Чтобы субъект-служба мог использовать кластеры или хранилища SQL, необходимо предоставить субъекту-службе доступ к ним. См. сведения о разрешениях вычислений или управлении хранилищем SQL.
Шаг 2. Использование авторизации OAuth
Чтобы использовать авторизацию OAuth с единым инструментом аутентификации, необходимо задать следующие связанные переменные среды, поля, поля .databrickscfg, поля Terraform или поля Config.
- Хост Azure Databricks, указанный как
https://accounts.azuredatabricks.netдля операций с учетной записью или целевой URL-адрес для рабочей области, напримерhttps://adb-1234567890123456.7.azuredatabricks.netдля операций с рабочей областью. - Идентификатор учетной записи Azure Databricks для операций с учетной записью Azure Databricks.
- Идентификатор клиента служебного субъекта.
- Секрет сервисного принципала.
Чтобы выполнить аутентификацию субъекта службы OAuth, интегрируйте в код следующие компоненты в зависимости от используемого инструмента или пакета SDK.
Окружающая среда
Сведения об использовании переменных среды для определенного типа проверки подлинности Azure Databricks с помощью инструмента или пакета SDK см. в статье "Авторизация доступа к ресурсам Azure Databricks " или документации по средству или пакету SDK. См. также переменные среды и поля для единой проверки подлинности и приоритет метода проверки подлинности.
Для операций на уровне учетной записи задайте следующие переменные среды:
-
DATABRICKS_HOST, установите значение URL-адреса консоли учетной записи Azure Databricks.https://accounts.azuredatabricks.net DATABRICKS_ACCOUNT_IDDATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET
Для операций на уровне рабочей областизадайте следующие переменные среды:
-
DATABRICKS_HOST, установите значение URL-адреса azure Databricks для каждой рабочей области, напримерhttps://adb-1234567890123456.7.azuredatabricks.net. DATABRICKS_CLIENT_IDDATABRICKS_CLIENT_SECRET
Профиль
Создайте или определите профиль конфигурации Azure Databricks со следующими полями в вашем .databrickscfg файле. Если вы создаёте профиль, замените заполнители соответствующими значениями. Сведения об использовании профиля с инструментом или пакетом SDK см. в статье "Авторизация доступа к ресурсам Azure Databricks " или документации по средству или пакету SDK. См. также переменные среды и поля для единой проверки подлинности и приоритет метода проверки подлинности.
Для операций уровня учетной записи установите следующие значения в файле .databrickscfg. В этом случае URL-адрес консоли учетной записи Azure Databricks:https://accounts.azuredatabricks.net
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
Для операций на уровне рабочей области задайте следующие значения в .databrickscfg файле. В этом случае хостом является URL-адрес рабочего пространства Azure Databricks
[<some-unique-configuration-profile-name>]
host = <workspace-url>
client_id = <service-principal-client-id>
client_secret = <service-principal-secret>
интерфейс командной строки (CLI)
Для интерфейса командной строки Databricks выполните одно из следующих действий:
- Задайте переменные среды, указанные на вкладке "Среда ".
- Задайте значения в
.databrickscfgфайле, как указано на вкладке "Профиль ".
Переменные среды всегда имеют приоритет над значениями в вашем файле .databrickscfg.
См. также проверку подлинности OAuth на компьютере (M2M).
Подключить
Замечание
Проверка подлинности субъекта-службы OAuth поддерживается в следующих версиях Databricks Connect:
- Для Python, Databricks Connect для Databricks Runtime 14.0 и выше.
- Для Scala, используйте Databricks Connect с Databricks Runtime версии 13.3 LTS и выше. Пакет SDK Databricks для Java, который входит в состав Databricks Connect для Databricks Runtime 13.3 LTS и выше, необходимо обновить до пакета SDK Databricks для Java 0.17.0 или более поздней версии.
Для Databricks Connect можно выполнить следующие действия:
-
Используйте профиль конфигурации: Задайте значения уровня рабочей области в
.databrickscfgфайле, как описано на вкладке "Профиль ". Также задайте URL-адрес экземпляраcluster_idрабочей области. -
Используйте переменные среды: Задайте те же значения, что и на вкладке "Среда ". Также задайте URL-адрес экземпляра
DATABRICKS_CLUSTER_IDрабочей области.
Значения в .databrickscfg имеют приоритет над переменными среды.
Сведения об инициализации Databricks Connect с этими параметрами см. в разделе "Конфигурация вычислений для Databricks Connect".
VS Code
Для расширения Databricks для Visual Studio Code сделайте следующее:
- Задайте значения в
.databrickscfgфайле для операций уровня рабочей области Azure Databricks, как указано на вкладке "Профиль ". - В области конфигурации расширения Databricks для Visual Studio Code нажмите кнопку "Настройка Databricks".
- В Палитре команд для Databricks Host введите ваш URL-адрес рабочего пространства, например
https://adb-1234567890123456.7.azuredatabricks.net, а затем нажмитеEnter. - В палитре команд выберите имя целевого профиля в списке URL-адреса.
Дополнительные сведения см. в разделе Настройка авторизации для расширения Databricks для Visual Studio Code.
Терраформирование
Операции на уровне учетной записи
Для проверки подлинности по умолчанию:
provider "databricks" {
alias = "accounts"
}
Для прямой конфигурации:
provider "databricks" {
alias = "accounts"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Замените заполнители retrieve собственной реализацией, чтобы получить значения из консоли или другого хранилища конфигурации, например HashiCorp Vault. См. также поставщик хранилища. В этом случае URL-адрес консоли учетной записи Azure Databricks — это https://accounts.azuredatabricks.net.
Операции уровня рабочей области
Для конфигурации по умолчанию:
provider "databricks" {
alias = "workspace"
}
Для прямой конфигурации:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Замените retrieve собственной реализацией, чтобы получить значения из консоли или другого хранилища параметров конфигурации, например HashiCorp Vault. См. также поставщик хранилища. В этом случае хост — это URL-адрес рабочей области Azure Databricks
Для получения дополнительной информации об аутентификации с провайдером Databricks Terraform, смотрите Аутентификация.
Питон
Операции на уровне учетной записи
Для конфигурации по умолчанию:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
Для прямой конфигурации:
from databricks.sdk import AccountClient
a = AccountClient(
host = retrieve_account_console_url(),
account_id = retrieve_account_id(),
client_id = retrieve_client_id(),
client_secret = retrieve_client_secret()
)
# ...
Замените заполнители retrieve собственной реализацией, чтобы извлечь значения из консоли или другого хранилища конфигурации, такого как Azure KeyVault. В этом случае URL-адрес консоли учетной записи Azure Databricks — это https://accounts.azuredatabricks.net.
Операции уровня рабочей области
Для конфигурации по умолчанию:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
Для прямой конфигурации:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(
host = retrieve_workspace_url(),
client_id = retrieve_client_id(),
client_secret = retrieve_client_secret()
)
# ...
Замените заполнители retrieve собственной реализацией для получения значений из консоли или другого хранилища конфигурации, например Azure KeyVault. В этом случае узлом является URL-адрес Azure Databricks для каждой области работы, например https://adb-1234567890123456.7.azuredatabricks.net.
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Python и реализующих единую проверку подлинности, см. в следующем разделе:
- настройка клиента Databricks Connect для Python
- Обеспечьте аутентификацию пакета SDK Databricks для Python с помощью учетной записи или рабочей области Azure Databricks
Замечание
Расширение Databricks для Visual Studio Code использует Python, но еще не реализовало проверку подлинности сервисного принципала OAuth.
Ява
Операции уровня рабочей области
Для конфигурации по умолчанию:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Для прямой конфигурации:
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(retrieveWorkspaceUrl())
.setClientId(retrieveClientId())
.setClientSecret(retrieveClientSecret());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
retrieve Замените заполнители собственной реализацией, чтобы получить значения из консоли или другого хранилища конфигурации, например Azure KeyVault. В этом случае хост — это URL-адрес Azure Databricks рабочей области, например https://adb-1234567890123456.7.azuredatabricks.net.
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Java и реализующих единую проверку подлинности, см. в следующем разделе:
- настройка клиента Databricks Connect для Scala (клиент Databricks Connect для Scala использует включенный пакет SDK Databricks для Java для проверки подлинности)
- Аутентифицируйте Databricks SDK для Java с вашей учетной записью или рабочим пространством Azure Databricks
Иди
Операции на уровне учетной записи
Конфигурация по умолчанию:
import "github.com/databricks/databricks-sdk-go"
// Uses environment configuration automatically
a := databricks.Must(databricks.NewAccountClient())
Для прямой конфигурации:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
Замените заполнители retrieve вашей реализацией, чтобы получить значения из консоли или другого хранилища конфигурации, такого как Azure KeyVault. В этом случае URL-адрес консоли учетной записи Azure Databricks — это https://accounts.azuredatabricks.net.
Операции уровня рабочей области
Для конфигурации по умолчанию:
import "github.com/databricks/databricks-sdk-go"
// Uses environment configuration automatically
w := databricks.Must(databricks.NewWorkspaceClient())
Для прямой конфигурации:
import "github.com/databricks/databricks-sdk-go"
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
retrieve Замените заполнители собственной реализацией, чтобы получить значения из консоли или другого хранилища конфигурации, например Azure KeyVault. В этом случае хост — это URL-адрес Azure Databricks на каждую рабочую область, например https://adb-1234567890123456.7.azuredatabricks.net.
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Go и реализующих единую проверку подлинности клиента Databricks, см. в статье "Проверка подлинности пакета SDK Databricks для Go" с учетной записью Azure Databricks или рабочей областью.
Создание маркеров доступа OAuth M2M вручную
Этот раздел предназначен для средств или служб, которые не поддерживают единую проверку подлинности Databricks. Если вам нужно вручную создавать, обновлять или использовать маркеры OAuth Azure Databricks для проверки подлинности M2M, выполните следующие действия.
Чтобы создать токен доступа OAuth M2M, используйте идентификатор клиента служебного принципала и секрет OAuth. Каждый маркер доступа действителен в течение одного часа. После истечения срока действия запросите новый маркер. Токены можно создать на уровне рабочей области или учетной записи.
- Уровень учетной записи: Используйте для вызова REST API как на уровне учетной записи, так и на уровне рабочей области в учетных записях и рабочих областях, к которым служебный участник имеет доступ. См . раздел "Создание маркера доступа на уровне учетной записи".
- Уровень рабочей области: Используется для вызова REST API в одной рабочей области. См. раздел "Создание маркера доступа на уровне рабочей области".
Создание токена доступа для уровня учетной записи
Используйте маркер уровня учетной записи для вызова REST API для учетной записи и любых рабочих областей, к которым служебный принципал может получить доступ.
Создайте URL-адрес конечной точки токена, заменив
<account-id>в следующем URL-адресе идентификатором вашей учетной записи.https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/tokenИспользуйте
curl, чтобы запросить маркер доступа OAuth. Замена:-
<token-endpoint-URL>с приведенным выше URL-адресом. -
<client-id>с идентификатором клиента сервисного принципала (идентификатором приложения). -
<client-secret>с секретом OAuth субъекта-службы.
export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> curl --request POST \ --url <token-endpoint-URL> \ --user "$CLIENT_ID:$CLIENT_SECRET" \ --data 'grant_type=client_credentials&scope=all-apis'Это создает ответ, аналогичный следующему:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }Область
all-apisзапрашивает токен доступа OAuth, который позволяет основному объекту службы вызывать любые доступные ему REST API Databricks.-
access_tokenСкопируйте значение из ответа.
Создание маркера доступа на уровне рабочей области
Используйте токен уровня рабочей области только с REST API в этой рабочей области.
Создайте URL-адрес конечной точки маркера, заменив
<databricks-instance>на ваше<databricks-instance>с именем экземпляра рабочей области Azure Databricks, напримерadb-1234567890123456.7.azuredatabricks.net:https://<databricks-instance>/oidc/v1/tokenИспользуйте
curlдля запроса маркера доступа OAuth. Замена:-
<token-endpoint-URL>с приведенным выше URL-адресом. -
<client-id>с идентификатором клиента сервисного принципала (идентификатором приложения). -
<client-secret>с секретом OAuth субъекта-службы.
export CLIENT_ID=<client-id> export CLIENT_SECRET=<client-secret> curl --request POST \ --url <token-endpoint-URL> \ --user "$CLIENT_ID:$CLIENT_SECRET" \ --data 'grant_type=client_credentials&scope=all-apis'Это создает ответ, аналогичный следующему:
{ "access_token": "eyJraWQiOiJkYTA4ZTVjZ…", "token_type": "Bearer", "expires_in": 3600 }-
access_tokenСкопируйте значение из ответа.
Замечание
Чтобы создать маркер для конечной точки обслуживания, добавьте идентификатор конечной точки и действие в запрос. См. инструкции по получению токена OAuth вручную.
Вызов REST API Azure Databricks
Используйте маркер доступа OAuth для вызова REST API уровня учетной записи или рабочей области . Чтобы вызвать API уровня учетной записи, субъект-служба должен быть администратором учетной записи.
Включите токен в заголовок авторизации с Bearer проверкой подлинности.
Пример запроса REST API на уровне учетной записи
В этом примере перечислены все рабочие области для учетной записи. Замена:
-
<oauth-access-token>с токеном доступа OAuth принципала службы. -
<account-id>с вашим идентификатором учетной записи.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces'
Пример запроса REST API на уровне рабочей области
В этом примере перечислены все доступные кластеры в рабочей области. Замена:
-
<oauth-access-token>с маркером доступа OAuth субъекта-службы. -
<databricks-instance>с названием экземпляра рабочей области Azure Databricks, напримерadb-1234567890123456.7.azuredatabricks.net.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'
Устранение проблем с аутентификацией OAuth M2M
Используйте эти действия, чтобы устранить наиболее распространенные проблемы с проверкой подлинности OAuth M2M для учетных записей служб.
Быстрые проверки
Начните с проверки этих распространенных проблем конфигурации, которые вызывают сбои проверки подлинности OAuth M2M:
-
Учетные данные:
DATABRICKS_CLIENT_IDустановлены как идентификатор приложения принципала службы (идентификатор клиента), аDATABRICKS_CLIENT_SECRETустановлено как значение секрета OAuth, без дополнительных пробелов. -
Хозяин:
DATABRICKS_HOSTуказывает наhttps://accounts.azuredatabricks.netоперации с учетной записью или URL-адрес целевой рабочей области, например для операцийhttps://adb-1234567890123456.7.azuredatabricks.net. Не включать/api. - Задание: Служебный принципал назначен целевой рабочей области.
- Разрешения: Служебный субъект имеет необходимые разрешения для целевого ресурса.
-
Конфликтов: Не заданы конфликтующие переменные, например
DATABRICKS_TOKEN,DATABRICKS_USERNAME. Выполнитеenv | grep DATABRICKSи устраните конфликты. - Инструменты: Используйте единую проверку подлинности и текущие версии интерфейса командной строки или пакета SDK.
401 Несанкционированный доступ
Вероятные причины и исправления:
-
Недопустимый идентификатор клиента или секрет: Скопируйте повторно
DATABRICKS_CLIENT_IDиDATABRICKS_CLIENT_SECRET. Повторно создайте ключ, если вы не уверены. - Секрет с истекшим сроком действия: Создайте новый секрет, если истек срок действия текущей.
- Неправильный издатель токена: Для M2M используйте конечную точку токена OAuth Databricks, а не конечную точку токена IdP или облачного токена.
-
Несоответствие узла: Если вы выполняете проверку подлинности для API рабочей области, необходимо указать URL-адрес рабочей области,
DATABRICKS_HOSTкоторый вы вызываете.
403. Запрещено
Вероятные причины и исправления:
-
Отсутствующие разрешения на ресурсы: Предоставьте служебному принципалу
CAN USEразрешения на кластерах илиCAN MANAGEв хранилищах SQL, а также необходимые разрешения на уровне объектов для записных книжек, заданий или объектов данных. - Нет назначения рабочей области: Назначьте служебный принципал рабочей области в консоли учётной записи.
- Доступ к API администратора: Для API, предназначенных исключительно для администраторов, добавьте служебный принципал в группу администраторов рабочей области или предоставьте права администратора учетной записи.
Проблемы с конфигурацией
Симптомы включают истечение времени ожидания, "узел не найден", "учетная запись не найдена" или "рабочая область не найдена".
Fixes:
-
Правила хоста: Используйте URL-адрес консоли учетной записи для API учетной записи. Используйте URL-адрес рабочей области для API рабочей области. Не включайте
/apiсуффикс. -
Идентификатор учетной записи: Указывайте
DATABRICKS_ACCOUNT_IDтолько для операций на уровне учетной записи. Используйте UUID из консоли учетной записи. -
Выбор профиля: Если вы используете несколько профилей, передайте
--profile <name>или установитеDATABRICKS_CONFIG_PROFILE.
Connectivity
Если проверка подлинности OAuth M2M завершается сбоем из-за проблем с сетью, используйте эти тесты, чтобы убедиться, что ваша среда может достичь конечных точек Databricks:
-
DNS:
nslookup <your-host>(должен возвращать IP-адреса для имени узла) -
TLS и доступность:
curl -I https://<your-host>(должно возвращать состояние HTTP 200, 401 или 403) - Корпоративная сеть: Убедитесь, что правила прокси-сервера или брандмауэра разрешают HTTPS конечным точкам Databricks
Дополнительные ресурсы
- Представители службы
- Обзор модели удостоверений Databricks
- Дополнительные сведения о проверке подлинности и управлении доступом