Automatisieren Sie Azure Databricks Unity Catalog-Berechtigungen auf Tabellenebene

Haftungsausschluss: Alle Ansichten und Meinungen, die im Blog geäußert werden, gehören ausschließlich dem Autor und nicht unbedingt dem Arbeitgeber des Autors oder einer anderen Gruppe oder Person. Dieser Artikel ist allein dem Autor und nicht unbedingt dem Arbeitgeber des Autors oder einer anderen Gruppe oder Person zuzuordnen. Dieser Artikel dient nicht der Werbung für eine Cloud-/Daten-Management-Plattform. Alle Bilder und Code-Schnipsel sind öffentlich auf der Azure-/Databricks-Website verfügbar.

In meinen anderen DZone-Artikeln habe ich besprochen, was Databricks Unity Catalog ist, wie das Berechtigungsmodell in Unity Catalog funktioniert, auf Schema-Ebene und wie Skripte zur Automatisierung der Berechtigungsverwaltung auf Katalog- und Schemebene erstellt werden können.

In diesem Artikel möchte ich das Skript bereitstellen, das die Automatisierung der Berechtigungsverwaltung auf der Unity Catalog-Tabellenebene ermöglicht. 

Berechtigungen auf der Unity Catalog-Tabellenebene

Unity Catalog privilege model

Bei Unity Catalog (Databricks) ist es notwendig, Berechtigungen auf der Tabellenebene anzuwenden, wenn Sie den Zugriff auf bestimmte Tabellen oder Ansichten kontrollieren möchten, anstatt Berechtigungen auf alle Objekte innerhalb eines Schemas anzuwenden. Tabellenebene-Berechtigungen sind in folgenden Szenarien nützlich:

1. Granulare Zugriffskontrolle

Wenn Sie den Zugriff auf spezifische Tabellen oder Ansichten gewähren oder einschränken müssen, ohne das gesamte Schema zu beeinflussen.

Dies ist besonders wichtig, wenn ein Schema sensible Daten enthält und Sie den Zugriff auf einige Tabellen ermöglichen möchten, während der Zugriff auf andere eingeschränkt wird.

2. Sensible Daten schützen

Wenn bestimmte Tabellen innerhalb eines Schemas vertrauliche oder eingeschränkte Daten enthalten (z. B. personenbezogene Informationen, Finanzdaten), können Sie Tabellenberechtigungen auf Tabellenebene anwenden, um sicherzustellen, dass nur autorisierte Benutzer diese Tabellen anzeigen oder abfragen können.

Zum Beispiel könnten Sie den Zugriff auf einige Zusammenfassungs- oder aggregierte Datentabellen ermöglichen, den Zugriff jedoch auf Rohdaten-Tabellen mit sensiblen Informationen einschränken.

3. Zugriff auf spezifische Teams/Benutzer delegieren, wenn das Schema Tabellen für mehrere Teams enthält

Wenn verschiedene Benutzer oder Teams Zugriff auf verschiedene Tabellen innerhalb des gleichen Schemas benötigen. Zum Beispiel benötigt das Verkaufsteam möglicherweise Zugriff auf kundenbezogene Tabellen, während das Finanzteam Zugriff auf Umsatztabellen benötigt.

Die Anwendung von Berechtigungen auf Tabellenebene stellt sicher, dass jedes Team nur auf die für ihre Arbeit relevanten Tabellen zugreifen kann.

4. Einhaltung der Datenverwaltung

Bei der Durchsetzung strenger Richtlinien zur Datenverwaltung müssen Sie möglicherweise den Zugriff auf einer granulareren Ebene kontrollieren (bis hin zu einzelnen Tabellen). Tabellenberechtigungen helfen dabei, die Einhaltung zu gewährleisten, indem der Zugriff nur auf die Daten gewährt wird, mit denen ein Benutzer oder eine Rolle arbeiten darf.

5. Umgang mit gemischten Zugriffsanforderungen innerhalb eines Schemas

In Fällen, in denen ein Schema Tabellen mit unterschiedlichen Sensitivitäts- oder Vertraulichkeitsstufen enthält, kann die Anwendung von Berechtigungen auf Schemaebene zu allgemein sein. Tabellenebene-Berechtigungen ermöglichen es Ihnen, den Zugriff für jede Tabelle individuell basierend auf spezifischen Bedürfnissen zu verwalten.

Berechtigungen, die auf Tabellenebene angewendet werden können 

  • SELECT: Gewährt Lesezugriff auf die Tabelle, sodass Benutzer Abfragen durchführen können.
  • MODIFY: Gibt die Möglichkeit, Daten zu einem Objekt hinzuzufügen, zu löschen und zu ändern.
  • APPLY TAG: Gibt die Möglichkeit, Tags zu einem Objekt hinzuzufügen.
  • ALL PRIVILEGES: Gewährt alle Berechtigungen.

Automatisierungsskript

Voraussetzungen

  • Unity Catalog ist bereits eingerichtet.
  • Das/Die Hauptobjekt(e) ist/sind mit dem Databricks-Arbeitsbereich verbunden.
  • Der Benutzer, der das Berechtigungsskript ausführt, hat die erforderlichen Berechtigungen für die Tabelle(n), das Schema und das Katalog.

Schritt 1: Erstellen Sie ein Notizbuch und deklarieren Sie die Variablen 

Erstellen Sie ein Notizbuch im Databricks-Arbeitsbereich. Um ein Notizbuch in Ihrem Arbeitsbereich zu erstellen, klicken Sie auf das „+“ Neu in der Seitenleiste und wählen Sie dann Notizbuch aus.

Ein leeres Notizbuch öffnet sich im Arbeitsbereich. Stellen Sie sicher, dass Python als Notizbuchsprache ausgewählt ist.

Kopieren Sie den untenstehenden Code-Schnipsel in die Notizbuchzelle und führen Sie die Zelle aus.

Python

 

Schritt 2: Setzen Sie den Katalog und das Schema

Kopieren, einfügen und führen Sie den untenstehenden Code-Block in einer neuen oder bestehenden Zelle aus.

Python

 

Schritt 3: Durchlaufen Sie die Prinzipale und Berechtigungen und wenden Sie die Gewährung im Katalog, Schema und Tabellen an

Kopieren, einfügen und führen Sie den untenstehenden Code-Block in einer neuen oder bestehenden Zelle aus, und führen Sie dann die Zelle aus, um die Berechtigungen anzuwenden.

Python

 

Validierung

Sie können die Berechtigungen validieren, indem Sie das Databricks UI öffnen und zum „Katalog“ im Daten-Explorer navigieren. Sobald der Katalog im Datenabschnitt angezeigt wird, klicken Sie auf den Katalog, erweitern Sie dann das Schema und wählen Sie die Tabelle innerhalb des Schemas aus, auf die Sie die Berechtigungen angewendet haben, und gehen Sie zum Tab „Berechtigungen“. Sie können nun alle Berechtigungen sehen, die auf die Tabelle angewendet wurden. Unten sehen Sie einen Screenshot der Berechtigungen, die auf die out-of-box-Katalogtabelle im Hauptkatalog und im Schema information_schema angewendet wurden.

Sie können auch das folgende SQL-Skript in einem Notizbuch ausführen, um alle Berechtigungen für eine Tabelle anzuzeigen, als Teil Ihrer Validierung.

SQL

 

Abschluss

Die Automatisierung des Berechtigungsmanagements auf Databricks Unity Catalog-Ebene hilft sicherzustellen, dass Berechtigungen auf der niedrigsten Ebene im Unity Catalog konsistent und effizient angewendet werden. Der bereitgestellte Code zeigt einen praktischen Weg auf, um mehrere Tabellenberechtigungen für mehrere Prinzipale und Tabellen in einem einzigen Katalog und Schema zuzuweisen. In einem Katalog, in dem Hunderte von Tabellen vorhanden sind und unterschiedliche Berechtigungen für verschiedene Prinzipale bereitgestellt werden müssen, reduziert die oben genannte Automatisierung signifikant manuelle Fehler und Aufwand.

Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-table-level