Azure Databricks个人访问令牌(PAT)允许你在工作区级别对资源和 API 进行身份验证。 可以将它们存储在环境变量或Azure Databricks 配置配置文件中。 每个 PAT 仅对一个工作区有效,用户可以为每个工作区创建最多 600 个 PAT。 Azure Databricks 自动撤销未使用达 90 天的 PAT。
重要
用户名和密码身份验证(无令牌)于 2024 年 7 月 10 日结束。 Databricks 强烈建议使用 OAuth 而不是 PAT 进行身份验证,因为 OAuth 提供更强的安全性。 若要了解如何使用 OAuth 通过 Databricks 帐户完成身份验证,请参阅 使用 OAuth 授权用户访问 Azure Databricks。
您无法使用个人访问令牌来自动化 Azure Databricks 帐户级别功能。 请改用Azure Databricks帐户管理员的Microsoft Entra ID令牌。 Azure Databricks帐户管理员可以是用户或服务主体。 有关详细信息,请参阅:
为工作区用户创建个人访问令牌
若要为Azure Databricks工作区用户创建个人访问令牌,请执行以下操作:
- 在Azure Databricks工作区中,单击顶部栏中的用户名,然后选择 Settings。
- 单击“开发人员”。
- 在“访问令牌”旁边,单击“管理”。
- 单击“生成新令牌”。
- 输入有助于将来标识此令牌的注释。
- 设置令牌的生存期(以天为单位)。 请参阅 设置新个人访问令牌的最大生存期。
- 若要限制令牌的权限,请选择令牌类型并添加 API 范围。 请参阅 作用域内个人访问令牌。
- 单击“生成”按钮。
- 将显示的令牌复制到安全位置,然后单击“ 完成”。 安全地保存令牌,不共享该令牌。 如果丢失该令牌,则必须创建新的令牌。
如果无法创建或使用令牌,则工作区管理员可能已禁用令牌或未授予你权限。 请与工作区管理员联系,或参阅以下内容:
作用域内的个人访问令牌
限定作用域的个人访问令牌将令牌的权限限制为特定的 API 操作。 无需授予完全工作区访问权限,而是分配一个或多个 API 范围,例如 sql, unity-catalog或 scim限制令牌可以调用的 REST API 操作。
警告
具有authentication作用域的令牌可以生成具备任意作用域的新令牌。 仅将此范围授予需要管理其他令牌的令牌。
若要在工作区 UI 中创建限定范围的令牌,请在生成新令牌时选择令牌类型并添加 API 范围。 如果未分配任何范围,令牌将保留创建标识的完整权限。
有关范围及其关联的 API 操作的完整列表,请参阅 API 范围。
为服务主体创建个人访问令牌
服务主体可以自行创建个人访问令牌。
运行以下命令以生成访问令牌:
databricks tokens create \ --lifetime-seconds <lifetime-seconds> \ -p <profile-name>请替换以下值:
-
<lifetime-seconds>:令牌生存期(以秒为单位),例如 86400(1 天)。 默认为工作区最大值(通常为 730 天)。 -
<profile-name>:包含身份验证信息的配置文件。 默认为DEFAULT。
-
从响应中复制
token_value,这就是你的服务主体的访问令牌。 安全地保存令牌,不共享该令牌。 如果丢失该令牌,则必须创建新的令牌。
如果无法创建或使用令牌,则工作区管理员可能已禁用令牌或未授予你权限。 请与工作区管理员联系,或参阅以下内容:
执行个人访问令牌身份验证
若要配置Azure Databricks个人访问令牌身份验证,请设置以下关联的环境变量、.databrickscfg 字段、Terraform 字段或 Config 字段:
- Azure Databricks主机,指定为目标 Azure Databricks per-workspace URL,例如
https://adb-1234567890123456.7.azuredatabricks.net。 - Azure Databricks 用户帐户的个人访问令牌。
若要执行Azure Databricks个人访问令牌身份验证,请根据参与的工具或 SDK 在代码中集成以下内容:
环境
若要对工具或 SDK 使用特定 Azure Databricks 身份验证类型的环境变量,请参阅 授权访问 Azure Databricks 资源 或工具或 SDK 的文档。 另请参阅 环境变量和字段,了解统一身份验证 和 身份验证方法优先级。
设置以下环境变量:
-
DATABRICKS_HOST,设置为 Azure Databricks per-workspace URL,例如https://adb-1234567890123456.7.azuredatabricks.net。 -
DATABRICKS_TOKEN,设置为令牌字符串。
简档
使用 文件中的以下字段创建或标识 Azure Databricks .databrickscfg。 如果您已创建配置文件,请将占位符替换为适当的值。 若要将配置文件与工具或 SDK 配合使用,请参阅 授权访问 Azure Databricks 资源 或工具或 SDK 的文档。 另请参阅 环境变量和字段,了解统一身份验证 和 身份验证方法优先级。
在 .databrickscfg 文件中设置以下值。 在这种情况下,主机是 Azure Databricks per-workspace URL,例如 https://adb-1234567890123456.7.azuredatabricks.net:
[<some-unique-configuration-profile-name>]
host = <workspace-url>
token = <token>
可以使用 Databricks CLI 来设置这些值,而不是手动设置这些值:
注意
以下过程使用 Databricks CLI 创建名为 的 Azure Databricks DEFAULT。 如果已具有 DEFAULT 配置文件,此过程将覆盖现有的 DEFAULT 配置文件。
要检查是否已有 DEFAULT 配置文件,并查看此配置文件的设置(如果存在),请使用 Databricks CLI 运行命令 databricks auth env --profile DEFAULT。
要使用除 DEFAULT 以外的名称创建配置文件,请将以下 DEFAULT 命令中 --profile DEFAULT 的 databricks configure 部分替换为其他配置文件名称。
使用 Databricks CLI创建Azure Databricks 配置配置文件名为
DEFAULT,该配置文件使用Azure Databricks个人访问令牌身份验证。 为此,请运行以下命令:databricks configure --profile DEFAULT对于提示Databricks Host,请输入Azure Databricks 每个工作区的URL,例如
https://adb-1234567890123456.7.azuredatabricks.net。在提示个人访问令牌中,请输入Azure Databricks工作区的个人访问令牌。
CLI
对于 Databricks CLI,请运行 databricks configure 命令。 在出现提示时,输入以下设置:
- Azure Databricks 主机被指定为 Azure Databricks 的目标 per-workspace URL,例如
https://adb-1234567890123456.7.azuredatabricks.net。 - Azure Databricks 用户帐户的个人访问令牌。
有关详细信息,请参阅个人访问令牌身份验证(已弃用)。
连接
注意
以下 Databricks Connect 版本支持Azure Databricks个人访问令牌身份验证:
- 对于 Python,Databricks Connect for Databricks Runtime 13.3 LTS 及更高版本。
- 对于 Scala,为 Databricks Connect for Databricks Runtime 13.3 LTS 及更高版本。
对于 Databricks Connect,请使用 Databricks CLI 为 Azure Databricks .databrickscfg设置 profile 节中指定的 文件中的值。
以下过程创建名为 DEFAULT 的Azure Databricks配置文件,该配置文件覆盖任何现有的 DEFAULT 配置文件。 若要检查 DEFAULT 配置文件是否存在,请运行 databricks auth env --profile DEFAULT。 如果已经存在,请使用其他配置文件名称。
运行以下命令,创建一个名为
DEFAULT的Azure Databricks配置文件,该配置文件使用个人访问令牌身份验证。databricks configure \ --configure-cluster \ --profile DEFAULT对于提示Databricks Host,请输入Azure Databricks per-workspace URL,例如
https://adb-1234567890123456.7.azuredatabricks.net。对于提示 个人访问令牌,请输入工作区的个人访问令牌。
在可用群集列表中,选择您工作区中的目标 Azure Databricks 群集。 可以键入群集显示名称的任何部分来筛选可用群集的列表。
使用 Azure Databricks REST API 颁发个人访问令牌
Azure Databricks 提供 REST 端点 /api/2.0/token/create 来发放 PAT。 请参阅 “创建用户令牌 ”了解 API 详细信息。
在以下示例中,设置以下值:
-
<databricks-instance>:Databricks 工作区 URL。 例如,dbc-abcd1234-5678.cloud.databricks.com。 -
<your-existing-access-token>:有权创建新令牌的现有有效 PAT(字符串)。 -
<lifetime-seconds>:令牌的生存期(以秒为单位)。 -
<scopes>:要分配给令牌的范围的列表。 请参阅 作用域限定的个人访问令牌。
curl -X POST https://<databricks-instance>/api/2.0/token/create \
-H "Authorization: Bearer <your-existing-access-token>" \
-H "Content-Type: application/json" \
-d '{
"lifetime_seconds": <lifetime-seconds>,
"scopes": [
"sql",
"authentication"
]
}'
如果成功,则会导致响应有效负载类似于:
{
"token_value": "<your-newly-issued-pat>",
"token_info": {
"token_id": "<token-id>",
"creation_time": <creation-timestamp>,
"expiry_time": <expiry-timestamp>,
"comment": "<comment>",
"scopes": ["authentication", "sql"],
"last_accessed_time": 0
}
}
在后续调用 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)
更新个人访问令牌的范围
如果作用域内令牌缺少 API 调用所必需的权限范围,请求将失败,并返回一个错误,指出缺少的权限范围。 若要更新令牌的范围,请使用 REST 终结点 /api/2.0/token/<token_id>。 调用令牌必须具有 authentication 范围,该范围允许管理其他令牌。 使用 update_mask 字段指定要更新的令牌字段。
curl -X PATCH https://<databricks-instance>/api/2.0/token/<token_id> \
-H "Authorization: Bearer <your-existing-access-token>" \
-H "Content-Type: application/json" \
-d '{
"token": {
"scopes": ["sql", "unity-catalog"]
},
"update_mask": "scopes"
}'
范围更改最多可能需要十分钟才能传播。
若要查看所有可用的范围,请使用 GET /api/2.0/token-scopes。