监视和撤销个人访问令牌
若要向 Azure Databricks REST API 进行身份验证,用户可以创建个人访问令牌 (PAT) 并在其 REST API 请求中使用它。 用户还可以创建服务主体,并将其与个人访问令牌配合使用,用于在其 CI/CD 工具和自动化中调用 Azure Databricks REST API。 本文介绍 Azure Databricks 管理员如何管理其工作区中的个人访问令牌。 若要创建个人访问令牌,请参阅 Azure Databricks 个人访问令牌身份验证。
使用 OAuth 而不是个人访问令牌
Databricks 建议使用 OAuth 访问令牌而不是 PAT,以便提高安全性和便利性。 Databricks 继续支持 PAT,但由于其安全风险更大,因此建议审核帐户当前的 PAT 使用情况,并将用户和服务主体迁移到 OAuth 访问令牌。 若要创建 OAuth 访问令牌(而不是 PAT)以便在自动化中与服务主体配合使用,请参阅使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证。
Databricks 建议执行以下步骤,以大幅减少个人访问令牌公开:
- 为工作区中创建的所有新令牌设置短生存期。 生存期应小于 90 天。 默认情况下,所有新令牌的最大生存期为 730 天(两年)。
- 请与 Azure Databricks 工作区管理员和用户合作,切换到生存期较短的令牌。
- 撤销所有生存期较长的令牌,以减少这些旧令牌随时间推移被滥用的风险。 Databricks 会自动撤销 90 天或更长时间内未使用的个人访问令牌。
要评估您自己的组织的 PAT 使用情况并计划从 PAT 迁移到 OAuth 访问令牌,请参阅评估 Databricks 帐户中的个人访问令牌使用情况。
要求
- 必须是 Azure Databricks 工作区管理员,才可禁用工作区的个人访问令牌、监视和撤销令牌、控制哪些非管理员用户可以创建令牌和使用令牌,以及设置新令牌的最长生存期。
- Azure Databricks 工作区必须采用高级计划。
为工作区启用或禁用个人访问令牌身份验证
默认情况下,将为在 2018 年或之后创建的所有 Azure Databricks 工作区启用个人访问令牌身份验证。 可以在工作区设置页中更改此设置。
为工作区禁用个人访问令牌时,个人访问令牌不能用于向 Azure Databricks 进行身份验证,工作区用户和服务主体无法创建新令牌。 为工作区禁用个人访问令牌身份验证时,不会删除任何令牌。 如果以后重新启用令牌,则任何未过期的令牌都会变得可供使用。
如果要对部分用户禁用令牌访问权限,可以始终为该工作区启用个人访问令牌身份验证,并为用户和组设置细化的权限。 请参阅控制谁可以创建和使用个人访问令牌。
警告
合作伙伴集成需要在工作区上启用个人访问令牌。
要禁用为工作区创建和使用个人访问令牌的功能:
转到设置页。
单击“高级” 选项卡。
单击“个人访问令牌”切换开关。
单击“确认” 。
此更改可能需要几秒钟的时间才能生效。
还可以使用工作区配置 API 来禁用工作区的个人访问令牌。
控制谁可以创建和使用个人访问令牌
工作区管理员可以设置对个人访问令牌的权限,以控制哪些用户、服务主体和组可以创建和使用令牌。 有关如何配置个人访问令牌权限的详细信息,请参阅管理个人访问令牌权限。
设置新个人访问令牌的最大生存期
默认情况下,新令牌的最大生存期为 730 天(两年)。 您可以使用 Databricks CLI 或工作区配置 API 在工作区中管理较短的最长令牌生存期。 此限制仅适用于新令牌。
将 maxTokenLifetimeDays
设置为新令牌的最长令牌生存期(以天为单位的整数)。 例如:
Databricks CLI
databricks workspace-conf set-status --json '{
"maxTokenLifetimeDays": "90"
}'
工作区配置 API
curl -n -X PATCH "https://<databricks-instance>/api/2.0/workspace-conf" \
-d '{
"maxTokenLifetimeDays": "90"
}'
如果将 maxTokenLifetimeDays
设置为零,则可以创建最长生存期为 730 天(两年)的新令牌。
若要使用 Databricks Terraform 提供程序管理工作区中新令牌的最长生存期,请参阅 databricks_workspace_conf 资源。
监视和撤销令牌
本部分介绍如何使用 Databricks CLI 管理工作区中的现有令牌。 还可以使用令牌管理 API。 Databricks 会自动撤销 90 天或更长时间内未使用的个人访问令牌。
获取工作区的令牌
若要获取工作区的令牌,请执行以下操作:
Python
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
spark.createDataFrame([token.as_dict() for token in w.token_management.list()]).createOrReplaceTempView('tokens')
display(spark.sql('select * from tokens order by creation_time'))
Bash
# Filter results by a user by using the `created-by-id` (to filter by the user ID) or `created-by-username` flags.
databricks token-management list
删除(撤销)令牌
若要删除令牌,请将 TOKEN_ID 替换为要删除的令牌的 ID:
databricks token-management delete TOKEN_ID