用于管理服务主体的角色
本文介绍如何管理 Azure Databricks 帐户中服务主体的角色。
服务主体是在 Azure Databricks 中创建的一个标识,用于自动化工具、作业和应用程序。 服务主体为自动化工具和脚本提供对 Azure Databricks 资源的仅限 API 的访问权限,比使用用户或组提供了更大的安全性。
可以向 Azure Databricks 用户、服务主体和帐户组授予使用服务主体的权限。 这样,用户就可以作为服务主体而不是标识运行作业。 这可以防止在用户离开组织或修改了组时作业失败。
有关服务主体的概述,请参阅管理服务主体。
服务主体角色
服务主体角色属于帐户级角色。 这意味着,只需在帐户中定义服务主体角色一次,然后可将其应用于所有工作区。 可以向服务主体授予两种角色:服务主体管理者和服务主体用户。
- 服务主体管理者允许管理服务主体的角色。 服务主体的创建者在服务主体上具有“服务主体管理员”角色。 帐户管理员对帐户中的所有服务主体具有服务主体管理员角色。
注意
如果服务主体是在 2023 年 6 月 13 日之前创建的,则默认情况下,服务主体的创建者没有服务主体管理员角色。 如果你需要成为管理者,请让帐户管理员为你授予服务主体管理员角色。
- 服务主体用户允许工作区用户以服务主体身份运行作业。 作业将以服务主体的标识运行,而不是以作业所有者的标识运行。
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你要使用服务主体来执行作业,则需要显式为自己分配服务主体用户角色,即使在创建服务主体之后也是如此。
注意
Azure Databricks 服务主体角色不会与 Azure 角色或 Microsoft Entra ID(以前称为 Azure Active Directory)角色重叠。 这些角色仅跨 Azure Databricks 帐户。
使用帐户控制台管理服务主体角色
帐户管理员可以使用帐户控制台管理服务主体角色。
查看服务主体的角色
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中,单击“用户管理”。
- 在“服务主体”选项卡上,查找并单击名称。
- 单击“权限”选项卡。
可以查看主体列表以及在服务主体上为它们授予的角色。 还可以使用搜索栏搜索特定的主体或角色。
在服务主体上授予角色
作为帐户管理员,登录到帐户控制台。
在边栏中,单击“用户管理”。
在“服务主体”选项卡上,查找并单击名称。
单击“权限”选项卡。
单击“授予访问权限”。
搜索并选择用户、服务主体或组,然后选择要分配的一个或多个角色(“服务主体:管理者”或“服务主体:用户”)。
注意
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你希望用户使用服务主体来执行作业,则需要显式分配服务主体用户角色。
单击“ 保存”。
撤销服务主体的角色
- 作为帐户管理员,登录到帐户控制台。
- 在边栏中,单击“用户管理”。
- 在“服务主体”选项卡上,查找并单击名称。
- 单击“权限”选项卡。
- 搜索用户、服务主体或组以编辑其角色。
- 在包含主体的行上,单击 kebab 菜单 ,然后选择“编辑”。 或者,选择“删除”以撤销主体的所有角色。
- 单击 “编辑” 。
- 单击要撤销的角色旁边的“X”。
- 单击“ 保存”。
使用 Databricks CLI 管理服务主体角色
必须具有服务主体的“服务主体管理者”角色才能管理角色。 可以使用 Databricks CLI 管理角色。 若要了解如何安装 Databricks CLI 并向其进行身份验证,请参阅什么是 Databricks CLI?。
还可以使用帐户访问控制 API 管理服务主体角色。 通过 Azure Databricks 帐户和工作区支持帐户访问控制 API。
帐户管理员对 accounts.databricks.azure.cn ({account-domain}/api/2.0/preview/accounts/{account_id}/access-control
) 调用 API。
具有“服务主体管理员”角色但不是帐户管理员的用户在工作区域 ({workspace-domain}/api/2.0/preview/accounts/access-control/
) 上调用 API。
使用 Databricks CLI 授予服务主体的角色
帐户访问控制 API 和 CLI 使用 etag
字段来确保一致性。 若要通过 API 授予或撤销服务主体角色,请先发出 GET
规则集命令并在响应中接收 etag
。 然后,可以在本地应用更改,最后使用 etag
发出 PUT
规则集。
例如,通过运行以下命令,对要授予访问权限的服务主体发出 GET
规则集:
databricks account access-control get-rule-set accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default <etag>
替换:
<account-id>
替换为帐户 ID。<application-id>
替换为服务主体应用程序 ID。<etag>
使用 ""
示例响应:
{
"etag":"<etag>",
"grant_rules": [
{
"principals": [
"users/user@example.com"
],
"role":"roles/servicePrincipal.manager"
},
{
"principals": [
"users/user@example.com"
],
"role":"roles/servicePrincipal.user"
}
],
"name":"<name>"
}
复制响应正文中的 etag
字段供稍后使用。
然后,可以在确定规则的最终状态时在本地进行更新,并使用 etag 更新规则集。 若要将“服务主体:用户”角色授予用户 user2@example.com
,请运行以下命令:
databricks account access-control update-rule-set --json '{
"name": "accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default",
"rule_set": {
"name": "accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default",
"grant_rules": [
{
"role": "roles/servicePrincipal.user",
"principals": ["users/user2@example.com"]
}
],
"etag": "<etag>"
}
}'
替换:
<account-id>
替换为帐户 ID。<application-id>
替换为服务主体应用程序 ID。<etag>
替换为从最后一个响应中复制的 etag。
示例响应:
{
"etag":"<new-etag>",
"grant_rules": [
{
"principals": [
"users/user2@example.com"
],
"role":"roles/servicePrincipal.user"
}
],
"name":"accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default"
}
重要
由于这是一个 PUT
方法,因此将覆盖所有现有角色。 若要保留任何现有角色,必须将其添加到 grant_roles
数组。
列出可用的服务主体
使用工作区服务主体 API,可以通过在 servicePrincipal/use
上进行筛选来列出具有用户角色的服务主体。
若要列出你拥有“服务主体用户”角色的服务主体,请运行以下命令:
databricks service-principals list -p WORKSPACE --filter "permission eq 'servicePrincipal/use'"
还可以使用工作区服务主体 API 列出服务主体。