Pular para o conteúdo principal

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.

  1. 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 .
  2. 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.

  3. 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

Python

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.gcp.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.

nota

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.