Azure Databricks 个人访问令牌身份验证
Azure Databricks 个人访问令牌 (PAT) 可用于验证对 Azure Databricks 工作区级别资源和 API 的访问权限。 凭据和相关信息的许多存储机制(例如环境变量和 Azure Databricks 配置文件)都支持 Azure Databricks 个人访问令牌。 尽管在 Azure Databricks 工作区中,用户可以具有多个个人访问令牌,但每个个人访问令牌仅用于单个 Azure Databricks 工作区。 每个用户的个人访问令牌数限制为每个工作区 600 个。
Databricks 自动撤销在 90 天或更多天内未使用的个人访问令牌。
重要
由于 OAuth 的安全性得到提高,Databricks 建议使用 OAuth 而不是 PAT 进行用户帐户客户端身份验证和授权。 若要了解如何使用 OAuth 通过 Databricks 用户帐户执行客户端身份验证,请参阅使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证(对于用户帐户身份验证)。
使用 Azure Databricks 用户名和密码进行的基本(非基于令牌的)身份验证将于 2024 年 7 月 10 日终止。
若要自动执行 Azure Databricks 帐户级别功能,不能使用 Azure Databricks 个人访问令牌。 必须改用 Azure Databricks 帐户管理员的 Microsoft Entra ID 令牌。 Azure Databricks 帐户管理员可以是用户或服务主体。 有关详细信息,请参阅:
工作区用户的 Azure Databricks 个人访问令牌
若要为 Azure Databricks 工作区用户创建 Azure Databricks 个人访问令牌,请执行以下操作:
- 在 Azure Databricks 工作区中,单击顶部栏中的 Azure Databricks 用户名,然后从下拉列表中选择“设置”。
- 单击“开发人员”。
- 在“访问令牌”旁边,单击“管理”。
- 单击“生成新令牌”。
- (可选)输入有助于将来识别此令牌的注释,并将令牌的默认生存期更改为 90 天。 若要创建没有生存期的令牌(不建议),请将“生存期(天)”框留空(保留空白)。
- 单击“生成” 。
- 将显示的令牌复制到安全位置,然后单击“完成”。
注意
请务必将复制的令牌保存到安全的位置。 请勿与他人共享复制的令牌。 如果丢失了复制的令牌,你将无法重新生成完全相同的令牌, 而必须重复此过程来创建新令牌。 如果丢失了复制的令牌,或者认为令牌已泄露,Databricks 强烈建议通过单击“访问令牌”页上令牌旁边的垃圾桶(撤销)图标立即从工作区中删除该令牌。
如果你无法在工作区中创建或使用令牌,可能是因为工作区管理员已禁用令牌或未授予你创建或使用令牌的权限。 请与工作区管理员联系,或参阅以下主题:
服务主体的 Azure Databricks 个人访问令牌
服务主体可以自行创建 Databricks 个人访问令牌,如下所示:
此过程假定你使用 OAuth 计算机到计算机 (M2M) 身份验证或 Microsoft Entra ID 服务主体身份验证设置 Databricks CLI,以便对服务主体进行身份验证,从而为其自身生成 Azure Databricks 个人访问令牌。 请参阅 OAuth 计算机到计算机 (M2M) 身份验证或 Microsoft Entra ID 服务主体身份验证。
使用 Databricks CLI 运行以下命令,该命令为服务主体生成另一个访问令牌。
运行下面的命令:
databricks tokens create --comment <comment> --lifetime-seconds <lifetime-seconds> -p <profile-name>
--comment
:将<comment>
替换为有关访问令牌用途的任何有意义的注释。 如果未指定--comment
选项,则不会生成注释。--lifetime-seconds
:将<lifetime-seconds>
替换为访问令牌的有效时间,以秒为单位。 例如,1 天为 86400 秒。 如果未指定--lifetime-seconds
选项,则访问令牌将设置为永不过期(不建议)。--profile-name
:将<profile-name>
替换为 Azure Databricks 配置文件的名称,其中包含服务主体和目标工作区的身份验证信息。 如果未指定-p
选项,Databricks CLI 将尝试查找和使用名为DEFAULT
的配置文件。
在响应中,复制
token_value
的值,这是服务主体的访问令牌。请务必将复制的令牌保存到安全的位置。 请勿与他人共享复制的令牌。 如果丢失了复制的令牌,你将无法重新生成完全相同的令牌, 而必须重复此过程来创建新令牌。
如果你无法在工作区中创建或使用令牌,可能是因为工作区管理员已禁用令牌或未授予你创建或使用令牌的权限。 请与工作区管理员联系,或参阅以下内容:
执行 Azure Databricks 个人访问令牌身份验证
若要配置 Azure Databricks 个人访问令牌身份验证,必须设置以下关联的环境变量、.databrickscfg
字段、Terraform 字段或 Config
字段:
- Azure Databricks 主机,指定为目标 Azure Databricks 每工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
。 - Azure Databricks 用户帐户的 Azure Databricks 个人访问令牌。
若要执行 Azure Databricks 个人访问令牌身份验证,请根据相关的工具或 SDK 在代码中集成以下内容:
环境
若要通过工具或 SDK 对特定 Azure Databricks 身份验证类型使用环境变量,请参阅对 Azure Databricks 资源的访问进行身份验证或者工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段和客户端统一身份验证的默认方法。
设置以下环境变量:
DATABRICKS_HOST
,设置为 Azure Databricks 每工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。DATABRICKS_TOKEN
,设置为令牌字符串。
配置文件
在 .databrickscfg
文件中使用以下字段创建或标识 Azure Databricks 配置文件。 如果创建配置文件,请将占位符替换为相应值。 若要通过工具或 SDK 使用配置文件,请参阅对 Azure Databricks 资源的访问进行身份验证或者工具或 SDK 的相关文档。 另请参阅客户端统一身份验证的环境变量和字段和客户端统一身份验证的默认方法。
在 .databrickscfg
文件中设置以下值。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
token = <token>
可以使用 Databricks CLI 来设置上述值,而不是在 .databrickscfg
文件中手动设置这些值,如下所示:
注意
以下过程将使用 Databricks CLI 创建名为 DEFAULT
的 Azure Databricks 配置文件。 如果已具有 DEFAULT
配置文件,此过程将覆盖现有的 DEFAULT
配置文件。
要检查是否已具有 DEFAULT
配置文件,并查看此配置文件的设置(如果存在),请使用 Databricks CLI 运行命令 databricks auth env --profile DEFAULT
。
要使用除 DEFAULT
以外的名称创建配置文件,请将以下 databricks configure
命令中 --profile DEFAULT
的 DEFAULT
部分替换为其他配置文件名称。
使用 Databricks CLI 创建名为
DEFAULT
的 Azure Databricks 配置文件,它使用 Azure Databricks 个人访问令牌身份验证。 为此,请运行以下命令:databricks configure --profile DEFAULT
对于提示Databricks 主机,请输入 Azure Databricks 按工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
。对于提示个人访问令牌,请输入工作区的 Azure Databricks 个人访问令牌。
CLI
对于 Databricks CLI,请运行 databricks configure
命令。 在出现提示时,输入以下设置:
- Azure Databricks 主机,指定为目标 Azure Databricks 每工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
。 - Azure Databricks 用户帐户的 Azure Databricks 个人访问令牌。
有关详细信息,请参阅 Azure Databricks 个人访问令牌身份验证。
连接
注意
以下 Databricks Connect 版本支持 Azure Databricks 个人访问令牌身份验证:
- 对于 Python,适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。
- 对于 Scala,为 Databricks Connect for Databricks Runtime 13.3 LTS 及更高版本。
对于 Databricks Connect,可以使用 Databricks CLI 按照本文的“配置文件”部分所述为 Azure Databricks 工作区级别操作设置 .databrickscfg
文件中的值,如下所示:
注意
以下过程将使用 Databricks CLI 创建名为 DEFAULT
的 Azure Databricks 配置文件。 如果已具有 DEFAULT
配置文件,此过程将覆盖现有的 DEFAULT
配置文件。
要检查是否已具有 DEFAULT
配置文件,并查看此配置文件的设置(如果存在),请使用 Databricks CLI 运行命令 databricks auth env --profile DEFAULT
。
若要创建名称不是 DEFAULT
的配置文件,请使用配置文件的另一名称替换 databricks configure
命令中 --profile DEFAULT
的 DEFAULT
部分,如以下步骤所示。
使用 Databricks CLI 创建名为
DEFAULT
的 Azure Databricks 配置文件,它使用 Azure Databricks 个人访问令牌身份验证。 为此,请运行以下命令:databricks configure --configure-cluster --profile DEFAULT
对于提示Databricks 主机,请输入 Azure Databricks 按工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
。对于提示个人访问令牌,请输入工作区的 Azure Databricks 个人访问令牌。
在显示的可用群集列表中,使用向上键和向下键选择工作区中的目标 Azure Databricks 群集,然后按
Enter
。 还可以键入群集显示名称的任意部分来筛选可用群集的列表。
其他支持的针对 Databricks Connect 的方法包括:
- 按照本文的“配置文件”部分所述为 Azure Databricks 工作区级别操作手动设置
.databrickscfg
文件中的值。 此外,将配置文件中的cluster_id
环境变量设置为每工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。 - 按照本文“环境”部分所述为 Azure Databricks 工作区级操作设置环境变量。 此外,将
DATABRICKS_CLUSTER_ID
环境变量设置为每工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net
。
.databrickscfg
文件中的值始终优先于环境变量。
若要使用 .databrickscfg
文件中的以下环境变量或值初始化 Databricks Connect 客户端,请参阅以内容之一:
- 对于 Python,请参阅《配置 Python 的连接属性》。
- 对于 Scala,请参阅《配置 Scala 的连接属性》。
VS Code
对于 Visual Studio Code 的 Databricks 扩展,请执行以下操作:
- 按照本文“配置文件”部分所述为 Azure Databricks 工作区级操作设置
.databrickscfg
文件中的值。 - 在 Visual Studio Code 的 Databricks 扩展中,单击“配置”窗格中的“配置 Databricks”。
- 在“命令面板”中,对于“Databricks 主机”,请输入每工作区 URL,例如
https://adb-1234567890123456.7.azuredatabricks.net
,然后按Enter
。 - 在“命令面板”中,选择 URL 列表中的目标配置文件名称。
有关详细信息,请参阅 Visual Studio Code 的 Databricks 扩展的身份验证设置。
Terraform
对于默认身份验证:
provider "databricks" {
alias = "workspace"
}
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 HashiCorp Vault 等其他某个配置存储检索值)。另请参阅保管库提供程序)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
provider "databricks" {
alias = "workspace"
host = <retrieve-workspace-url>
token = <retrieve-token>
}
有关使用 Databricks Terraform 提供程序进行身份验证的详细信息,请参阅身份验证。
Python
对于默认身份验证:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 Azure KeyVault 等其他某个配置存储检索值)。 在本例中,主机是 Azure Databricks 每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient(
host = retrieve_workspace_url(),
token = retrieve_token()
)
# ...
有关借助使用 Python 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Python 的 Databricks Connect 客户端
- 适用于 Visual Studio Code 的 Databricks 扩展的身份验证设置
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Python 进行身份验证
Java
对于默认身份验证:
import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 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(retrieveWorkspaceUrl())
.setToken(retrieveToken());
WorkspaceClient w = new WorkspaceClient(cfg);
// ...
有关借助使用 Java 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅:
- 设置适用于 Scala 的 Databricks Connect 客户端(适用于 Scala 的 Databricks Connect 客户端使用随附的 Databricks SDK for Java 进行身份验证)
- 使用 Azure Databricks 帐户或工作区对 Databricks SDK for Java 进行身份验证
Go
对于默认身份验证:
import (
"github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...
对于直接配置(将 retrieve
占位符替换为你自己的实现,以从控制台或 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: retrieveWorkspaceUrl(),
Token: retrieveToken(),
}))
// ...
有关借助使用 Go 并实现 Databricks 客户端统一身份验证的 Databricks 工具和 SDK 进行身份验证的详细信息,请参阅使用 Azure Databricks 帐户或工作区对 Databricks SDK for Go 进行身份验证。