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 更改默认工作区访问
若要将默认工作区访问权限更改为使用者访问权限,请执行以下操作:
以工作区管理员身份登录到 Azure Databricks 工作区。
单击 Azure Databricks 工作区顶部栏中的用户名,然后选择“设置”。
单击“ 高级 ”选项卡。
在 “访问控制”下,单击 “更改对使用者访问权限的默认工作区访问权限”旁边的“ 打开”。
在对话框中,输入克隆组的名称。 此组将包含所有需要保留其当前权利的现有用户。
单击创建并克隆组。
系统将创建新组并开始克隆过程。 在克隆过程中,请不要关闭模态窗口。
users如果组包含嵌套太深的嵌套组,系统会提示你处理它们。- 选择直接添加所有组成员(推荐),从而将嵌套组的所有成员直接添加到克隆组,实现组的平展。
- 选择 “排除此组 ”以跳过此嵌套组。
- (可选)选择“将此决定应用于所有超出嵌套深度限制的未来组”,以便在此操作期间对所有将来的嵌套组使用此决定。
在 最后一步:移动创作权限并更改默认访问权限,单击“ 完成”。
系统将组
users更新为仅具有消费者权限,并将原始权限分配给克隆的组。查看摘要,然后单击“ 完成”。
验证更改
完成此过程后,请验证是否已正确应用更改:
- 以工作区管理员身份登录到 Azure Databricks 工作区。
- 单击顶部栏中的用户名,然后选择 “设置”。
- 单击“ 标识和访问 ”选项卡。
- 在组旁边,单击管理。
- 验证以下内容:
- 克隆的组存在并且具有与原始
users组相同的用户数。 - 该
users组现在只有消费者权限。
- 克隆的组存在并且具有与原始
注意事项和最佳做法
更改默认工作区访问时,请考虑以下事项:
对新用户的影响:更改默认访问权限后,添加到工作区的所有新用户仅接收使用者权利。 他们可以查看仪表板和他人共享的Databricks应用,但无法创建新的工作区对象。 其默认 Databricks 登陆页是 Databricks One 页面。 有关详细信息,请参阅 什么是 Databricks One?。
授予创作权限:需要向新用户授予更高的权限时,必须手动将它们添加到克隆的组或单独分配其他权利。 有关管理组成员资格的说明,请参阅管理组成员资格。
还原更改:如果需要还原此配置,请将工作区访问权限和 Databricks SQL 访问权利授予回
users组。 然后,新用户默认接收这些权利。 可以保留或删除克隆的组,具体取决于你是否仍需要它来组织用户。与标识提供者协调:如果使用 SCIM 预配或自动标识管理来同步用户和组,请与标识管理流程协调此更改。
使用 SDK 自动执行组克隆
对于跨多个工作区的批量操作或自动化,您可以利用专为 Python 设计的 Databricks SDK 来自动化组克隆过程。 如果需要跨多个工作区应用相同的配置或将组克隆集成到基础结构即代码工作流中,此方法非常有用。
以下 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?。
- 为消费者用户配置数据治理控件。 请参阅 行筛选器和列掩码。