管理服务主体
本文介绍如何为 Azure Databricks 帐户和工作区创建和管理服务主体。
有关 Azure Databricks 标识模型的概述,请参阅 Azure Databricks 标识。
要管理服务主体的访问权限,请参阅身份验证和访问控制。
什么是服务主体?
服务主体是在 Azure Databricks 中创建的一个标识,用于自动化工具、作业和应用程序。 服务主体为自动化工具和脚本提供对 Azure Databricks 资源的仅限 API 的访问权限,比使用用户或组提供了更大的安全性。
你可以像对待 Azure Databricks 用户一样,授予和限制服务主体对资源的访问。 例如,可执行以下操作:
- 为服务主体帐户提供帐户管理员和工作区管理员角色。
- 在使用 Unity Catalog 的帐户级别或在工作区级别为服务主体提供对数据的访问权限。
- 在帐户和工作区级别将服务主体添加到组,包括工作区
admins
组。
还可以向 Azure Databricks 用户、服务主体和组授予使用服务主体的权限。 这样,用户就可以作为服务主体而不是标识运行作业。 这可以防止在用户离开组织或修改了组时作业失败。
与 Azure Databricks 用户不同,服务主体是仅限 API 标识;它不可用于访问 Azure Databricks UI。
Databricks 建议为工作区启用联合身份验证。 使用联合身份验证可以在帐户控制台中配置服务主体,然后为其分配对特定工作区的访问权限。 这简化了 Azure Databricks 管理和数据治理。
重要
Databricks 于 2023 年 11 月 9 日自动为联合身份验证和 Unity Catalog 启用了新工作区,并逐步跨帐户推出。 如果工作区默认启用了联合身份验证,则无法禁用。 有关详细信息,请参阅 Unity Catalog 的自动启用。
Databricks 和 Microsoft Entra ID 服务主体
服务主体可以是 Azure Databricks 托管服务主体或 Microsoft Entra ID 托管服务主体。
Azure Databricks 托管服务主体可以使用 Databricks OAuth 身份验证和个人访问令牌向 Azure Databricks 进行身份验证。 Microsoft Entra ID 托管服务主体可以使用 Databricks OAuth 身份验证和 Microsoft Entra ID 令牌向 Azure Databricks 进行身份验证。 若要详细了解如何为服务主体进行身份验证,请参阅管理服务主体的令牌。
Azure Databricks 托管服务主体直接在 Azure Databricks 中进行管理。 Microsoft Entra ID 托管服务主体在 Microsoft Entra ID 中进行管理,这需要其他权限。 Databricks 建议你为 Azure Databricks 自动化使用 Azure Databricks 托管服务主体,并且建议在必须同时向 Azure Databricks 和其他 Azure 资源进行身份验证的情况下使用 Microsoft Entra ID 托管服务主体。
若要创建 Azure Databricks 托管服务主体,请跳过本部分并继续阅读谁可以管理和使用服务主体?。
若要在 Azure Databricks 中使用 Microsoft Entra ID 托管服务主体,管理员用户必须在 Azure 中创建 Microsoft Entra ID 应用程序。 若要创建Microsoft Entra ID 托管服务主体,请参阅 MS Entra 服务主体身份验证。
谁可以管理和使用服务主体?
若要在 Azure Databricks 中管理服务主体,必须具有以下角色之一:帐户管理员角色、工作区管理员角色,或服务主体的管理员或用户角色。
- 帐户管理员可以将服务主体添加到帐户,并为他们分配管理员角色。 只要工作区使用联合身份验证,他们也可以向服务主体分配对工作区的访问权限。
- 工作区管理员可以将服务主体添加到 Azure Databricks 工作区,为他们分配工作区管理员角色,并管理对工作区中对象和功能的访问权限,例如创建群集或访问指定的基于角色的环境的权利。
- 服务主体管理器可以管理服务主体上的角色。 服务主体创建者将成为服务主体管理者。 帐户管理员是帐户中所有服务主体上的服务主体管理者。
注意
如果服务主体是在 2023 年 6 月 13 日之前创建的,则默认情况下,服务主体的创建者没有服务主体管理者角色。 请让帐户管理员向你授予服务主体管理者角色。
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你要使用服务主体来执行作业,则需要显式为自己分配服务主体用户角色,即使在创建服务主体之后也是如此。
- 服务主体用户可以以服务主体身份运行作业。 作业以服务主体的标识运行,而不是以作业所有者的标识运行。 有关详细信息,请参阅管理 Databricks 作业的标识、权限和特权。
有关如何授予服务主体管理员和用户角色的信息,请参阅用于管理服务主体的角色。
在帐户中管理服务主体
帐户管理员可以使用帐户控制台将服务主体添加到 Azure Databricks 帐户。
使用帐户控制台将服务主体添加到帐户
可以在 Azure Databricks 中创建服务主体,也可以从现有的 Microsoft Entra ID 服务主体进行链接。 请参阅 Databricks 和 Microsoft Entra ID 服务主体。
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中,单击“用户管理”。
- 在“服务主体”选项卡上,单击“添加服务主体”。
- 在“管理”下,选择“Databricks 管理”或“Microsoft Entra ID 管理”。
- 如果选择了“Microsoft Entra ID 管理”,请在“Microsoft Entra 应用程序 ID”下粘贴服务主体的应用程序(客户端)ID。
- 为服务主体输入名称。
- 单击“添加” 。
向服务主体分配帐户管理员角色
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中,单击“用户管理”。
- 在“服务主体”选项卡上,找到并单击用户名。
- 在“角色”选项卡上,启用“帐户管理员”或“市场管理员”。
使用帐户控制台将服务主体分配到工作区
若要使用帐户控制台将用户添加到工作区,工作区必须启用联合身份验证。 工作区管理员还可以使用工作区管理员设置页将服务主体分配给工作区。 有关详细信息,请参阅使用工作区管理员设置将服务主体添加到工作区。
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中单击“工作区”。
- 单击工作区名称。
- 在“权限”选项卡上,单击“添加权限”。
- 搜索并选择服务主体,分配权限级别(工作区“用户”或“管理员”),然后单击“保存”。
使用帐户控制台从工作区中删除服务主体
若要使用帐户控制台从工作区中删除服务主体,工作区必须启用联合身份验证。 从工作区中删除服务主体后,该服务主体将无法再访问该工作区,但服务主体上的权限仍会保留。 如果稍后将该服务主体添加回工作区,它将重新获得其以前的权限。
- 作为帐户管理员,登录到帐户控制台
- 在边栏中单击“工作区”。
- 单击工作区名称。
- 在“权限”选项卡上,找到服务主体。
- 单击服务主体行最右侧的 “Kebab 菜单”,然后选择“删除”。
- 在确认对话框中,单击“删除”。
在 Azure Databricks 帐户中停用服务主体
帐户管理员可以在 Azure Databricks 帐户中停用服务主体。 停用的服务主体无法向 Azure Databricks 帐户或工作区进行身份验证。 但是,服务主体的所有权限和工作区对象保持不变。 停用服务主体后,会出现以下情况:
- 服务主体无法通过任何方法向帐户或其任一工作区进行身份验证。
- 使用服务主体生成的令牌的应用程序或脚本将无法再访问 Databricks API。 令牌将保留,但不能用于在服务主体停用时进行身份验证。
- 服务主体拥有的群集保持运行。
- 由服务主体创建的计划作业将失败,除非它们分配给新的所有者。
重新激活服务主体时,可以使用相同的权限登录 Azure Databricks。 Databricks 建议停用帐户的服务主体而不是移除它们,因为移除服务主体是一项破坏性操作。 已停用的服务主体的状态在帐户控制台中标记为“非活动”。 还可以从特定工作区停用服务主体。 请参阅在 Azure Databricks 工作区中停用服务主体。
无法使用帐户控制台停用服务主体。 请改为使用帐户服务主体 API。
例如:
curl --netrc -X PATCH \
https://${DATABRICKS_HOST}/api/2.1/accounts/{account_id}/scim/v2/ServicePrincipals/{id} \
--header 'Content-type: application/scim+json' \
--data @update-sp.json \
| jq .
update-sp.json
:
{
"schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations": [
{
"op": "replace",
"path": "active",
"value": [
{
"value": "false"
}
]
}
]
}
从 Azure Databricks 帐户中删除服务主体
帐户管理员可以从 Azure Databricks 帐户中删除服务主体。 工作区管理员不能执行此操作。 从帐户中删除服务主体时,该主体也会从其工作区中移除。
重要
从帐户中删除服务主体时,该服务主体也将从其工作区中删除,不管是否启用了联合身份验证。 建议不要删除帐户级服务主体,除非希望他们失去对帐户中所有工作区的访问权限。 请注意删除服务主体会产生以下后果:
- 使用服务主体生成的令牌的应用程序或脚本无法再访问 Databricks API
- 服务主体拥有的作业失败
- 服务主体拥有的群集停止
- 服务主体创建并使用“以所有者身份运行”凭据共享的查询或仪表板必须分配给新所有者,以防共享失败
从帐户中删除 Microsoft Entra ID 服务主体后,该服务主体将无法再访问该帐户或其工作区,但该服务主体上的权限仍会保留。 如果稍后将该服务主体添加回帐户,它将重新获得其以前的权限。
若要使用帐户控制台删除服务主体,请执行以下操作:
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中,单击“用户管理”。
- 在“服务主体”选项卡上,找到并单击用户名。
- 在“主体信息”选项卡上,单击右上角的 kebab 菜单,然后选择“删除”。
- 在确认对话框中,单击“确认删除”。
在工作区中管理服务主体
工作区管理员可以使用工作区管理员设置页管理工作区中的服务主体。
使用工作区管理员设置将服务主体添加到工作区
可以在 Azure Databricks 中创建服务主体,也可以从现有的 Microsoft Entra ID 服务主体进行链接。 请参阅 Databricks 和 Microsoft Entra ID 服务主体。
以工作区管理员身份登录到 Azure Databricks 工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
单击“身份验证和访问控制”选项卡。
单击“服务主体”旁的“管理”。
单击“添加服务主体”。
选择要分配给工作区的现有服务主体,或单击“添加新建”以创建新服务主体。
若要添加新的服务主体,请选择“Databricks 管理”或“Microsoft Entra ID 管理”。 如果选择“Microsoft Entra ID 管理”,请粘贴服务主体的应用程序(客户端)ID,然后输入显示名称。
单击“添加” 。
注意
如果没有为工作区启用联合身份验证,则无法将现有帐户服务主体分配到工作区。
使用工作区管理员设置页将工作区管理员角色分配给服务主体
- 以工作区管理员身份登录到 Azure Databricks 工作区。
- 单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
- 单击“标识和访问”选项卡。
- 在“组”旁边,单击“管理”。
- 选择
admins
系统组。 - 单击“添加成员”。
- 选择服务主体并单击“确认”。
若要删除某个服务主体的工作区管理员角色,请从管理员组中删除该服务主体。
在 Azure Databricks 工作区中停用服务主体
工作区管理员可以在 Azure Databricks 工作区中停用服务主体。 停用的服务主体无法从 Azure Databricks API 访问工作区,但服务主体的所有权限和工作区对象保持不变。 停用服务主体时:
- 服务主体无法通过任何方法向工作区进行身份验证。
- 服务主体的状态在工作区管理员设置页面中显示为“非活动”。
- 使用服务主体生成的令牌的应用程序或脚本无法再访问 Databricks API。 令牌将保留,但不能用于在服务主体停用时进行身份验证。
- 服务主体拥有的群集保持运行。
- 由服务主体创建的计划作业必须分配给新的所有者,以防止它们失败。
重新激活服务主体时,可以使用相同的权限向工作区进行身份验证。 Databricks 建议停用服务主体而不是删除它们,因为删除服务主体是一项破坏性操作。
- 以工作区管理员身份登录到 Azure Databricks 工作区。
- 单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
- 单击“身份验证和访问控制”选项卡。
- 单击“服务主体”旁的“管理”。
- 选择要停用的服务主体。
- 在“状态”下,取消选中“活动”。
若要将服务主体设置为活动状态,请执行相同的步骤,但改为选中该复选框。
使用工作区管理员设置页从工作区中删除服务主体
从工作区中删除服务主体不会从帐户中删除服务主体。 若要从帐户中删除服务主体,请参阅从 Azure Databricks 帐户中删除服务主体。
从工作区中删除服务主体后,该服务主体将无法再访问该工作区,但服务主体上的权限仍会保留。 如果稍后将该服务主体添加回工作区,它将重新获得其以前的权限。
- 以工作区管理员身份登录到 Azure Databricks 工作区。
- 单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
- 单击“身份验证和访问控制”选项卡。
- 单击“服务主体”旁的“管理”。
- 选择服务主体。
- 在右上角,单击“删除”。
- 单击“删除”进行确认。
使用 API 管理服务主体
帐户管理员和工作区管理员可以使用 Databricks API 管理 Azure Databricks 帐户和工作区中的服务主体。 若要使用 API 管理服务主体上的角色,请参阅使用 Databricks CLI 管理服务主体角色。
使用 API 管理帐户中的服务主体
管理员可以使用帐户服务主体 API 在 Azure Databricks 帐户中添加和管理服务主体。 帐户管理员和工作区管理员使用不同的终结点 URL 调用 API:
- 帐户管理员使用
{account-domain}/api/2.1/accounts/{account_id}/scim/v2/
。 - 工作区管理员使用
{workspace-domain}/api/2.0/account/scim/v2/
。
有关详细信息,请参阅帐户服务主体 API。
使用 API 管理工作区中的服务主体
帐户和工作区管理员可以使用工作区分配 API 将服务主体分配到已启用联合身份验证的工作区。 通过 Azure Databricks 帐户和工作区支持工作区分配 API。
- 帐户管理员使用
{account-domain}/api/2.0/accounts/{account_id}/workspaces/{workspace_id}/permissionassignments
。 - 工作区管理员使用
{workspace-domain}/api/2.0/preview/permissionassignments/principals/{principal_id}
。
请参阅工作区分配 API。
如果工作区未启用联合身份验证,则工作区管理员可以使用工作区级 API 将服务主体分配到其工作区。 请参阅工作区服务主体 API。
管理服务主体的令牌
服务主体可以使用 Azure Databricks OAuth 令牌或 Azure Databricks 个人访问令牌向 Azure Databricks 上的 API 进行身份验证,如下所示:
- Azure Databricks OAuth 令牌可用于向 Azure Databricks 帐户级别和工作区级别 API 进行身份验证。
- 在 Azure Databricks 帐户级别创建的 Azure Databricks OAuth 令牌可用于向 Azure Databricks 帐户级别和工作区级别 API 进行身份验证。
- 在 Azure Databricks 工作区级别创建的 Azure Databricks OAuth 令牌仅可用于向 Azure Databricks 工作区级别 API 进行身份验证。
- Azure Databricks 个人访问令牌仅可用于向 Azure Databricks 工作区级别 API 进行身份验证。
管理服务主体的 Databricks OAuth 身份验证
若要对帐户级别和工作区级别的 Databricks REST API 进行身份验证,帐户管理员可以对服务主体使用 Azure Databricks OAuth 令牌。 可以使用服务主体的客户端 ID 和客户端密码来请求 OAuth 令牌。 有关详细信息,请参阅使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证。
另请参阅
有关使用服务主体作为开发人员使用 Azure Databricks CLI 或 Azure Databricks REST API 的详细信息,请参阅 使用 OAuth(OAuth M2M)通过服务主体对 Azure Databricks 的访问权限进行身份验证。
有关使用Microsoft托管服务标识(MSI)或Microsoft Entra 访问令牌的详细信息,请参阅 Azure 托管标识身份验证 和 MS Entra 服务主体身份验证 。