监视和管理个人访问令牌的访问权限
若要向 Azure Databricks REST API 进行身份验证,用户可以创建个人访问令牌并在其 REST API 请求中使用它。 用户还可以创建服务主体,并将其与个人访问令牌配合使用,用于在其 CI/CD 工具和自动化中调用 Azure Databricks REST API。 本文介绍 Azure Databricks 工作区管理员如何管理其工作区中的这些访问令牌。
使用个人访问令牌 (PAT) 而不是 OAuth 访问 Azure Databricks
Databricks 建议使用 OAuth 访问令牌而不是 PAT,以便提高安全性和便利性。 Databricks 继续支持 PAT,但由于其安全风险更大,建议审核帐户当前的 PAT 使用情况,并将用户和服务主体迁移到 OAuth 访问令牌。
个人访问令牌管理概述
注意
以下文档介绍了尚未迁移其代码以改用 OAuth 的客户的 PAT 使用情况。 要评估您自己的组织的 PAT 使用情况并计划从 PAT 迁移到 OAuth 访问令牌,请参阅评估 Databricks 帐户中的个人访问令牌使用情况。
默认为 2018 年或之后创建的所有 Azure Databricks 工作区启用个人访问令牌。
在工作区中启用个人访问令牌后,具有“可以使用”权限的用户可以生成个人访问令牌来访问 Azure Databricks REST API,并且可以生成具有任何到期日期(包括无限生存期)的这些令牌。 默认情况下,非管理员工作区用户没有“可以使用”权限,这意味着他们无法创建或使用个人访问令牌。
作为 Azure Databricks 工作区管理员,你可以禁用工作区的个人访问令牌、监视和撤销令牌、控制哪些非管理员用户可以创建令牌和使用令牌,以及设置新令牌的最长生存期。
在工作区中管理个人访问令牌需要高级计划。 若要创建个人访问令牌,请参阅 Azure Databricks 个人访问令牌身份验证。
为工作区启用或禁用个人访问令牌身份验证
默认情况下,将为在 2018 年或之后创建的所有 Azure Databricks 工作区启用个人访问令牌身份验证。 可以在工作区设置页中更改此设置。
为工作区禁用个人访问令牌时,个人访问令牌不能用于向 Azure Databricks 进行身份验证,工作区用户和服务主体无法创建新令牌。 为工作区禁用个人访问令牌身份验证时,不会删除任何令牌。 如果以后重新启用令牌,则任何未过期的令牌都会变得可供使用。
如果要对部分用户禁用令牌访问权限,可以始终为该工作区启用个人访问令牌身份验证,并为用户和组设置细化的权限。 请参阅控制谁可以创建和使用令牌。
警告
合作伙伴集成需要在工作区上启用个人访问令牌。
要禁用为工作区创建和使用个人访问令牌的功能:
转到设置页。
单击“高级” 选项卡。
单击“个人访问令牌”切换开关。
单击“确认” 。
此更改可能需要几秒钟的时间才能生效。
还可以使用工作区配置 API 来禁用工作区的个人访问令牌。
控制谁可以创建和使用令牌
工作区管理员可以设置对个人访问令牌的权限,以控制哪些用户、服务主体和组可以创建和使用令牌。 有关如何配置个人访问令牌权限的详细信息,请参阅管理个人访问令牌权限。
设置新令牌的最大生存期
您可以使用 Databricks CLI 或工作区配置 API 在工作区中管理新令牌的最长生存期。 此限制仅适用于新令牌。
Databricks 会自动吊销 90 天或更长时间未使用的访问令牌。 由于此策略,请将令牌生存期设置为 90 天或更短时间。
将 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"
}'
若要使用 Databricks Terraform 提供程序管理工作区中新令牌的最长生存期,请参阅 databricks_workspace_conf 资源。
监视和撤销令牌
本部分介绍如何使用 Databricks CLI 管理工作区中的现有令牌。 还可以使用令牌管理 API。
获取工作区的令牌
若要获取工作区的令牌,请执行以下操作:
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
自动吊销旧访问令牌
当令牌 90 天或更长时间未使用时,Databricks 将自动撤销 Azure Databricks 工作区的 PAT。 最佳做法是定期审核 Azure Databricks 帐户中的 PAT,并删除在自动吊销之前任何未使用的 PAT。 导入并运行评估 Databricks 帐户中的个人访问令牌使用情况中提供的笔记本,以确定组织的 Azure Databricks 帐户中未过期的 PAT 数。