Microsoft Entra 服务主体 身份验证使用 Microsoft Entra 服务主体的凭据进行身份验证。 要创建和管理 Azure Databricks 的服务主体,请参阅:
- 服务主体
- 使用 Terraform 预配服务主体
注意
Databricks 建议在大多数情况下使用 OAuth 计算机到计算机 (M2M) 身份验证 。 OAuth M2M 仅使用 Azure Databricks 进行身份验证时使用更可靠的 OAuth 访问令牌。 仅当必须同时向 Azure Databricks 和其他 Azure 资源进行身份验证时,才使用 Microsoft Entra 服务主体身份验证。
有关详细信息,请参阅 将 Azure 托管标识与 Azure Databricks 配合使用 , 并使用 Azure Databricks 上的 Azure DevOps 进行身份验证。
若要使用 Azure Databricks 配置 Microsoft Entra 服务主体身份验证,必须设置以下关联的环境变量、 .databrickscfg 字段、Terraform 字段或 Config 字段:
Azure Databricks 主机。
- 对于帐户操作,请指定
https://accounts.azuredatabricks.net。 - 对于工作区操作,Databricks 建议指定每个工作区的 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net,并明确地将 Microsoft Entra 服务主体分配给工作区。 或者,指定 Azure 资源 ID。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
- 对于帐户操作,请指定
对于帐户操作,请指定 Azure Databricks 帐户 ID。
Azure 资源 ID。
Microsoft Entra 服务主体的租户 ID。
Microsoft Entra 服务主体的客户端 ID。
Microsoft Entra 服务主体的客户端密钥。
若要使用 Azure Databricks 执行 Microsoft Entra 服务主体身份验证,请根据参与的工具或 SDK 在代码中集成以下内容:
环境变量
若要对工具或 SDK 的特定 Azure Databricks 身份验证类型使用环境变量,请参阅 授权访问 Azure Databricks 资源 或工具或 SDK 的文档。 另请参阅 环境变量和字段,了解统一身份验证 和 身份验证方法优先级。
对于帐户级操作,请设置以下环境变量:
-
DATABRICKS_HOST,设置为 Azure Databricks 帐户控制台 URL 的值 (https://accounts.azuredatabricks.net)。 DATABRICKS_ACCOUNT_IDARM_TENANT_IDARM_CLIENT_IDARM_CLIENT_SECRET
对于工作区级别操作,请设置以下环境变量:
-
DATABRICKS_HOST,设置为 Azure Databricks 每工作区 URL 的值,例如https://adb-1234567890123456.7.azuredatabricks.net。 ARM_TENANT_IDARM_CLIENT_IDARM_CLIENT_SECRET
Databricks 建议使用 DATABRICKS_HOST 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 DATABRICKS_AZURE_RESOURCE_ID 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
配置文件
在 文件中使用以下字段创建或标识 Azure Databricks .databrickscfg。 如果创建配置文件,请将占位符替换为相应值。 若要将配置文件与工具或 SDK 配合使用,请参阅 授权访问 Azure Databricks 资源 或工具或 SDK 的文档。 另请参阅 环境变量和字段,了解统一身份验证 和 身份验证方法优先级。
对于帐户级别操作,请在 .databrickscfg 文件中设置以下值。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
[<some-unique-configuration-profile-name>]
host = <account-console-url>
account_id = <account-id>
azure_tenant_id = <azure-service-principal-tenant-id>
azure_client_id = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>
对于工作区级别操作,请在 .databrickscfg 文件中设置以下值。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
azure_tenant_id = <azure-service-principal-tenant-id>
azure_client_id = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>
Databricks 建议使用 host 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 azure_workspace_resource_id 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
Databricks 命令行界面 (CLI)
对于 Databricks CLI,请执行以下操作之一:
- 设置“ 环境 ”选项卡上指定的环境变量。
- 根据
.databrickscfg”选项卡上指定的设置文件中的值。
环境变量始终优先于 .databrickscfg 文件中的值。
另请参阅 Microsoft Entra ID 服务主体身份验证。
Databricks Connect
注意
以下 Databricks Connect 版本支持 Microsoft Entra 服务主体身份验证:
- 对于 Python,适用于 Databricks Runtime 13.1 及更高版本的 Databricks Connect。
- 对于 Scala,适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
对于 Databricks Connect,您可以选择以下操作之一:
-
使用配置文件:如
.databrickscfg”选项卡上所述,在文件中设置工作区级别值。此外,将cluster_id工作区实例 URL 设置为工作区实例 URL。 -
使用环境变量: 设置与“ 环境 ”选项卡上显示的相同值。此外,将
DATABRICKS_CLUSTER_ID工作区实例 URL 设置为工作区实例 URL。
.databrickscfg值优先于环境变量。
若要使用这些设置初始化 Databricks Connect,请参阅 Databricks Connect 的计算配置。
Visual Studio Code 扩展
对于适用于 Visual Studio Code 的 Databricks 扩展,请执行以下操作:
- 为“
.databrickscfg”选项卡上指定的 Azure Databricks 工作区级别作设置文件中的值。 - 在适用于 Visual Studio Code 的 Databricks 扩展中,单击“配置”窗格中的“配置 Databricks”。
- 在“命令面板”中,对于“Databricks 主机”,请输入每工作区 URL(例如
https://adb-1234567890123456.7.azuredatabricks.net),然后按Enter。 - 在命令面板中,在 URL 列表中选择目标配置文件的名称。
有关更多详细信息,请参阅为适用于 Visual Studio Code 的 Databricks 扩展设置身份验证。
Terraform
provider "databricks" {
alias = "accounts"
}
对于直接配置,请将占位符替换为控制台或其他一些配置存储区(如 HashiCorp Vault)中的值。 另请参阅 保管库提供程序。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
provider "databricks" {
alias = "accounts"
host = <your-account-console-url>
account_id = <your-account-id>
azure_tenant_id = <your-azure-tenant-id>
azure_client_id = <your-azure-client-id>
azure_client_secret = <your-azure-client-secret>
}
provider "databricks" {
alias = "workspace"
}
对于直接配置,请将占位符替换为控制台或其他一些配置存储区(如 HashiCorp Vault)中的值。 另请参阅 保管库提供程序。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
provider "databricks" {
alias = "workspace"
host = <your-workspace-url>
azure_tenant_id = <your-azure-tenant-id>
azure_client_id = <your-azure-client-id>
azure_client_secret = <your-azure-client-secret>
}
Databricks 建议使用 host 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 azure_workspace_resource_id 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关使用 Databricks Terraform 提供程序进行身份验证的详细信息,请参阅身份验证。
用于 Python 的 Databricks SDK
from databricks.sdk import AccountClient
a = AccountClient()
# ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
from databricks.sdk import AccountClient
a = AccountClient(
host = get_account_console_url(),
account_id = get_account_id(),
azure_tenant_id = get_azure_tenant_id(),
azure_client_id = get_azure_client_id(),
azure_client_secret = get_azure_client_secret()
)
# ...
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(
host = get_workspace_url(),
azure_tenant_id = get_azure_tenant_id(),
azure_client_id = get_azure_client_id(),
azure_client_secret = get_azure_client_secret()
)
# ...
Databricks 建议使用 host 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 azure_workspace_resource_id 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关使用 Python 和实现 Databricks 统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Python 的 Databricks Connect 客户端
- 为适用于 Visual Studio Code 的 Databricks 扩展设置身份验证
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Python 进行身份验证
用于 Java 的 Databricks SDK
import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(getAccountConsoleUrl())
.setAccountId(getAccountId())
.setAzureTenantId(getAzureTenantId())
.setAzureClientId(getAzureClientId())
.setAzureClientSecret(getAzureClientSecret())
AccountClient a = new AccountClient(cfg);
// ...
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
.setHost(getWorkspaceUrl())
.setAzureTenantId(getAzureTenantId())
.setAzureClientId(getAzureClientId())
.setAzureClientSecret(getAzureClientSecret())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
Databricks 建议使用 setHost 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 setAzureWorkspaceResourceId 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关使用 Java 和实现 Databricks 统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Scala 的 Databricks Connect 客户端(适用于 Scala 的 Databricks Connect 客户端使用随附的 Databricks SDK for Java 进行身份验证)
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Java 进行身份验证
用于 Go 的 Databricks SDK
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: getAccountConsoleUrl(),
AccountId: getAccountId(),
AzureTenantId: getAzureTenantId(),
AzureClientId: getAzureClientId(),
AzureClientSecret: getAzureClientSecret(),
}))
// ...
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
对于直接配置,请将函数调用替换为从控制台或其他一些配置存储(例如 Azure KeyVault)获取值的代码。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: getWorkspaceUrl(),
AzureTenantId: getAzureTenantId(),
AzureClientId: getAzureClientId(),
AzureClientSecret: getAzureClientSecret(),
}))
// ...
Databricks 建议使用 Host 并显式将 Microsoft Entra 服务主体分配给工作区。 或者,与 Azure 资源 ID 一起使用 AzureWorkspaceResourceId 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关通过使用 Go 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅使用 Azure Databricks 帐户或工作区对 Databricks SDK for Go 进行身份验证。