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

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

注意

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

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

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

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

此过程假定你使用 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。 还可以键入群集显示名称的任意部分来筛选可用群集的列表。

使用 Azure Databricks REST API 颁发个人访问令牌

Azure Databricks 提供用于颁发 PAT 的 REST 终结点 /api/2.0/token/create 。 请参阅 “创建用户令牌 ”了解 API 详细信息。

必须向 REST API 提供特定值。 在以下示例中,设置以下值:

  • 替换为 <databricks-instance> Databricks 工作区 URL。 例如,dbc-abcd1234-5678.cloud.databricks.com
  • 替换为 <your-existing-access-token> 有权创建新令牌的现有有效 PAT(字符串)。

提供这些参数的值:

  • comment:新令牌的说明。
  • lifetime_seconds:令牌的生存期(以秒为单位)。
curl -X POST https://<databricks-instance>/api/2.0/token/create \
-H "Authorization: Bearer <your-existing-access-token>" \
-H "Content-Type: application/json" \
-d '{
  "comment": "New PAT using DB API",
  "lifetime_seconds": <lifetime-of-pat-in-seconds>
}'

-d 标志为请求提供 JSON 有效负载。

如果成功,则会导致响应有效负载类似于:

{
  "access_token": "<your-newly-issued-pat>",
  "token_type": "Bearer",
  "expires_in": <the-duration-of-the-new-pat>
}

在对 Databricks REST API 的后续调用的授权标头中提供响应中的新令牌。 例如:

# This example uses a simple GET. For POST or other REST verbs, you may need to provide additional parameters.
curl -X GET "https://<databricks-instance>/api/2.0/<path-to-endpoint>" \
     -H "Authorization: Bearer <your-new-pat>"
import requests

headers = {
    'Authorization': 'Bearer <your-new-pat>'
}
# This example is for an HTTP GET operation.
response = requests.get('https://<databricks-instance>/api/2.0/<path-to-endpoint>', headers=headers)