Freigeben über


Klonen einer Arbeitsbereich-Gruppe in eine neue Kontogruppe

Diese Seite enthält Anleitungen für Arbeitsbereichsadministratoren, die Benutzern in einem Azure Databricks-Arbeitsbereich die Berechtigung Consumer access zuerkennen möchten. Es enthält ein Python-Skript zum Verwalten von Gruppen mithilfe des Databricks SDK für Python.

Hintergrund

Arbeitsbereiche werden häufig so konfiguriert, dass allen Benutzern in einem Arbeitsbereich sowohl die Berechtigungen " Arbeitsbereichzugriff " als auch "Databricks SQL " bei der Bereitstellung automatisch zugewiesen werden. Da Berechtigungen additiv sind, sehen Benutzer nur den vereinfachten Arbeitsbereich, wenn der Verbraucherzugriff ihre einzige Berechtigung ist. Wenn einer Gruppe eine Berechtigung mit größeren Privilegien als der Zugriff für Verbraucher gewährt wird, erhält keiner der Benutzer in dieser Gruppe nur die Verbrauchererfahrung.

Diese Seite bietet einen Workflow zum Klonen der vorhandenen users Systemgruppe zu einer neuen Gruppe, die arbeitsbereichszugriff und SQL-Zugriffsberechtigungen für Databricks behält. Anschließend wird erläutert, wie Sie die users Gruppe neu konfigurieren, damit neu bereitgestellte Benutzer standardmäßig nur die Berechtigung für den Verbraucherzugriff zugewiesen werden. Bei diesem Setup müssen Benutzer, die einen Zugriff auf eine höhere Ebene benötigen, der neuen Gruppe hinzugefügt werden, wenn sie dem Arbeitsbereich hinzugefügt werden.

Verbraucherzugriff gewähren

Wenn Sie die users Gruppe verwendet haben, um allen Benutzern des Arbeitsbereichs Autorenrechte zu gewähren, führen Sie die folgenden Schritte aus, um einigen Benutzern nur die Konsumentenzugriffsberechtigung zu gewähren.

  1. Duplizieren Sie die Systemgruppe des Arbeitsbereichsusers:

    • Erstellen Sie eine neue Kontogruppe, die alle aktuellen Mitglieder der Gruppe des Arbeitsbereichs users enthält.
    • Weisen Sie höherprivilegierte Berechtigungen zu, z. B. Arbeitsbereichszugriff oder Databricks SQL-Zugriff, an diese neue Gruppe anstelle der Standardgruppe users zu.
  2. Entfernen Sie höherwertige Berechtigungen aus der users Gruppe: Auf diese Weise können Sie neue Benutzer als Nutzer hinzufügen, ohne dass sie von Gruppenberechtigungen automatisch aktualisiert werden.

  3. Fügen Sie neue Benutzer als Verbraucher hinzu: Fügen Sie Benutzer hinzu, die nur über die Benutzerzugriffsoberfläche für den Arbeitsbereich verfügen sollen.

Verwenden des Databricks SDK für Python zum Automatisieren der Verwaltung von Berechtigungen

Das folgende Python-Skript automatisiert den Prozess der Duplizierung der users Gruppe und das Zuweisen geeigneter Berechtigungen. Es verwendet das Databricks SDK für Python und benötigt ein Dienstkennzeichen mit Administratorberechtigungen für das Konto und die Arbeitsumgebung, die über OAuth authentifiziert werden. Siehe Autorisieren des Benutzerzugriffs auf Azure Databricks mit OAuth.

Voraussetzungen:

  • Dienstprinzipal mit Administratorrechten
  • Umgebungsvariablen festlegen:
    • DATABRICKS_ACCOUNT_ID (UUID aus der URL der Kontokonsole)
    • DATABRICKS_WORKSPACE_ID (numerische ID aus der Arbeitsbereichs-URL)
    • DATABRICKS_CLIENT_ID (Dienstprinzipal Client ID)
    • DATABRICKS_CLIENT_SECRET (Dienstprinzipal Client Secret)

Beispielskript


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)

Nachdem Sie Ihre vorhandenen Gruppen dupliziert und berechtigungen erneut zugewiesen haben, können Sie Verbraucherzugriff auf die usersGruppe oder eine beliebige andere Gruppe gewähren, sodass neuen Benutzern automatisch dieser Zugriff gewährt wird, wenn sie dem Arbeitsbereich hinzugefügt werden.

Hinweis

Passen Sie Gruppennamen und Berechtigungen an die Richtlinien Ihrer Organisation und deren Benennungskonventionen an. Testen Sie immer Änderungen in einer Nichtproduktionsumgebung, bevor Sie sie allgemein anwenden.