Databricks 客户端统一身份验证
Databricks 客户端统一身份验证可集中设置和自动化对 Azure Databricks 的身份验证。 借助此方法,你只需配置 Databricks 身份验证一次,然后即可在多个 Databricks 工具和 SDK 中使用该配置,而无需进一步更改身份验证配置。
参与工具和 SDK
相关的 Databricks 工具和 SDK 包括:
- Databricks CLI
- Databricks Terraform 提供程序
- Databricks Connect
- Visual Studio Code 的 Databricks 扩展
- Databricks SDK for Python
- Databricks SDK for Java
- Databricks SDK for Go
所有参与的工具和 SDK 都接受使用特殊环境变量和 Azure Databricks 配置文件进行身份验证。 Databricks Terraform 提供程序以及适用于 Python、Java 和 Go 的 Databricks SDK 也接受在代码中直接配置身份验证设置。 有关详细信息,请参阅工具或 SDK 文档开发人员工具。
客户端统一身份验证的默认方法
每当工具或 SDK 必须向 Azure Databricks 进行身份验证时,它会默认按以下顺序尝试以下类型的身份验证。 当工具或 SDK 尝试的身份验证类型成功时,它会停止尝试使用其余的身份验证类型进行身份验证。 若要强制 SDK 使用特定的身份验证类型进行身份验证,请设置 Config
API 的 Databricks 身份验证类型字段。
- Azure Databricks 个人访问令牌身份验证
- 使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证
- 使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证
- Azure 托管标识身份验证
- MS Entra 服务主体身份验证
- Azure CLI 身份验证
对于相关工具或 SDK 尝试的每种身份验证类型,该工具或 SDK 将尝试按以下顺序在以下位置查找身份验证凭据。 当该工具或 SDK 成功找到可以使用的身份验证凭据时,它将停止尝试在其余位置查找身份验证凭据。
- 凭据相关的
Config
API 字段(适用于 SDK)。 若要设置Config
字段,请参阅 SDK 的参考文档。 - 凭据相关的环境变量。
.databrickscfg
文件内的DEFAULT
配置文件中与凭据相关的字段。 若要设置配置文件字段,请参阅 (/dev-tools/auth/config-profiles.md)。- Azure CLI 缓存的任何相关身份验证凭据。 请参阅 Azure CLI 身份验证。
为了实现代码的最大可移植性,Databricks 建议在 .databrickscfg
文件中创建自定义配置文件,将目标 Databricks 身份验证类型的必填字段添加到自定义配置文件,然后将 DATABRICKS_CONFIG_PROFILE
环境变量设置为自定义配置文件的名称。
客户端统一身份验证的环境变量和字段
下表列出了 Databricks 客户端统一身份验证支持的环境变量和字段的名称与说明。 在下面的表中:
- “环境变量”是环境变量的名称(如果适用)。
- “
.databrickscfg
字段”是 Azure Databricks 配置文件文件或 Databricks Terraform 配置中的字段名称(如果适用)。 若要设置.databrickscfg
字段,请参阅 Azure Databricks 配置文件。 - “Terraform 字段”是 Databricks Terraform 配置中的字段名称(如果适用)。 若要设置 Databricks Terraform 字段,请参阅 Databricks Terraform 提供程序文档中的身份验证。
- “
Config
字段”是指定 SDK 的Config
API 中的字段名称。
常规主机、令牌和帐户 ID 环境变量和字段
公用名 | 说明 | 环境变量 | .databrickscfg 字段、Terraform 字段 |
Config 字段 |
---|---|---|---|---|
Azure Databricks 主机 | (字符串)Azure Databricks 工作区终结点或 Azure Databricks 帐户终结点的 Azure Databricks 主机 URL。 | DATABRICKS_HOST |
host |
host (Python)setHost (Java)、Host (Go) |
Azure Databricks 令牌 | (字符串)Azure Databricks 个人访问令牌或 Microsoft Entra ID 令牌。 | DATABRICKS_TOKEN |
token |
token (Python)setToken (Java)、Token (Go) |
Azure Databricks 帐户 ID | (字符串)Azure Databricks 帐户终结点的 Azure Databricks 帐户 ID。 仅当 Azure Databricks 主机也设置为以下值时才有效:https://accounts.azuredatabricks.net 。 |
DATABRICKS_ACCOUNT_ID |
account_id |
account_id (Python)setAccountID (Java)、AccountID (Go) |
特定于 Azure 的环境变量和字段
公用名 | 说明 | 环境变量 | .databrickscfg 字段、Terraform 字段 |
Config 字段 |
---|---|---|---|---|
Azure 客户端 ID | (字符串)Microsoft Entra ID 服务主体的应用程序 ID。 与 Azure 托管标识身份验证和 Microsoft Entra ID 服务主体身份验证配合使用。 | ARM_CLIENT_ID |
azure_client_id |
azure_client_id (Python)setAzureClientID (Java)、AzureClientID (Go) |
Azure 客户端机密 | (字符串)Microsoft Entra ID 服务主体的客户端机密。 与 Microsoft Entra ID 服务主体身份验证配合使用。 | ARM_CLIENT_SECRET |
azure_client_secret |
azure_client_secret (Python)setAzureClientSecret (Java)、AzureClientSecret (Go) |
客户端 ID | (字符串)Azure Databricks 托管服务主体或 Microsoft Entra ID 托管服务主体的客户端 ID。 与 OAuth M2M 身份验证一起使用。 | DATABRICKS_CLIENT_ID |
client_id |
client_id (Python)setClientId (Java)、ClientId (Go) |
客户端密码 | (字符串)Azure Databricks 托管服务主体或 Microsoft Entra ID 托管服务主体的客户端密码。 与 OAuth M2M 身份验证一起使用。 | DATABRICKS_CLIENT_SECRET |
client_secret |
client_secret (Python)setClientSecret (Java)、ClientSecret (Go) |
Azure 环境 | (字符串)Azure 环境类型。 默认为 PUBLIC 。 |
ARM_ENVIRONMENT |
azure_environment |
azure_environment (Python)setAzureEnvironment (Java)、AzureEnvironment (Go) |
Azure 租户 ID | (字符串)Microsoft Entra ID 服务主体的租户 ID。 | ARM_TENANT_ID |
azure_tenant_id |
azure_tenant_id (Python)setAzureTenantID (Java)、AzureTenantID (Go) |
Azure 使用 MSI | (布尔值)True 表示对服务主体使用 Azure 托管服务标识无密码身份验证流。 还需要设置 Azure 资源 ID。 | ARM_USE_MSI |
azure_use_msi |
AzureUseMSI (Go) |
Azure 资源 ID | (字符串)Azure Databricks 工作区的 Azure 资源管理器 ID。 | DATABRICKS_AZURE_RESOURCE_ID |
azure_workspace_resource_id |
azure_workspace_resource_id (Python)setAzureResourceID (Java)、AzureResourceID (Go) |
特定于 .databrickscfg 的环境变量和字段
使用这些环境变量或字段为 .databrickscfg
指定非默认设置。 另请参阅 Azure Databricks 配置文件。
公用名 | 说明 | 环境变量 | Terraform 字段 | Config 字段 |
---|---|---|---|---|
.databrickscfg 文件路径 |
(字符串)非默认路径.databrickscfg 文件 。 |
DATABRICKS_CONFIG_FILE |
config_file |
config_file (Python)setConfigFile (Java)、ConfigFile (Go) |
.databrickscfg 默认配置文件 |
(字符串)要使用的默认命名配置文件,但不是 DEFAULT 。 |
DATABRICKS_CONFIG_PROFILE |
profile |
profile (Python)setProfile (Java)、Profile (Go) |
身份验证类型字段
使用此环境变量或字段强制 SDK 使用特定类型的 Databricks 身份验证。
公用名 | 说明 | Terraform 字段 | Config 字段 |
---|---|---|---|
Databricks 身份验证类型 | (字符串)当环境中有多个身份验证属性可用时,将使用此参数指定的身份验证类型。 | auth_type |
auth_type (Python)setAuthType (Java)、AuthType (Go) |
支持的 Databricks 身份验证类型字段值包括:
oauth-m2m
:如果使用 Databricks 服务主体通过 OAuth 2.0 进行 M2M 身份验证,请设置此值。 有关详细信息,请参阅 使用 OAuth(OAuth M2M)通过服务主体对 Azure Databricks 的访问进行身份验证。pat
:如果使用 Databricks 个人访问令牌,请设置此值。 有关详细信息,请参阅 Azure Databricks 个人访问令牌身份验证。databricks-cli
:如果将 Databricks CLI 与 OAuth 2.0 配合使用,请设置此值。 有关详细信息,请参阅 使用 OAuth(OAuth U2M)通过用户帐户对 Azure Databricks 的访问权限进行身份验证。azure-msi
:如果使用 Azure 托管服务标识(MSI),请设置此值。 有关详细信息,请参阅 Azure 托管标识身份验证。azure-client-secret
:如果将 Azure 服务主体用于客户端机密,请设置此值。 有关详细信息,请参阅 MS Entra 服务主体身份验证。