Databricks 客户端统一身份验证

Databricks 客户端统一身份验证可集中设置和自动化对 Azure Databricks 的身份验证。 借助此方法,你只需配置 Databricks 身份验证一次,然后即可在多个 Databricks 工具和 SDK 中使用该配置,而无需进一步更改身份验证配置。

参与工具和 SDK

相关的 Databricks 工具和 SDK 包括:

所有参与的工具和 SDK 都接受使用特殊环境变量和 Azure Databricks 配置文件进行身份验证。 Databricks Terraform 提供程序以及适用于 Python、Java 和 Go 的 Databricks SDK 也接受在代码中直接配置身份验证设置。 有关详细信息,请参阅工具或 SDK 文档开发人员工具。

客户端统一身份验证的默认方法

每当工具或 SDK 必须向 Azure Databricks 进行身份验证时,它会默认按以下顺序尝试以下类型的身份验证。 当工具或 SDK 尝试的身份验证类型成功时,它会停止尝试使用其余的身份验证类型进行身份验证。 若要强制 SDK 使用特定的身份验证类型进行身份验证,请设置 Config API 的 Databricks 身份验证类型字段。

  1. Azure Databricks 个人访问令牌身份验证
  2. 使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证
  3. 使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证
  4. Azure 托管标识身份验证
  5. MS Entra 服务主体身份验证
  6. Azure CLI 身份验证

对于相关工具或 SDK 尝试的每种身份验证类型,该工具或 SDK 将尝试按以下顺序在以下位置查找身份验证凭据。 当该工具或 SDK 成功找到可以使用的身份验证凭据时,它将停止尝试在其余位置查找身份验证凭据。

  1. 凭据相关的 Config API 字段(适用于 SDK)。 若要设置 Config 字段,请参阅 SDK 的参考文档。
  2. 凭据相关的环境变量。
  3. .databrickscfg 文件内的 DEFAULT 配置文件中与凭据相关的字段。 若要设置配置文件字段,请参阅 (/dev-tools/auth/config-profiles.md)。
  4. 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 服务主体身份验证