本文介绍如何管理 Azure Databricks 帐户中服务主体的角色。
服务主体是在 Azure Databricks 中创建的一个标识,用于自动化工具、作业和应用程序。 服务主体为自动化工具和脚本提供对 Azure Databricks 资源的仅限 API 的访问权限,比使用用户或组提供了更大的安全性。
可以向 Azure Databricks 用户、服务主体和帐户组授予使用服务主体的权限。 这样,用户就可以以服务主体身份而不是他们的个人身份运行作业。 这可以防止用户离开你的组织或某个组被修改时作业失败。
有关服务主体的概述,请参阅 服务主体。
服务主体角色
服务主体角色属于账户级角色。 这意味着,只需在您的账户中定义一次,然后即可应用于所有工作区。 可以向服务主体授予两种角色:服务主体管理者和服务主体用户。
- Service Principal Manager用于管理服务主体的角色。 服务主体的创建者在服务主体上具有“服务主体管理员”角色。 帐户管理员对帐户中的所有服务主体具有服务主体管理员角色。
注意
如果服务主体是在 2023 年 6 月 13 日之前创建的,则默认情况下,服务主体的创建者没有服务主体管理员角色。 如果你需要成为管理者,请让帐户管理员为你授予服务主体管理员角色。
- 服务主体用户允许工作区用户以服务主体身份运行作业。 作业将以服务主体的标识运行,而非以作业所有者的标识运行。
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你要使用服务主体来执行作业,则需要显式为自己分配服务主体用户角色,即使在创建服务主体之后也是如此。
注意
Azure Databricks 服务主体角色不会与 Azure 角色或 Microsoft Entra ID 角色重叠。 这些角色仅适用于 Azure Databricks 帐户。
使用帐户控制台管理服务主体角色
帐户管理员可以使用帐户控制台管理服务主体角色。
查看服务主体的角色
作为帐户管理员,登录到帐户控制台。
在边栏中,单击“用户管理”。
在“服务主体”选项卡上,查找并单击名称。
单击“权限”选项卡。
可以查看主体列表,以及在服务主体中分配给它们的角色。 还可以使用搜索栏搜索特定的主体或角色。
在服务主体上授予角色
作为帐户管理员,登录到帐户控制台。
在边栏中,单击“用户管理”。
在“服务主体”选项卡上,查找并单击名称。
单击“权限”选项卡。
单击“授予访问权限”。
搜索并选择用户、服务主体或组,然后选择要分配的一个或多个角色(“服务主体:管理者”或“服务主体:用户”)。
注意
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你希望用户使用服务主体来执行作业,则需要显式分配服务主体用户角色。
单击“ 保存”。
撤销服务主体的角色
作为帐户管理员,登录到帐户控制台。
在边栏中,单击“用户管理”。
在“服务主体”选项卡上,查找并单击名称。
单击“权限”选项卡。
搜索用户、服务主体或组以编辑其角色。
在具有主体的行上,单击烤肉串
然后选择“ 编辑”。 或者,选择“删除”以撤销主体的所有角色。
单击 “编辑” 。
单击你想要撤销的角色旁边的“X”。
单击“ 保存”。
使用工作区管理员设置页管理服务主体角色
工作区管理员可以使用管理员设置页来管理他们具有“服务主体管理者”角色的服务主体的服务主体角色。
查看服务主体的角色
以工作区管理员身份登录到 Azure Databricks 工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
单击“身份验证和访问控制”选项卡。
在“服务主体”旁,单击“管理”。
查找并单击名称。
单击“权限”选项卡。
可以查看主体列表,以及在服务主体中分配给它们的角色。 还可以使用搜索栏搜索特定的主体或角色。
在服务主体上授予角色
要授予角色,您必须在服务主体上具有“服务主体管理员”角色。
以工作区管理员身份登录到 Azure Databricks 工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
单击“身份验证和访问控制”选项卡。
在“服务主体”旁边点击
管理 。 找到并单击名称。
单击“权限”选项卡。
单击“授予访问权限”。
搜索并选择用户、服务主体或组,然后选择要分配的一个或多个角色(“服务主体:管理者”或“服务主体:用户”)。
注意
可以向任何帐户级别的用户、服务主体或组授予角色,即使他们不是工作区的成员。 无法向工作区本地组授予角色。
具有“服务主体管理员”角色的用户不会继承“服务主体用户”角色。 如果你希望用户使用服务主体来执行作业,则需要显式分配服务主体用户角色。
单击“ 保存”。
撤销服务主体的角色
要撤销角色,您必须在服务主体上具有“服务主体管理者”角色。
以工作区管理员身份登录到 Azure Databricks 工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
单击“身份验证和访问控制”选项卡。
在“服务主体”旁边,单击“管理”。
查找并单击名称。
单击“权限”选项卡。
搜索用户、服务主体或组以编辑其角色。
在具有主体的行上,单击烤肉串
然后选择“ 编辑”。 选择删除以撤销该主体的所有角色。
单击 “编辑” 。
单击要撤销的角色旁边的“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。 然后,可以在本地应用更改,最后使用 PUT 发出 etag 规则集。
例如,通过运行以下命令,对要授予访问权限的服务主体发出 GET 规则集:
databricks account access-control get-rule-set accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default <etag>
替换:
-
<account-id>与帐户 ID。 - 使用服务主体应用程序 ID 替换
<application-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 更新规则集。 若要将“服务主体:用户”角色授予用户 ,请运行以下命令:
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 列出服务主体。