Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
重要
此功能目前以公共预览版提供。
本页说明工作区管理员如何使用组克隆将新用户的默认工作区访问权限更改为使用者访问权限。 此功能可帮助你大规模简化使用者加入,同时为需要创作权限的用户维护适当的访问级别。
概述
默认情况下,添加到工作区的每个用户将成为系统 users 组的成员。 此组通常具有工作区访问权限或 Databricks SQL 访问许可,这些是授权用户创建和修改工作区对象的权利。
为了给用户提供只读消费体验,组 users 必须仅具备消费者权限。 权利是累加性的,因此使用者访问权限仅当它是分配给用户的唯一权利时,才提供简化的仅限查看的体验。 通过组克隆,你可以进行此更改,而不会中断需要创作权限的现有用户。 它为现有用户创建新组,并更新新用户的默认 users 组。
有关使用者访问及其功能的详细信息,请参阅什么是使用者访问权限? 若要了解有关权利的详细信息,请参阅 “管理权利”。
何时使用此功能
在以下情况下使用此功能:
- 默认将新工作区用户设置为仅消费者访问。
- 需要将拥有创作权限(工作区或 Databricks SQL 访问)的用户与仅限查看的用户分开。
- 您希望大规模简化消费者上手过程。
组克隆的工作原理
系统users组由Azure Databricks自动管理,并包括所有工作区用户。 无法删除此组。 若要了解有关系统组的详细信息,请参阅 组源。
克隆 users 组时:
- 创建一个新组,并赋予其
users组当前拥有的相同权利。 - 所有现有工作区用户都会自动移动到克隆的组,确保他们保留其当前的访问级别。
- 组
users将更新为仅具有消费者权限。 - 将添加到工作区的用户将自动成为
users组的成员,且仅获得消费者权限。
users当组包含嵌套层级过深的组(这些组是其他组的成员)时,可以选择如何处理它们:
- 直接添加所有组成员(建议):将嵌套组的所有成员直接添加到克隆的组。 这简化了组结构。
- 排除:完全跳过嵌套组。 不包括的嵌套组的成员不会被添加到克隆组中。
要求
若要更改默认工作区访问权限,你必须是工作区管理员。
使用 UI 更改默认工作区访问
你看到的步骤取决于工作区配置:
-
users如果组具有创作权限(工作区访问权限或 Databricks SQL 访问权限),则会看到下面所述的组克隆工作流。 -
users如果组没有创作权利,则会看到一个更简单的模式,使使用者无需克隆即可进行访问。 当所有用户都已通过其他方式(例如帐户级组)拥有工作区访问权限时,就会发生这种情况。
若要更改默认工作区访问权限为使用者访问,请执行以下步骤:
作为工作区管理员,登录到Azure Databricks工作区。
单击Azure Databricks工作区顶部栏中的用户名,然后选择 Settings。
单击“ 高级 ”选项卡。
在 “访问控制”下,单击 “更改对使用者访问权限的默认工作区访问权限”旁边的“ 打开”。
根据工作区配置,你将看到以下两个工作流之一:
如果该
users组具有编辑权限:在对话框中,输入克隆组的名称。 此组将包含所有需要保留其当前权利的现有用户。
单击创建并克隆组。
系统将创建新组并开始克隆过程。 在克隆过程中,请不要关闭模态窗口。
users如果组包含嵌套太深的嵌套组,系统会提示你处理它们。- 选择直接添加所有组成员(推荐),从而将嵌套组的所有成员直接添加到克隆组,实现组的平展。
- 选择 “排除此组 ”以跳过此嵌套组。
- (可选)选择“将此决定应用于所有超出嵌套深度限制的未来组”,以便在此操作期间对所有将来的嵌套组使用此决定。
在 最后一步:移动创作权限并更改默认访问权限,单击“ 完成”。
系统将更新
users组,使其仅具有消费者权限,并将原始权限分配给克隆组。查看摘要,然后单击“ 完成”。
users如果该组没有创作权限:在对话框中,查看说明新工作区用户当前没有默认访问权限的消息。
单击“ 启用 ”以授予使用者对
users组的访问权限。
新用户现在默认具有使用者访问权限。
验证更改
完成此过程后,请验证是否已正确应用更改:
- 作为工作区管理员,登录到Azure Databricks工作区。
- 单击顶部栏中的用户名,然后选择 “设置”。
- 单击“ 标识和访问 ”选项卡。
- 在组旁边,单击管理。
- 验证以下内容:
- 克隆的组存在并且具有与原始
users组相同的用户数。 - 该
users组现在只有使用者权限。
- 克隆的组存在并且具有与原始
注意事项和最佳做法
更改默认工作区访问时,请考虑以下事项:
对新用户的影响:更改默认访问权限后,添加到工作区的所有新用户仅接收使用者权利。 他们可以查看仪表板和他人共享的Databricks应用,但无法创建新的工作区对象。 其默认 Databricks 登陆页是 Databricks One 页面。 有关详细信息,请参阅什么是使用者访问权限?什么是 Databricks One?。
授予创作权限:需要向新用户授予更高的权限时,必须手动将它们添加到克隆的组或单独分配其他权利。 有关管理组成员资格的说明,请参阅管理组成员资格。
还原更改:如果需要还原此配置,请将工作区访问权限和 Databricks SQL 访问权利授予回
users组。 然后,新用户默认接收这些权利。 可以保留或删除克隆的组,具体取决于你是否仍需要它来组织用户。与标识提供者协调:如果使用 SCIM 预配或自动标识管理来同步用户和组,请与标识管理流程协调此更改。
使用 SDK 自动执行组克隆
对于跨多个工作区的批量操作或自动化,可以使用 Databricks SDK for Python自动执行组克隆过程。 如果需要跨多个工作区应用相同的配置或将组克隆集成到基础结构即代码工作流中,此方法非常有用。
以下Python脚本自动复制 users 组并分配适当的权利。 它使用用于 Python 的 Databricks SDK,并需要一个具有帐户及工作区管理员权限的服务主体(使用 OAuth 进行身份验证)。 请参阅 通过 OAuth 授权用户访问 Azure Databricks。
先决条件
- 具有管理员权限的服务主体
- 环境变量集:
-
DATABRICKS_ACCOUNT_ID(来自帐户控制台 URL 的 UUID) -
DATABRICKS_WORKSPACE_ID(工作区 URL 中的数字 ID) -
DATABRICKS_CLIENT_ID(服务主体客户端 ID) -
DATABRICKS_CLIENT_SECRET(服务主体客户端机密)
-
示例脚本
import os
import databricks.sdk as dbx
from databricks.sdk.service import iam
# Set the Databricks account host URL for your account's cloud
DATABRICKS_HOST = "https://accounts.databricks.azure.cn"
# Fetch credentials from environment variables
DATABRICKS_ACCOUNT_ID = os.getenv("DATABRICKS_ACCOUNT_ID")
DATABRICKS_WORKSPACE_ID = os.getenv("DATABRICKS_WORKSPACE_ID")
DATABRICKS_CLIENT_ID = os.getenv("DATABRICKS_CLIENT_ID")
DATABRICKS_CLIENT_SECRET = os.getenv("DATABRICKS_CLIENT_SECRET")
# Initialize Databricks account client
account_client = dbx.AccountClient(
host=DATABRICKS_HOST,
account_id=DATABRICKS_ACCOUNT_ID,
client_id=DATABRICKS_CLIENT_ID,
client_secret=DATABRICKS_CLIENT_SECRET,
)
print(f"Authenticated to Databricks account {DATABRICKS_ACCOUNT_ID}")
# Get workspace and initialize workspace client
workspace = account_client.workspaces.get(workspace_id=DATABRICKS_WORKSPACE_ID)
workspace_name = workspace.workspace_name
workspace_client = account_client.get_workspace_client(workspace)
print(f"Authenticated to Databricks workspace {DATABRICKS_WORKSPACE_ID}, '{workspace_name}'")
def get_workspace_group(group_name):
"""
Fetches the workspace group with the given name.
"""
group = list(workspace_client.groups.list(filter=f"displayName eq '{group_name}'"))[0]
print(f"Found workspace group: {group.display_name}")
print(f"Workspace {group.display_name} has {len(group.members)} members")
return group
def clone_workspace_group_to_account(workspace_group_name, new_account_group_name):
workspace_group = get_workspace_group(workspace_group_name)
group = account_client.groups.create(
display_name=new_account_group_name, members=workspace_group.members
)
print(f"Created account group: {new_account_group_name}")
print(f"Cloned workspace group {workspace_group.display_name} to account group {group.display_name}")
print(f"Account {group.display_name} has {len(group.members)} members")
return group
def add_account_group_to_workspace(account_group, workspace):
permissions = account_client.workspace_assignment.update(
workspace_id=workspace.workspace_id,
principal_id=account_group.id,
permissions=[iam.WorkspacePermission.USER],
)
print(f"Added account group {account_group.display_name} to workspace {workspace.workspace_id}, {workspace.workspace_name}")
return permissions
# Clone workspace 'users' group to new account group '{workspace_name}-contributors'
account_group = clone_workspace_group_to_account(
"users", f"{workspace_name}-contributors"
)
# Add account group '{workspace_name}-contributors' to the workspace
permissions = add_account_group_to_workspace(account_group, workspace)
运行脚本以复制现有组并重新分配权限后,向使用者授予对该 users 组的访问权限,以便自动授予新用户该访问权限。
注释
调整组织策略和命名约定中的组名称和权限。 在广泛应用更改之前,始终在非生产环境中测试更改。
后续步骤
更改默认工作区访问权限后,可能需要:
- 通过将其添加到已克隆的群组,管理群组成员身份并授予新用户创作权限。 请参阅管理组。
- 查看和调整用户或用户组的权限。 请参阅管理权限。
- 详细了解使用者访问体验。 请参阅什么是使用者访问权限?什么是 Databricks One?。
- 为消费者用户配置数据治理控件。 请参阅 行筛选器和列掩码。