Avviso legale: Tutti i punti di vista e le opinioni espresse nel blog appartengono esclusivamente all’autore e non necessariamente al datore di lavoro dell’autore o a qualsiasi altro gruppo o individuo. Questo articolo non è una promozione per una piattaforma di gestione di cloud/dati. Tutte le immagini e gli snippet di codice sono pubblicamente disponibili sul sito di Azure/Databricks.
In questo articolo fornirò lo script per automatizzare la gestione delle autorizzazioni a livello di schema del catalogo Unity.
Privilegi a livello di schema del catalogo Unity
Il modello di privilegi gerarchici in Unity Catalog consente agli utenti di applicare privilegi a qualsiasi livello della gerarchia e gli oggetti figlio ereditano automaticamente le stesse autorizzazioni. Pertanto, se l’autorizzazione viene applicata a livello di schema, verrà automaticamente applicata a tutte le tabelle, le viste, i volumi e le funzioni all’interno dello schema.
In Unity Catalog (Databricks), le autorizzazioni a livello di schema vengono applicate quando si desidera controllare l’accesso a un insieme di tabelle e viste all’interno di uno schema specifico. Le autorizzazioni a livello di schema vengono tipicamente applicate nei seguenti scenari:
- Concessione di accesso a gruppi di oggetti: Se si desidera gestire le autorizzazioni per più tabelle e viste collettivamente, è efficiente applicare le autorizzazioni a livello di schema anziché singolarmente per ogni tabella o vista. Ciò consente di controllare l’accesso a tutti gli oggetti all’interno dello schema contemporaneamente.
- Controllo organizzativo: Quando diversi team o dipartimenti all’interno di un’organizzazione necessitano di accesso a specifici set di dati, che sono memorizzati sotto schemi separati. Applicare autorizzazioni a livello di schema consente di concedere o limitare l’accesso a tutti gli oggetti rilevanti per un team all’interno di tale schema.
- Gestione coerente delle autorizzazioni: Per ambienti in cui nuovi oggetti (tabelle/viste) vengono frequentemente aggiunti a uno schema, impostare le autorizzazioni a livello di schema garantisce che i nuovi oggetti ereditino automaticamente le autorizzazioni, riducendo la necessità di aggiornamenti manuali delle autorizzazioni.
- Mantenimento della sicurezza dei dati: Quando si desidera imporre controlli di accesso su una particolare categoria di dataset (ad esempio, dati finanziari, dati HR) che è organizzata logicamente sotto uno schema. Impostando le autorizzazioni a livello di schema, si mantiene la sicurezza dei dati semplificando l’amministrazione.
Script di automazione
Prerequisiti
- Unity Catalog è già configurato.
- Il/i principale/i è/sono associato/i allo spazio di lavoro Databricks.
- L’utente che esegue lo script di autorizzazioni ha le autorizzazioni appropriate sullo schema e sul catalogo.
Passaggio 1: Creare un Notebook e dichiarare le Variabili
Crea un notebook nello spazio di lavoro Databricks. Per creare un notebook nel tuo spazio di lavoro, fai clic su “+” Nuovo nella barra laterale, quindi scegli Notebook.
Copia e incolla il frammento di codice sottostante nella cella del notebook e esegui la cella.
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
principals_arr = '' # Specify the Comma(,) seperated values for principals in the blank text section (e.g. groups, username)
principals = principals_arr.split(',')
privileges_arr = 'SELECT,APPLY TAG' # Specify the Comma(,) seperated values for priviledges in the blank text section (e.g. SELECT,APPLY TAG)
privileges = privileges_arr.split(',')
Passaggio 2: Imposta il Catalogo e lo Schema
Copia, incolla ed esegui il blocco di codice qui sotto in una cella nuova o esistente e poi esegui la cella.
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
Passaggio 3: Scorrere i Principali e i Privilegi e Applicare il Permesso al Catalogo e allo Schema
Copia, incolla ed esegui il blocco di codice qui sotto in una cella nuova o esistente, quindi esegui la cella per applicare i permessi.
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Apply use catalog permission at Catalog level
spark.sql(query)
query = f"USE SCHEMA `{schema}`" # Sets the schema
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Apply use schema permission at Schema level
spark.sql(query)
for privilege in privileges:
query = f"GRANT `{privilege}` ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
Convalida
Puoi convalidare i privilegi aprendo l’interfaccia utente di Databricks e navigando su Catalogo nell’Esplora dati. Una volta che il catalogo appare nella sezione Dati, fai clic sul catalogo, quindi seleziona lo schema dove hai applicato i permessi e vai alla scheda Permessi. Ora puoi vedere tutti i privilegi applicati allo schema.
Puoi anche eseguire lo script SQL qui sotto in un notebook per visualizzare tutti i permessi per uno schema come parte della convalida.
SHOW GRANTS ON SCHEMA my_schema;
Conclusione
L’automatizzazione della gestione dei privilegi nel Catalogo di Unity Databricks a livello di schema aiuta a garantire un controllo degli accessi coerente ed efficiente per il gruppo di oggetti (ad esempio tabelle, viste, funzioni e volumi) nel catalogo. Il codice fornito dimostra un modo pratico per assegnare privilegi a livello di schema, semplificando la gestione dei permessi tra i principali (ad esempio utenti e gruppi). Questo approccio riduce i compiti di gestione e il rischio di errori manuali raggruppando tabelle e viste all’interno di uno schema e applicando permessi consistenti per l’intero schema.
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level