Dela via


Klona en arbetsytegrupp till en ny kontogrupp

Den här sidan innehåller vägledning för arbetsyteadministratörer som vill ge Konsumentåtkomst till användare i en Azure Databricks-arbetsyta. Det innehåller ett Python-skript som hjälper dig att hantera grupper med Databricks SDK för Python.

Bakgrund

Arbetsytor är ofta konfigurerade så att alla användare på en arbetsyta tilldelas både åtkomst till arbetsytan och Databricks SQL-rättigheter automatiskt vid etablering. Eftersom rättigheter är additiva ser användarna bara den förenklade arbetsytan när konsumentåtkomst är deras enda behörighet. Om en grupp beviljas rättigheter med större behörighet än konsumentåtkomst får ingen av användarna i den gruppen endast konsumentupplevelsen.

Den här sidan innehåller ett arbetsflöde för att klona den befintliga users systemgruppen till en ny grupp som behåller åtkomsten till arbetsytan och Databricks SQL-åtkomsträttigheter . Sedan förklaras hur du konfigurerar om gruppen users så att nyligen etablerade användare som standard endast tilldelas behörigheten Konsumentåtkomst. Med den här konfigurationen måste användare som behöver åtkomst på högre nivå läggas till i den nya gruppen när de läggs till på arbetsytan.

Bevilja konsumentåtkomst

Om du har använt users gruppen för att bevilja redigeringsbehörighet till alla användare på arbetsytan använder du följande steg för att tillåta att vissa användare endast beviljas behörighet för konsumentåtkomst.

  1. Duplicera arbetsytans users systemgrupp:

    • Skapa en ny kontogrupp som innehåller alla aktuella medlemmar i arbetsytans users grupp.
    • Tilldela behörigheter med högre behörighet, till exempel åtkomst till arbetsyta eller Databricks SQL-åtkomst till den nya gruppen i stället för standardgruppen users .
  2. Ta bort rättigheter med högre behörighet från users gruppen: På så sätt kan du lägga till nya användare som konsumenter utan att de uppgraderas automatiskt av grupprättigheter.

  3. Lägg till nya användare som konsumenter: Lägg till användare som bara ska ha användaråtkomst till arbetsytan.

Använda Databricks SDK för Python för att automatisera hanteringen av rättigheter

Följande Python-skript automatiserar processen med att duplicera users gruppen och tilldela lämpliga rättigheter. Den använder Databricks SDK för Python och kräver ett huvudnamn för tjänsten med administratörsbehörighet för både kontot och arbetsytan, autentiserad med OAuth. Se Auktorisera interaktiv åtkomst till Azure Databricks-resurser med ett användarkonto med OAuth-.

Förutsättningar:

  • Tjänstens huvudnamn med administratörsbehörighet
  • Uppsättning miljövariabler:
    • DATABRICKS_ACCOUNT_ID (UUID från kontokonsolens URL)
    • DATABRICKS_WORKSPACE_ID (numeriskt ID från arbetsytans URL)
    • DATABRICKS_CLIENT_ID (klient-ID för tjänstens huvudnamn)
    • DATABRICKS_CLIENT_SECRET (klienthemlighet för tjänstens huvudkonto)

Exempelskript


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):
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)

När du har duplicerat dina existerande grupper och omfördelade behörigheter kan du ge konsumentåtkomst till gruppen users, eller någon annan grupp, så att nya användare automatiskt beviljas åtkomst när de läggs till på arbetsytan.

Anmärkning

Justera gruppnamn och behörigheter så att de överensstämmer med organisationens principer och namngivningskonventioner. Testa alltid ändringar i en icke-produktionsmiljö innan du tillämpar dem brett.