Azure 托管标识 身份验证使用 Azure 资源的托管标识对 Azure Databricks 进行身份验证。 对 Azure Databricks 帐户和工作区操作的编程调用在使用支持托管标识的 Azure 资源(如 Azure VM)时使用此托管标识。
- 有关托管标识的信息,请参阅什么是 Azure 资源托管标识?。
- 若要了解如何创建托管标识并授予访问 Azure Databricks 帐户和工作区的权限,请参阅 将 Azure 托管标识与 Azure Databricks 配合使用。
注意
Azure 资源的托管标识与 Microsoft Entra ID 服务主体不同,Azure Databricks 还支持其身份验证。 若要了解如何将 Microsoft Entra ID 服务主体用于 Azure Databricks 身份验证,而不是 Azure 资源托管标识,请参阅:
只有在正确设定的支持托管标识的资源(如 Azure 虚拟机 (Azure VM))与 Azure Databricks 帐户和工作区之间,才支持 Azure 托管标识身份验证。
若要使用 Azure Databricks 配置 Azure 托管标识身份验证,必须使用正确支持的 Azure VM 上的一种受支持的方法设置以下配置:
- Azure Databricks 主机。
- 对于帐户操作,请指定
https://accounts.azuredatabricks.net。 - 对于工作区操作,请指定每工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net。
- 对于帐户操作,请指定
- 对于帐户操作,请指定 Azure Databricks 帐户 ID。
- 托管标识的租户 ID。
- 托管标识的客户端 ID。
- Azure 资源 ID。
- 将 Azure 使用托管标识设置为 true。
若要使用 Azure Databricks 执行 Azure 托管标识身份验证,请根据相关的工具或 SDK 在代码中集成以下内容:
环境
若要对工具或 SDK 的特定 Azure Databricks 身份验证类型使用环境变量,请参阅 授权访问 Azure Databricks 资源 或工具或 SDK 的文档。 另请参阅 环境变量和字段,了解统一身份验证 和 身份验证方法优先级。
对于帐户级操作,请设置以下环境变量:
-
DATABRICKS_HOST,设置为 Azure Databricks 帐户控制台 URL 的值,即https://accounts.azuredatabricks.net。 DATABRICKS_ACCOUNT_IDARM_CLIENT_ID-
ARM_USE_MSI:设置为true。
对于工作区级操作,请设置以下环境变量:
-
DATABRICKS_HOST,设置为 Azure Databricks 每工作区 URL 的值,例如https://adb-1234567890123456.7.azuredatabricks.net。 ARM_CLIENT_ID-
ARM_USE_MSI:设置为true。
Databricks 建议使用 DATABRICKS_HOST 并显式将身份分配给工作区。 或者,与 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_client_id = <azure-managed-identity-application-id>
azure_use_msi = true
对于工作区级操作,请在 .databrickscfg 文件中设置以下值。 在本例中,主机是 Azure Databricks 工作区专用 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
azure_client_id = <azure-managed-identity-application-id>
azure_use_msi = true
Databricks 建议使用 host 并显式将身份分配给工作区。 或者,与 Azure 资源 ID 一起使用 azure_workspace_resource_id 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
CLI
对于 Databricks CLI,请执行以下操作之一:
- 设置“ 环境 ”选项卡上指定的环境变量。
- 根据
.databrickscfg”选项卡上指定的设置文件中的值。
环境变量始终优先于 .databrickscfg 文件中的值。
另请参阅《Azure 托管标识身份验证》。
连接
注意
Databricks Connect 依赖 Databricks SDK for Python 进行身份验证。 Databricks SDK for Python 尚未实现 Azure 托管标识身份验证。
VS Code
注意
Visual Studio Code 的 Databricks 扩展尚不支持 Azure 托管标识身份验证。
Terraform
provider "databricks" {
alias = "accounts"
}
对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 HashiCorp Vault 等其他某个配置存储检索值)。另请参阅保管库提供程序)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
provider "databricks" {
alias = "accounts"
host = <retrieve-account-console-url>
account_id = <retrieve-account-id>
azure_client_id = <retrieve-azure-client-id>
azure_use_msi = true
}
provider "databricks" {
alias = "workspace"
}
对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 HashiCorp Vault 等其他某个配置存储检索值)。另请参阅保管库提供程序)。 在本例中,主机是 Azure Databricks 工作区专用 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
azure_client_id = <retrieve-azure-client-id>
azure_use_msi = true
}
Databricks 建议使用 host 并显式将身份分配给工作区。 或者,与 Azure 资源 ID 一起使用 azure_workspace_resource_id 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关使用 Databricks Terraform 提供程序进行身份验证的详细信息,请参阅身份验证。
Python
注意
Databricks SDK for Python 尚未实现 Azure 托管标识身份验证。
Java
注意
Databricks SDK for Java 尚未实现 Azure 托管标识身份验证。
Go
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...
对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure 密钥保管库等其他某个配置存储检索值)。 在本例中,Azure Databricks 帐户控制台 URL 为 https://accounts.azuredatabricks.net:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
Host: retrieveAccountConsoleUrl(),
AccountId: retrieveAccountId(),
AzureClientId: retrieveAzureClientId(),
AzureUseMSI: true,
}))
// ...
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
对于直接配置(将 retrieve 占位符替换为你自己的实现,以从控制台或 Azure 密钥保管库等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 工作区专用 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
Host: retrieveWorkspaceUrl(),
AzureClientId: retrieveAzureClientId(),
AzureUseMSI: true,
}))
// ...
Databricks 建议使用 Host 并显式将身份分配给工作区。 或者,与 Azure 资源 ID 一起使用 AzureResourceID 。 此方法需要对 Azure 资源具有参与者或所有者权限,或者具有特定 Azure Databricks 权限的自定义角色。
有关借助使用 Go 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅使用 Azure Databricks 帐户或工作区对 Databricks SDK for Go 进行身份验证。