Azure Databricks 个人访问令牌身份验证

Azure Databricks 个人访问令牌 (PAT) 可用于验证对 Azure Databricks 工作区级别资源和 API 的访问权限。 凭据和相关信息的许多存储机制(例如环境变量和 Azure Databricks 配置文件)都支持 Azure Databricks 个人访问令牌。 尽管在 Azure Databricks 工作区中,用户可以具有多个个人访问令牌,但每个个人访问令牌仅用于单个 Azure Databricks 工作区。 每个用户的个人访问令牌数限制为每个工作区 600 个。

重要

由于 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 个人访问令牌,请执行以下操作:

  1. 在 Azure Databricks 工作区中,单击顶部栏中的 Azure Databricks 用户名,然后从下拉列表中选择“设置”
  2. 单击“开发人员”。
  3. 在“访问令牌”旁边,单击“管理”。
  4. 单击“生成新令牌”。
  5. (可选)输入有助于将来识别此令牌的注释,并将令牌的默认生存期更改为 90 天。 若要创建没有生存期的令牌(不建议),请将“生存期(天)”框留空(保留空白)。
  6. 单击“生成” 。
  7. 将显示的令牌复制到安全位置,然后单击“完成”。

注意

请务必将复制的令牌保存到安全的位置。 请勿与他人共享复制的令牌。 如果丢失了复制的令牌,你将无法重新生成完全相同的令牌, 而必须重复此过程来创建新令牌。 如果丢失了复制的令牌,或者认为令牌已泄露,Databricks 强烈建议通过单击“访问令牌”页上令牌旁边的垃圾桶(撤销)图标立即从工作区中删除该令牌。

如果你无法在工作区中创建或使用令牌,可能是因为工作区管理员已禁用令牌或未授予你创建或使用令牌的权限。 请与工作区管理员联系,或参阅以下主题:

服务主体的 Azure Databricks 个人访问令牌

服务主体可以自行创建 Databricks 个人访问令牌,如下所示:

注意

不能使用 Azure Databricks 用户界面为服务主体生成 Azure Databricks 个人访问令牌。 此过程使用 Databricks CLI 版本 0.205 或更高版本为服务主体生成访问令牌。 如果尚未安装 Databricks CLI,请参阅安装或更新 Databricks CLI

此过程假定你使用 OAuth 计算机到计算机 (M2M) 身份验证Microsoft Entra ID 服务主体身份验证设置 Databricks CLI,以便对服务主体进行身份验证,从而为其自身生成 Azure Databricks 个人访问令牌。 请参阅 OAuth 计算机到计算机 (M2M) 身份验证Microsoft Entra ID 服务主体身份验证

  1. 使用 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 的配置文件。
  2. 在响应中,复制 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 DEFAULTDEFAULT 部分替换为其他配置文件名称。

  1. 使用 Databricks CLI 创建名为 DEFAULT 的 Azure Databricks 配置文件,它使用 Azure Databricks 个人访问令牌身份验证。 为此,请运行以下命令:

    databricks configure --profile DEFAULT
    
  2. 对于提示Databricks 主机,请输入 Azure Databricks 按工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net

  3. 对于提示个人访问令牌,请输入工作区的 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 DEFAULTDEFAULT 部分,如以下步骤所示。

  1. 使用 Databricks CLI 创建名为 DEFAULT 的 Azure Databricks 配置文件,它使用 Azure Databricks 个人访问令牌身份验证。 为此,请运行以下命令:

    databricks configure --configure-cluster --profile DEFAULT
    
  2. 对于提示Databricks 主机,请输入 Azure Databricks 按工作区 URL,例如https://adb-1234567890123456.7.azuredatabricks.net

  3. 对于提示个人访问令牌,请输入工作区的 Azure Databricks 个人访问令牌。

  4. 在显示的可用群集列表中,使用向上键和向下键选择工作区中的目标 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 客户端,请参阅以内容之一:

VS Code

对于 Visual Studio Code 的 Databricks 扩展,请执行以下操作:

  1. 按照本文“配置文件”部分所述为 Azure Databricks 工作区级操作设置 .databrickscfg 文件中的值。
  2. 在 Visual Studio Code 的 Databricks 扩展中,单击“配置”窗格中的“配置 Databricks”。
  3. 在“命令面板”中,对于“Databricks 主机”,请输入每工作区 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net,然后按 Enter
  4. 在“命令面板”中,选择 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 进行身份验证的详细信息,请参阅:

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 进行身份验证的详细信息,请参阅:

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 进行身份验证