Partilhar via


Clonar um grupo de workspace para um novo grupo de contas

Esta página fornece orientação para administradores de espaço de trabalho que desejam conceder o direito de acesso do consumidor aos usuários em um espaço de trabalho do Azure Databricks. Ele inclui um script Python para ajudar a gerenciar grupos usando o SDK Databricks para Python.

Contexto geral

Os espaços de trabalho geralmente são configurados de forma que todos os usuários em um espaço de trabalho recebam automaticamente o acesso ao espaço de trabalho e os direitos SQL do Databricks após o provisionamento. Como os direitos são aditivos, os usuários só veem o espaço de trabalho simplificado quando o acesso do consumidor é seu único direito. Se for concedido a um grupo 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 para um novo grupo que mantém os direitos de acesso ao Espaço de Trabalho e ao Databricks SQL . Em seguida, explica como reconfigurar o users grupo para que os usuários recém-provisionados recebam apenas o direito de acesso do consumidor por padrão. Com essa configuração, os usuários que precisam de um acesso de nível mais alto devem ser adicionados ao novo grupo quando forem adicionados ao espaço de trabalho.

Conceder acesso ao consumidor

Se tiver usado o users grupo para conceder privilégios de criação a todos os utilizadores da área de trabalho, use os passos seguintes para permitir que alguns utilizadores recebam apenas direitos de acesso como consumidor.

  1. users:

    • Crie um novo grupo de contas contendo todos os membros atuais do grupo do users espaço de trabalho.
    • Atribua direitos de privilégios mais altos, como acesso ao espaço de trabalho ou acesso ao Databricks SQL , a esse novo grupo em vez do grupo padrão users .
  2. Remover direitos de privilégios mais altos do grupo: isso permite que você adicione novos usuários como consumidores sem que eles sejam atualizados automaticamente pelos direitos do usersgrupo.

  3. Adicionar novos usuários como consumidores: adicione usuários que só devem ter a experiência de acesso do consumidor ao espaço de trabalho.

Use o SDK do Databricks para Python para automatizar o gerenciamento de direitos

O script Python a seguir automatiza o processo de duplicação do users grupo e atribuição de direitos apropriados. Usa o SDK Databricks para Python e requer um principal de serviço com privilégios de administrador tanto para a conta como para o espaço de trabalho, autenticado através de OAuth. Consulte Autorizar o acesso do usuário ao Azure Databricks com OAuth.

Pré-requisitos:

  • Principal de serviço com direitos de administrador
  • Conjunto de variáveis de ambiente:
    • DATABRICKS_ACCOUNT_ID (UUID do URL do console da conta)
    • DATABRICKS_WORKSPACE_ID (ID numérico do URL do espaço de trabalho)
    • DATABRICKS_CLIENT_ID (ID do cliente principal do serviço)
    • DATABRICKS_CLIENT_SECRET (segredo do cliente principal do serviço)

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.azuredatabricks.net
"

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)

Depois de duplicar os grupos existentes e reatribuir permissões, pode conceder acesso de consumidor ao users, ou a qualquer outro grupo, para que novos utilizadores recebam automaticamente esse acesso quando forem adicionados ao espaço de trabalho.

Observação

Ajuste os nomes de grupo e os direitos para as políticas e convenções de nomenclatura da sua organização. Sempre teste as alterações em um ambiente de não produção antes de aplicá-las amplamente.