Clonar um grupo workspace em um novo grupo account
Esta página fornece orientações para os administradores do site workspace que desejam conceder aos usuários acesso ao Consumer em um site Databricks workspace. Ele inclui um script Python para ajudar a gerenciar grupos usando o Databricks SDK para Python.
Plano de fundo
workspace são normalmente configurados de forma que todos os usuários em um workspace recebam o acesso ao workspace e os Databricks SQL e os direitos automaticamente após o provisionamento. Como os direitos são aditivos, os usuários só veem o workspace simplificado quando o acesso do consumidor é seu único direito. Se um grupo receber qualquer direito com privilégios maiores do que o acesso do consumidor, nenhum dos usuários desse grupo receberá apenas a experiência do consumidor.
Esta página fornece um fluxo de trabalho para clonar o grupo de sistema existente users
em um novo grupo que mantém o acesso ao espaço de trabalho e os direitos de acessoDatabricks SQL . Em seguida, ele explica como reconfigurar o grupo users
para que os usuários recém-provisionados recebam apenas o direito de acesso do consumidor por default. Com essa configuração, os usuários que precisam de um nível de acesso mais alto devem ser adicionados ao novo grupo quando forem adicionados ao site workspace.
Conceder acesso ao consumidor
Se o senhor tiver usado o grupo users
para conceder privilégios de autoria a todos os usuários do workspace, use as etapas a seguir para permitir que alguns usuários recebam apenas o direito de acesso do consumidor.
-
Duplicar o grupo de sistema
users
do site workspace:- Criar um novo grupo account contendo todos os membros atuais do grupo workspace's
users
. - Atribua direitos com privilégios mais altos, como acesso ao espaço de trabalho ou acesso aDatabricks SQL a esse novo grupo, em vez do grupo default
users
.
- Criar um novo grupo account contendo todos os membros atuais do grupo workspace's
-
Remover direitos de privilégios mais altos do grupo
users
: isso permite que você adicione novos usuários como consumidores sem que eles sejam automaticamente atualizados por direitos de grupo. -
Adicione novos usuários como consumidores : Adicione usuários que devem ter apenas a experiência de acesso de consumidor ao site workspace.
Use o Databricks SDK para Python para automatizar o gerenciamento de direitos
O script Python a seguir automatiza o processo de duplicação do grupo users
e atribui os direitos apropriados. Ele usa o Databricks SDK para Python e requer uma entidade de serviço com privilégios de administrador para o account e o workspace, autenticado usando o OAuth. Consulte Autorizar o acesso interativo a Databricks recurso com um usuário account usando OAuth.
Pré-requisitos:
- entidade de serviço com direitos de administrador
- variável de ambiente set:
DATABRICKS_ACCOUNT_ID
(UUID do URL do console account )DATABRICKS_WORKSPACE_ID
(ID numérica do URL workspace )DATABRICKS_CLIENT_ID
(ID do cliente da entidade de serviço)DATABRICKS_CLIENT_SECRET
(entidade de serviço client secret)
Exemplo de script
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.cloud.databricks.com"
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):
group = list(workspace_client.groups.list(filter=f"displayName eq '{group_name}'"))
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)
Depois de duplicar os grupos existentes e reatribuir as permissões, o senhor pode conceder acesso de consumidor ao grupo users
, ou a qualquer outro, para que os novos usuários recebam automaticamente esse acesso quando forem adicionados ao grupo workspace.
Ajuste os nomes e direitos dos grupos de acordo com as políticas e convenções de nomenclatura da sua organização. Sempre teste as alterações em um ambiente que não seja de produção antes de aplicá-las amplamente.