Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе приведены инструкции и сведения об авторизации доступа к ресурсам Azure Databricks при автоматизации выполнения команд Azure Databricks CLI или вызове REST API Azure Databricks из кода, который будет выполняться в рамках ненаблюдаемого процесса.
Azure Databricks использует OAuth в качестве предпочтительного протокола для авторизации пользователей и проверки подлинности при взаимодействии с ресурсами Azure Databricks за пределами пользовательского интерфейса. Azure Databricks также предоставляет единое средство проверки подлинности клиента для автоматизации обновления маркеров доступа, созданных в рамках метода проверки подлинности OAuth. Это относится к субъектам-службам, а также к учетным записям пользователей, но необходимо настроить субъект-службу с соответствующими разрешениями и привилегиями для ресурсов Azure Databricks, к которым он должен обращаться в рамках своих операций.
Дополнительные сведения см. в статье Авторизация доступа к ресурсам Azure Databricks.
Каковы мои варианты авторизации и аутентификации при использовании служебного принципала Azure Databricks?
В этом разделе термин авторизация относится к протоколу (OAuth), который используется для согласования доступа к конкретным ресурсам Azure Databricks посредством делегирования. проверка подлинности ссылается на механизм, с помощью которого учетные данные представляются, передаются и проверяются, что, в данном случае, маркеры доступа.
Azure Databricks использует авторизацию на основе OAuth 2.0, чтобы разрешить доступ к учетной записи Azure Databricks и ресурсам рабочей области из командной строки или кода от имени субъекта-службы с разрешениями на доступ к этим ресурсам. После настройки учетной записи службы Azure Databricks и проверки её учетных данных при выполнении команды CLI или вызова REST API впоследствии предоставляется маркер OAuth, который позволяет средству или пакету SDK выполнять аутентификацию с использованием маркеров от имени учетной записи службы. Маркер доступа OAuth имеет срок действия одного часа, после которого средство или пакет SDK, участвующий, сделает автоматическую фоновую попытку получить новый маркер, который также действителен в течение одного часа.
Azure Databricks поддерживает два способа авторизации доступа для субъекта-службы с помощью OAuth:
- В основном автоматически с помощью поддержки унифицированной проверки подлинности клиента Databricks. Используйте этот упрощенный подход, если вы используете конкретные SDK для Azure Databricks (например, SDK для Databricks Terraform) и инструменты. Поддерживаемые средства и наборы инструментов SDK перечислены в Databricks унифицированная аутентификация клиента. Этот подход хорошо подходит для автоматизации или других сценариев автоматического процесса.
- Вручную, напрямую генерируя пару для проверки/вызова кода OAuth и код авторизации, и используя их для создания начального токена OAuth, который вы укажете в конфигурации. Используйте этот подход, если вы не используете API, поддерживаемый унифицированной проверкой подлинности клиента Databricks. В этом случае может потребоваться разработать собственный механизм для обработки обновления маркеров доступа, относящихся к стороннему инструменту или API, который вы используете. Дополнительные сведения см. в статье о том, как вручную создавать и использовать токены доступа для аутентификации учетной записи службы OAuth.
Перед началом работы необходимо настроить учетную запись службы Azure Databricks и назначить ей соответствующие разрешения для доступа к ресурсам, которые нужно использовать, когда ваш автоматизированный код или команды запрашивают их.
Предварительное условие: Создание служебного принципала
Администраторы учетных записей и администраторы рабочей области могут создавать субъекты-службы. На этом шаге описывается создание субъекта-службы в рабочей области Azure Databricks. Для получения подробной информации о консоли учетной записи Azure Databricks см. статью "Добавление принципалов службы в учетную запись".
Вы также можете создать управляемую учетную запись службы Microsoft Entra ID и добавить её в Azure Databricks. Для получения дополнительной информации см. Databricks и учетные записи службы Microsoft Entra ID.
- Войдите в рабочую область Azure Databricks как администратор рабочей области.
- Кликните на своё имя пользователя в верхней панели рабочей области Azure Databricks и выберите параметры.
- Щелкните вкладку "Удостоверение" и "Доступ ".
- Рядом с сервисными принципалами нажмите Управление.
- Нажмите Добавить объект службы.
- Щелкните стрелку раскрывающегося списка в поле поиска и нажмите кнопку "Добавить".
- В разделе "Управление" выберите Databricks Managed.
- Введите имя основного объекта службы.
- Нажмите кнопку Добавить.
Субъект-служба добавляется как в рабочую область, так и в учетную запись Azure Databricks.
Шаг 1. Назначение разрешений служебному принципалу
- Щелкните имя субъекта-службы, чтобы открыть страницу сведений.
- На вкладке "Конфигурации" установите флажок рядом с каждым правом, которое должен иметь субъект-служба для этой рабочей области, а затем нажмите кнопку "Обновить".
- На вкладке Разрешения предоставьте доступ нужным пользователям Azure Databricks, служебным принципалам и группам, которым требуется управлять и использовать этот служебный принципал. См. Управление ролями на служебном объекте.
Шаг 2. Создание секрета OAuth для субъекта-службы
Прежде чем использовать OAuth для авторизации доступа к ресурсам Azure Databricks, необходимо сначала создать секрет OAuth, который можно использовать для создания маркеров доступа OAuth для проверки подлинности. Служебный принципал может иметь до пяти OAuth-секретов.
Секреты OAuth имеют максимальное время существования в течение двух лет. Администраторы учетных записей и администраторы рабочей области могут создавать секрет OAuth для служебного субъекта.
На странице сведений субъекта службы щелкните вкладку "Секреты".
В разделе секреты OAuthщелкните Создать секрет.
Задайте время существования секрета в днях. Секреты OAuth имеют максимальное время существования 730 дней (два года).
Скопируйте отображаемый секрет и идентификатор клиента, а затем нажмите кнопку "Готово".
Секрет будет выявлен только один раз во время создания. Идентификатор клиента совпадает с идентификатором приложения субъекта-службы.
Администраторы учетных записей также могут создать OAuth-секрет на странице с информацией о служебном принципале в консоли учетной записи.
Войдите в консоль учетной записи с правами администратора учетных записей.
На боковой панели щелкните " Управление пользователями".
На вкладке субъекты-службы выберите ваш субъект-службы.
В разделе секреты OAuthщелкните Создать секрет.
Задайте время существования секрета в днях. Секреты OAuth имеют максимальное время существования 730 дней (два года).
Скопируйте отображаемый секрет и идентификатор клиента, а затем нажмите кнопку "Готово".
Замечание
Чтобы субъект-служба мог использовать кластеры или хранилища SQL, необходимо предоставить субъекту-службе доступ к ним. См. сведения о разрешениях вычислений или управлении хранилищем SQL.
Шаг 3. Использование авторизации 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_ID
DATABRICKS_CLIENT_ID
DATABRICKS_CLIENT_SECRET
Для операций на уровне рабочей областизадайте следующие переменные среды:
-
DATABRICKS_HOST
, установите для URL-адреса Azure Databricks рабочей области значение, например,https://adb-1234567890123456.7.azuredatabricks.net
. DATABRICKS_CLIENT_ID
DATABRICKS_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
файле для операций на уровне рабочей области Azure Databricks, как указано в разделе "Профиль". Также установите переменную средыcluster_id
в вашем профиле на ваш URL-адрес для каждой рабочей области , напримерhttps://adb-1234567890123456.7.azuredatabricks.net
. - Задайте переменные среды для операций на уровне рабочей области Azure Databricks, как указано в разделе "Среда". Кроме того, задайте переменную среды
DATABRICKS_CLUSTER_ID
URL-адрес для каждой рабочей области, напримерhttps://adb-1234567890123456.7.azuredatabricks.net
.
Значения в файле .databrickscfg
всегда имеют приоритет над переменными среды.
Чтобы инициализировать клиент Databricks Connect с этими переменными или значениями среды в .databrickscfg
файле, см. раздел "Конфигурация вычислений для 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"
}
Для прямой конфигурации (замените заполнители retrieve
своими реализациями для получения значений из консоли или другого хранилища конфигураций, такого как HashiCorp Vault. Также смотрите Vault Provider). В этом случае URL-адрес консоли учетной записи Azure Databricks:https://accounts.azuredatabricks.net
provider "databricks" {
alias = "accounts"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Для операций на уровне рабочей области и проверки подлинности по умолчанию:
provider "databricks" {
alias = "workspace"
}
Для прямой конфигурации (замените заполнители retrieve
своими реализациями для получения значений из консоли или другого хранилища конфигураций, такого как HashiCorp Vault. Также смотрите Vault Provider). В этом случае хостом является URL-адрес рабочего пространства Azure Databricks
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
client_id = <retrieve-client-id>
client_secret = <retrieve-client-secret>
}
Для получения дополнительной информации об аутентификации с провайдером Databricks Terraform, смотрите Аутентификация.
Питон
Для операций на уровне учетной записи используйте следующие параметры для проверки подлинности по умолчанию:
from databricks.sdk import AccountClient
a = AccountClient()
# ...
Для прямой конфигурации используйте следующую команду, заменив заполнители retrieve
на собственную реализацию, чтобы получить значения из консоли или другого хранилища конфигурации, например, Azure KeyVault. В этом случае URL-адрес консоли учетной записи Azure Databricks:https://accounts.azuredatabricks.net
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()
)
# ...
Для операций на уровне рабочей области, особенно проверка подлинности по умолчанию:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
Для прямой настройки замените заполнители retrieve
собственной реализацией, чтобы получить значения из консоли или другого хранилища конфигурации, например Azure KeyVault. В этом случае хостом является URL-адрес рабочего пространства Azure Databricks
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(
host = retrieve_workspace_url(),
client_id = retrieve_client_id(),
client_secret = retrieve_client_secret()
)
# ...
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Python и реализующих единую проверку подлинности клиента Databricks, см. в следующем разделе:
- настройка клиента Databricks Connect для Python
- Обеспечьте аутентификацию пакета SDK Databricks для Python с помощью учетной записи или рабочей области Azure Databricks
Замечание
Расширение Databricks для Visual Studio Code использует Python, но еще не реализовало проверку подлинности сервисного принципала OAuth.
Ява
Для операций уровня рабочей области с помощью проверки подлинности по умолчанию:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
Для прямой конфигурации (замените заполнители retrieve
собственной реализацией для получения значений из консоли или другого хранилища конфигурации, например Azure KeyVault). В этом случае хостом является URL-адрес рабочего пространства Azure Databricks
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);
// ...
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Java и реализующих единую проверку подлинности клиента Databricks, см. в следующем разделе:
- настройка клиента Databricks Connect для Scala (клиент Databricks Connect для Scala использует включенный пакет SDK Databricks для Java для проверки подлинности)
- Аутентифицируйте Databricks SDK для Java с вашей учетной записью или рабочим пространством Azure Databricks
Иди
Для операций на уровне учетной записи с помощью проверки подлинности по умолчанию:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
Для прямой конфигурации (замените заполнители retrieve
собственной реализацией для получения значений из консоли или другого хранилища конфигурации, например Azure KeyVault). В этом случае URL-адрес консоли учетной записи Azure Databricks:https://accounts.azuredatabricks.net
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
Для операций уровня рабочей области с помощью проверки подлинности по умолчанию:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
Для прямой конфигурации (замените заполнители retrieve
собственной реализацией для получения значений из консоли или другого хранилища конфигурации, например Azure KeyVault). В этом случае хостом является URL-адрес рабочего пространства Azure Databricks
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
ClientId: retrieveClientId(),
ClientSecret: retrieveClientSecret(),
}))
// ...
Дополнительные сведения о проверке подлинности с помощью средств Databricks и пакетов SDK, использующих Go и реализующих единую проверку подлинности клиента Databricks, см. в статье "Проверка подлинности пакета SDK Databricks для Go" с учетной записью Azure Databricks или рабочей областью.
вручную создавать и использовать токены доступа для аутентификации учетной записи службы OAuth
Средства и пакеты SDK Azure Databricks, реализующие стандарт единой проверки подлинности клиента Databricks , автоматически создают, обновляют и используют маркеры доступа OAuth Azure Databricks от вашего имени, если это необходимо для проверки подлинности субъекта-службы OAuth.
Databricks рекомендует использовать единую проверку подлинности клиента, однако если необходимо вручную создать, обновить или использовать маркеры доступа Azure Databricks OAuth, следуйте инструкциям в этом разделе.
Используйте идентификатор клиента субъекта-службы и секрет OAuth, чтобы запросить токен доступа OAuth для проверки подлинности как REST API уровня учетной записи, так и уровня рабочей области. Срок действия маркера доступа истекает через час. После истечения срока действия необходимо запросить новый маркер доступа OAuth. Область токена доступа OAuth зависит от уровня, из которого создается токен. Вы можете создать маркер на уровне учетной записи или на уровне рабочей области следующим образом:
- Чтобы вызвать REST API на уровне учетной записи и рабочей области в учетных записях и рабочих областях, к которым имеет доступ учетная запись службы, вручную сгенерируйте маркер доступа на уровне учетной записи.
- Чтобы вызвать REST API в пределах только одной из рабочих областей, к которым у субъекта-службы есть доступ, вручную создать маркер доступа на уровне рабочей области только для этой рабочей области.
вручную создайте маркер доступа на уровне учетной записи
Токен доступа OAuth, созданный на уровне учетной записи, можно использовать для REST API Databricks в учетной записи и в любых рабочих областях, к которым имеет доступ сервисный принципал.
Войдите в консоль учетной записи с правами администратора учетных записей.
Щелкните стрелку вниз рядом с именем пользователя в правом верхнем углу.
Скопируйте идентификатор учетной записи.
Создайте URL-адрес конечной точки маркера, заменив
<my-account-id>
в следующем URL-адресе на идентификатор учетной записи, который вы скопировали.https://accounts.azuredatabricks.net/oidc/accounts/<my-account-id>/v1/token
Используйте клиент, например
curl
, чтобы запросить токен доступа OAuth, указав URL-адрес конечной точки токена, идентификатор клиента служебного субъекта (также известный как идентификатор приложения) и созданный секрет OAuth служебного субъекта. Областьall-apis
запрашивает токен доступа OAuth, который можно использовать для доступа ко всем REST API Databricks, к которым основной служащий получил доступ.- Замените
<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 в этой рабочей области, даже если субъект-служба является администратором учетной записи или является членом других рабочих областей.
Создайте URL конечной точки токена, заменив
https://<databricks-instance>
на URL рабочей области вашего развертывания Azure Databricks.https://<databricks-instance>/oidc/v1/token
Используйте клиент, например
curl
, чтобы запросить токен доступа OAuth, указав URL-адрес конечной точки токена, идентификатор клиента служебного субъекта (также известный как идентификатор приложения) и созданный секрет OAuth служебного субъекта. Областьall-apis
запрашивает маркер доступа OAuth, который можно использовать для доступа ко всем REST API Databricks, к которым основной сервис имеет предоставленный доступ в рабочей области, из которой вы запрашиваете маркер.- Замените
<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
из ответа.- Замените
Вызовите REST API Databricks
Маркер доступа OAuth можно использовать для проверки подлинности в Azure Databricks REST API и уровне рабочей области REST API. Субъект-служба должен иметь права администратора учетной записи для вызова REST API уровня учетной записи.
Включите токен доступа в заголовок авторизации, используя метод аутентификации Bearer
. Этот подход можно использовать с curl
или любым клиентом, который вы создаете.
Пример запроса REST API на уровне учетной записи
В этом примере используется проверка подлинности Bearer
для получения списка всех рабочих областей, связанных с учетной записью.
- Замените
<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 на уровне рабочей области
В этом примере используется проверка подлинности Bearer
для перечисления всех доступных кластеров в указанной рабочей области.
- Замените
<oauth-access-token>
на маркер доступа OAuth учетной записи службы, скопированный на предыдущем шаге. - Замените
<workspace-URL>
на URL-адрес вашей базовой рабочей области, который имеет форму, аналогичнуюdbc-a1b2345c-d6e7.cloud.databricks.com
.
export OAUTH_TOKEN=<oauth-access-token>
curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
'https://<workspace-URL>/api/2.0/clusters/list'
Дополнительные ресурсы
- Представители службы
- Обзор модели удостоверений Databricks
- Дополнительные сведения о проверке подлинности и управлении доступом