English version

← Learning Hub Lektion 5 Dauer: ca. 14 Min. Thema: Governance & Zugriffssteuerung

Unity Catalog & Governance

Diese Lektion zeigt dir, wie du deinen Databricks Workspace so organisierst, dass mehrere Teams (Data Engineers, Data Scientists, Analystinnen, nachgelagerte Konsumenten) sicher zusammenarbeiten können. Am Ende kannst du eine Katalogstruktur entwerfen, Berechtigungen vergeben und die Datenherkunft (Lineage) durch deine Wetter-zu-Strom-Pipeline erklären.

Der dreistufige Namensraum

Unity Catalog führt für alle Datenobjekte eine dreistufige Namenskonvention ein:[1]

catalog.schema.table

-- Beispiele aus deiner Domäne:
prod.bronze.weather_raw
prod.silver.weather_ts
prod.silver.dim_assets
prod.gold.forecast_ts
dev.silver.weather_ts        -- Kopie für die Dev-Umgebung
Unity Catalog — dreistufiger Namensraum Metastore (auf Account-Ebene) Catalog: prod bronze silver gold weather_raw weather_ts power_ts dim_assets forecast_ts model_metrics Catalog: dev silver gold Sandkasten Experimente Catalog: sandbox analyst_* Schemas je Nutzer zum Ausprobieren

Empfohlene Katalogstruktur für Wetter-zu-Strom

CatalogZweckWer schreibtWer liest
prod Tabellen der Produktionspipeline (Bronze/Silver/Gold) Service Principals (Pipeline-Jobs) Alle (für Menschen nur lesend)
dev Entwicklung/Staging — spiegelt die Prod-Struktur Data Engineers Data Engineers, Data Scientists
sandbox Exploration — Analystinnen legen persönliche Schemas an Analystinnen, Data Scientists Nur der Eigentümer (oder explizit geteilt)
Grundprinzip: Prod wird nur von Maschinen beschrieben

Kein Mensch schreibt direkt nach prod. Nur Service Principals (an Workflow-Jobs gebunden) haben Schreibrechte. Das verhindert versehentliche Beschädigungen und stellt sicher, dass sich alle Prod-Daten auf einen Pipeline-Lauf zurückführen lassen. Menschen lesen Prod, experimentieren in Sandbox und bringen Änderungen über Dev nach vorn.

Das Berechtigungsmodell

Unity Catalog nutzt ein hierarchisches Berechtigungsmodell. Grants vererben sich nach unten (Catalog → Schema → Tabelle). Ein Deny auf einer beliebigen Ebene blockiert den Zugriff.[2]

-- Grant-Muster für dein Team

-- 1. Service Principal der Pipeline: Vollzugriff auf prod
GRANT USE CATALOG ON CATALOG prod TO `pipeline-service-principal`;
GRANT USE SCHEMA ON SCHEMA prod.bronze TO `pipeline-service-principal`;
GRANT USE SCHEMA ON SCHEMA prod.silver TO `pipeline-service-principal`;
GRANT USE SCHEMA ON SCHEMA prod.gold TO `pipeline-service-principal`;
GRANT ALL PRIVILEGES ON SCHEMA prod.bronze TO `pipeline-service-principal`;
GRANT ALL PRIVILEGES ON SCHEMA prod.silver TO `pipeline-service-principal`;
GRANT ALL PRIVILEGES ON SCHEMA prod.gold TO `pipeline-service-principal`;

-- 2. Data Scientists: prod lesen, dev + sandbox schreiben
GRANT USE CATALOG ON CATALOG prod TO `data-scientists`;
GRANT SELECT ON SCHEMA prod.silver TO `data-scientists`;
GRANT SELECT ON SCHEMA prod.gold TO `data-scientists`;
GRANT ALL PRIVILEGES ON CATALOG dev TO `data-scientists`;
GRANT ALL PRIVILEGES ON CATALOG sandbox TO `data-scientists`;

-- 3. Analystinnen: prod gold + silver lesen, sandbox schreiben
GRANT USE CATALOG ON CATALOG prod TO `analysts`;
GRANT SELECT ON SCHEMA prod.silver TO `analysts`;
GRANT SELECT ON SCHEMA prod.gold TO `analysts`;
GRANT ALL PRIVILEGES ON CATALOG sandbox TO `analysts`;

-- 4. Nachgelagerte Systeme: nur gold lesen
GRANT USE CATALOG ON CATALOG prod TO `trading-system`;
GRANT USE SCHEMA ON SCHEMA prod.gold TO `trading-system`;
GRANT SELECT ON SCHEMA prod.gold TO `trading-system`;

Service Principals vs. Benutzerkonten

IdentitätstypWofürBeispiel
Service Principal Automatisierte Pipelines, Zugriff externer Systeme sp-weather-pipeline, sp-trading-reader
Gruppe Berechtigungen auf Teamebene (leichter zu pflegen) data-engineers, data-scientists, analysts
Benutzerkonto Interaktives Arbeiten (Notebooks, SQL-Editor) Einzelne Teammitglieder

Data Lineage

Unity Catalog verfolgt die Datenherkunft automatisch — welche Tabellen aus welchen lesen und welche Jobs welche Ergebnisse erzeugt haben.[3]

Automatische Lineage — von Unity Catalog verfolgt bronze.weather_raw silver.weather_ts silver.dim_assets ML-Modell gold.forecast_ts Jeder Lese-/Schreibvorgang in Spark landet automatisch im Lineage-Graph — ganz ohne Zusatzcode

Lineage beantwortet für dein Team entscheidende Fragen:

Entscheidungen beim Katalogdesign

Option A: Kataloge nach Umgebung (empfohlen)

prod.bronze.weather_raw
prod.silver.weather_ts
dev.bronze.weather_raw
dev.silver.weather_ts

Pro: Klare Trennung. Ein einziger GRANT gibt vollen Dev-Zugriff. Prod ist standardmäßig abgeriegelt.
Contra: Abfragen müssen zwischen den Umgebungen den Katalognamen wechseln (durch Parametrisierung entschärft).

Option B: Kataloge nach Domäne

weather.bronze.raw_forecasts
weather.silver.asset_ts
power.gold.forecasts

Pro: Naheliegend für sehr große Organisationen mit vielen Domänen.
Contra: Die Trennung der Umgebungen erfordert Grants je Schema. Für ein Produkt mit einem Team unnötig komplex.

Empfehlung für dein Team

Nimm Kataloge nach Umgebung (prod/dev/sandbox). Deine Domäne ist in sich geschlossen (Wetter-zu-Strom ist ein Produkt), und die Trennung der Umgebungen ist der wichtigste Governance-Bedarf. Innerhalb jedes Katalogs nutzt du Schemas für die Ebenen der Medaillon-Architektur (bronze/silver/gold). Das hält die Berechtigungen einfach und macht die Überführung von Pipelines vorhersehbar.

dim_assets verwalten: das Stammdaten-Problem

Dein Anlagenregister (Parks, Turbinen, Standorte) sind Stammdaten — es ändert sich selten, hat dann aber überproportionale Auswirkungen. Unity Catalog hilft dir dabei:

-- Der Tabellenkommentar dokumentiert Verantwortung und Änderungsprozess
COMMENT ON TABLE prod.silver.dim_assets IS 
  'Asset master data. Source of truth for all geo-locations and hierarchy.
   Owner: data-engineering team.
   Update process: PR-reviewed changes via dev.silver.dim_assets → promotion job.
   Breaking changes require downstream notification.';

-- Spaltenkommentare für bessere Auffindbarkeit
COMMENT ON COLUMN prod.silver.dim_assets.parent_asset_id IS 
  'FK to parent asset (park). NULL if this row IS a park.';
COMMENT ON COLUMN prod.silver.dim_assets.hub_height_m IS 
  'Turbine hub height in metres. Used for wind speed extrapolation. NULL for parks.';

Änderungsmanagement für Stammdaten

  1. Änderungen erfolgen in dev.silver.dim_assets (Engineers haben Schreibrechte)
  2. Validierung: die Silver-Pipeline in dev laufen lassen und prüfen, ob die Joins noch greifen
  3. Überführung: ein kontrollierter Job kopiert nach prod.silver.dim_assets (per MERGE)
  4. Die Lineage zeigt, welche nachgelagerten Tabellen betroffen sind

Tags und Klassifizierung

Unity Catalog unterstützt Tags für Auffindbarkeit und Governance-Richtlinien:

-- Tabellen nach Datenklassifizierung taggen
ALTER TABLE prod.silver.weather_ts SET TAGS ('pii' = 'none', 'retention' = '2years');
ALTER TABLE prod.gold.forecast_ts SET TAGS ('pii' = 'none', 'sla' = 'hourly');
ALTER TABLE prod.silver.dim_assets SET TAGS ('data_class' = 'master_data');

-- Spalten taggen (nützlich bei sensiblen Standortdaten, falls nötig)
ALTER TABLE prod.silver.dim_assets ALTER COLUMN latitude SET TAGS ('geo' = 'true');
ALTER TABLE prod.silver.dim_assets ALTER COLUMN longitude SET TAGS ('geo' = 'true');

Verständnis prüfen

Ein Data Scientist will ein neues Feature für das ML-Modell ausprobieren. Wo sollte er Tabellen anlegen?

Richtig. Der Sandbox-Katalog existiert genau für exploratives Arbeiten. Data Scientists lesen aus prod (Silver/Gold), schreiben ihre Experimente aber in ihr eigenes Sandbox-Schema. So stören sie weder die Produktion noch die Arbeit anderer Teammitglieder.
Sandbox ist richtig. Data Scientists lesen produktive Daten aus prod Silver/Gold, schreiben experimentelle Tabellen aber in ihr eigenes Sandbox-Schema. Prod wird ausschließlich maschinell beschrieben; dev dient der Pipeline-Entwicklung, nicht Ad-hoc-Experimenten.

Das Handelssystem muss Stromprognosen lesen, sonst nichts. Was ist der minimale Satz an Berechtigungen?

Richtig. Unity Catalog verlangt USE CATALOG, um den Katalog überhaupt zu sehen, USE SCHEMA für den Zugriff auf Objekte in einem Schema und dann SELECT für den Lesezugriff. Ein SELECT auf Schemaebene deckt alle Tabellen in prod.gold ab. Das ist der minimale Pfad — kein Silver-Zugriff, keine Schreibrechte.
Die Antwort lautet USE CATALOG + USE SCHEMA + SELECT, und zwar nur auf prod.gold. Jede Ebene ist nötig, um den Namensraum zu durchlaufen. Das Handelssystem braucht keinen Silver-Zugriff — es soll nur validierte Gold-Ergebnisse sehen.

Deine Pipeline schreibt nach prod.silver.weather_ts. Wem sollte das Schreibrecht gehören?

Genau. Service Principals sind nicht-menschliche Identitäten, die an automatisierte Jobs gebunden sind. Sie liefern: einen Audit-Trail (welcher SP hat was geschrieben), das Least-Privilege-Prinzip (nur der Pipeline-SP darf in prod schreiben) und Unabhängigkeit davon, ob Teammitglieder gehen oder die Rolle wechseln.
Der Service Principal ist richtig. Automatisierte Pipelines sollten dedizierte Service Principals nutzen — keine menschlichen Konten. So läuft die Pipeline unabhängig von Personalwechseln, der Audit-Trail bleibt sauber und prod wird garantiert nie direkt von Menschen beschrieben.

Primärquelle

📖 Empfohlene Lektüre

Unity Catalog best practices — Databricks-Dokumentation. Behandelt die Organisation von Katalogen, Berechtigungsmuster und Migrationsstrategien. Sieh dir außerdem Privilege types für die vollständige Berechtigungsreferenz an.

Wie es weitergeht

Mit der Governance im Rücken behandelt die nächste Lektion Feature Engineering & den Feature Store — wie du Silver-Zeitreihen in ML-taugliche Features überführst, Feature-Tabellen verwaltest und reproduzierbares Modelltraining ermöglichst.


Fragen zur Katalogstruktur, zur Vererbung von Berechtigungen oder zur Verwaltung teamübergreifender Zugriffe? Frag deinen Lehrer.

Rechtliches: Impressum