Automatiseer Azure Databricks Unity Catalogusmachtigingen op tabelniveau

Disclaimer: Alle standpunten en meningen die in de blog worden geuit, behoren uitsluitend toe aan de auteur en niet noodzakelijkerwijs aan de werkgever van de auteur of aan enige andere groep of individu. Dit artikel is niet een promotie voor een cloud/data management platform. Alle afbeeldingen en codefragmenten zijn openbaar beschikbaar op de Azure/Databricks-website.

In mijn andere DZone-artikelen heb ik besproken wat Databricks Unity Catalog is, hoe het privilege model werkt in Unity Catalog, op schemaniveau, en script om toestemmingsbeheer op zowel catalogus- als schemaniveau te automatiseren.

In dit artikel is het mijn bedoeling om het script te verstrekken dat het beheer van toestemmingen op Unity Catalog-tabelniveau automatiseert. 

Rechten op Unity Catalog Tabelniveau

Unity Catalog privilege model

Bij Unity Catalog (Databricks) is het toepassen van machtigingen op het tabelniveau noodzakelijk wanneer u de toegang tot specifieke tabellen of weergaven wilt regelen, in plaats van machtigingen toe te passen op alle objecten binnen een schema. Machtigingen op tabelniveau zijn nuttig in de volgende scenario’s:

1. Granulaire Toegangscontrole

Wanneer u toegang tot specifieke tabellen of weergaven moet verlenen of beperken zonder de hele schema te beïnvloeden.

Dit is vooral belangrijk wanneer een schema gevoelige gegevens bevat, en u toegang tot sommige tabellen wilt toestaan terwijl u de toegang tot andere beperkt.

2. Beveiligen van Gevoelige Gegevens

Als bepaalde tabellen binnen een schema vertrouwelijke of beperkte gegevens bevatten (bijv. persoonlijk identificeerbare informatie, financiële gegevens), kunt u op tabelniveau machtigingen toepassen om ervoor te zorgen dat alleen geautoriseerde gebruikers deze tabellen kunnen bekijken of bevragen.

Bijvoorbeeld, u kunt toegang verlenen tot enkele samenvattende of geaggregeerde datatabellen, maar de toegang beperken tot ruwe, gedetailleerde tabellen die gevoelige informatie bevatten.

3. Toegang Delegeren aan Specifieke Teams/Gebruikers Indien het Schema Tabellen Bevat die Bedoeld zijn voor Meerdere Teams

Wanneer verschillende gebruikers of teams toegang nodig hebben tot verschillende tabellen binnen hetzelfde schema. Bijvoorbeeld, het verkoopteam heeft mogelijk toegang nodig tot klantgerelateerde tabellen, terwijl het financiële team toegang nodig heeft tot omzettabellen.

Het toepassen van machtigingen op tabelniveau zorgt ervoor dat elk team alleen toegang heeft tot de tabellen die relevant zijn voor hun werk.

4. Naleving van Gegevensbeheer

Bij het handhaven van strikte gegevensbeheerbeleid, moet u mogelijk de toegang op een meer gedetailleerd niveau controleren (tot op individuele tabellen). Machtigingen op tabelniveau helpen bij het waarborgen van naleving door alleen toegang te verlenen tot de gegevens waarmee een gebruiker of rol gemachtigd is om mee te werken.

5. Omgaan met Gemengde Toegangseisen Binnen een Schema

In gevallen waarin een schema tabellen bevat met verschillende niveaus van gevoeligheid of vertrouwelijkheid, kan het toepassen van machtigingen op het schema niveau te breed zijn. Machtigingen op het niveau van de tabel stellen u in staat om de toegang voor elke tabel afzonderlijk te beheren op basis van specifieke behoeften.

Machtigingen die kunnen worden toegepast op het tabelniveau 

  • SELECT: Verleent leestoegang tot de tabel, waardoor gebruikers deze kunnen bevragen.
  • MODIFY: Geeft de mogelijkheid om gegevens toe te voegen, te verwijderen en te wijzigen aan of van een object.
  • TOEPASSEN TAG: Geeft de mogelijkheid om tags toe te passen op een object.
  • ALLE RECHTEN: Geeft alle rechten.

Automatiseringsscript

Vereisten

  • Unity Catalog is al ingesteld.
  • Principaal/-alen is/zijn geassocieerd met de Databricks-werkruimte.
  • De gebruiker die het machtigingsscript uitvoert, heeft de juiste machtigingen op de tabel(s), schema en catalogus.

Stap 1: Maak een Notebook en Declareer de Variabelen 

Maak een notebook in de Databricks-werkruimte. Om een notebook in uw werkruimte te maken, klikt u op het “+” Nieuw in de zijbalk, en kies dan Notebook

Er opent een leeg notebook in de werkruimte. Zorg ervoor dat Python is geselecteerd als de notitieboektaal.

Kopieer en plak de onderstaande codefragment in de notitieblokcel en voer de cel uit.

Python

 

Stap 2: Stel de Catalogus en het Schema in

Kopieer, plak en voer het onderstaande codeblok uit in een nieuwe of bestaande cel en voer de cel uit.

Python

 

Stap 3: Loop door de Principals en Privileges en Pas Grant toe op de Catalogus, het Schema en de Tabellen

Kopieer, plak en voer het onderstaande codeblok uit in een nieuwe of bestaande cel, en voer vervolgens de cel uit om de machtigingen toe te passen.

Python

 

Validatie

U kunt de machtigingen valideren door de Databricks UI te openen en te navigeren naar “Catalogus” in de Data Explorer. Zodra de catalogus verschijnt in het gedeelte ‘Data’, klikt u op de catalogus, breidt u het schema uit en selecteert u de tabel binnen het schema waarop u de machtigingen heeft toegepast, en gaat u naar het tabblad “machtigingen”. U kunt nu alle toegepaste privileges op de tabel zien. Hieronder staat een schermafbeelding van de machtigingen die zijn toegepast op de out-of-box catalogustabel binnen de hoofdcatalogus en het information_schema schema.

U kunt ook het onderstaande SQL-script uitvoeren in een notitieblok om alle machtigingen voor een tabel weer te gegeven als onderdeel van uw validatie.

SQL

 

Conclusie

Het automatiseren van privilegebeheer in Databricks Unity Catalogus op het tabelniveau helpt ervoor te zorgen dat er een consistente en efficiënte benadering is voor het toepassen van machtigingen op het laagste niveau in de Unity Catalogus. De verstrekte code toont een praktische manier om meerdere tabelniveau-privileges toe te wijzen voor meerdere principes en tabellen in een enkele catalogus en schema. In een catalogus waar honderden tabellen aanwezig zijn en verschillende machtigingen moeten worden verleend aan verschillende principes, vermindert de bovenstaande automatisering aanzienlijk handmatige fouten en inspanningen.

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