Concetti relativi al modello di autorizzazioni del catalogo Unity

Questa pagina illustra i concetti di base del modello di autorizzazioni del catalogo Unity, tra cui il modello a oggetti, i privilegi, la proprietà e l'ereditarietà.

Per un riferimento generale di tutti i privilegi di Unity Catalog, vedere il riferimento privilegi di Unity Catalog. Per istruzioni su come concedere e revocare i privilegi, vedere Mostrare, concedere e revocare privilegi.

Oggetti sicurizzabili

In Unity Catalog i dati e i metadati si trovano in un contenitore di primo livello denominato metastore. All'interno di questo metastore, i dati vengono rappresentati come oggetti in uno spazio dei nomi a tre livelli: catalog.schema.table. Questa struttura gerarchica fornisce anche le basi per il controllo di accesso nel catalogo unity.

Gerarchia del modello a oggetti del catalogo Unity

Ogni oggetto in questa gerarchia è un oggetto a protezione diretta. Il controllo di accesso in Unity Catalog funziona concedendo privilegi, ad esempio SELECT, MODIFYo USE SCHEMA, su questi oggetti a protezione diretta. Questo modello offre un controllo granulare su chi può accedere e gestire i dati nell'organizzazione.

Per un elenco completo di oggetti a protezione diretta e dei privilegi che si applicano a ognuno, vedere Informazioni di riferimento sui privilegi del catalogo Unity.

Oggetti contenitore

Alcuni oggetti sicuri in Unity Catalog sono oggetti contenitore, vale a dire contengono oggetti figlio all'interno della gerarchia. Gli oggetti contenitore hanno un ruolo speciale nel modello di autorizzazioni perché i privilegi concessi possono influire sui figli tramite l'ereditarietà.

Di seguito sono riportati gli oggetti contenitore nel catalogo unity:

  • Cataloghi: il livello principale del namespace a tre livelli. I cataloghi contengono schemi come elementi figlio diretti.
  • Schemi: livello intermedio dello spazio dei nomi a tre livelli. Gli schemi contengono tabelle, viste, volumi e funzioni come elementi figlio diretti.

Gli oggetti contenitore presentano diverse caratteristiche importanti:

Caratteristica Descrzione
Ereditarietà dei privilegi Quando si concede un privilegio a un oggetto contenitore, tale privilegio si applica automaticamente a tutti gli oggetti figlio correnti e futuri. Ad esempio, la concessione SELECT in un catalogo consente agli utenti di leggere tutte le tabelle in tale catalogo (con privilegi di utilizzo appropriati). Vedere Ereditarietà dei privilegi.
Privilegi di utilizzo L'accesso agli oggetti figlio richiede il privilegio USE CATALOG o USE SCHEMA appropriato sugli oggetti contenitore padre. Vedere Privilegi di utilizzo.
Possibilità di gestire oggetti figlio Quando si è proprietari di un oggetto contenitore, si ottiene automaticamente la possibilità di gestire tutti gli oggetti figlio, anche se non si è proprietari direttamente di tali elementi figlio. Vedere Proprietà.
Privilegi di creazione Gli oggetti contenitore supportano privilegi che consentono agli utenti di creare oggetti figlio all'interno di essi, ad esempio CREATE SCHEMA nei cataloghi e CREATE TABLE negli schemi.

Gli oggetti non contenitori, come tabelle, viste, volumi e funzioni, non contengono oggetti figli.

Privilegi

I privilegi determinano le azioni che un utente o un gruppo può eseguire su un oggetto a protezione diretta. I privilegi comuni includono:

  • SELECT: legge i dati da tabelle o viste
  • MODIFY: scrivere dati in tabelle o viste
  • USE CATALOG: accedere a un catalogo (richiede privilegi aggiuntivi per lavorare con oggetti figlio)
  • USE SCHEMA: accesso a uno schema (richiede privilegi aggiuntivi per utilizzare oggetti figlio)
  • CREATE TABLE: creare tabelle all'interno di uno schema

Un utente o un gruppo deve essere concesso in modo esplicito un privilegio per eseguire un'azione.

Le sezioni seguenti descrivono privilegi speciali importanti in Azure Databricks. Per un riferimento completo a tutti i privilegi, vedere riferimento completo sui privilegi di Unity Catalog.

Privilegi di utilizzo

USE CATALOG e USE SCHEMA sono privilegi di utilizzo. In genere, i privilegi di utilizzo sono un prerequisito per interagire con un oggetto e i relativi oggetti figlio nella gerarchia.

Per lavorare con qualsiasi oggetto in un catalogo, serve il USE CATALOG privilegio sul catalogo, e per lavorare con qualsiasi oggetto in uno schema, serve il USE SCHEMA privilegio sullo schema. Gestire un oggetto con questo MANAGE privilegio è un'eccezione, con requisiti di privilegi d'uso ridotti. Vedi Requisiti di privilegi d'uso per MANAGE.

Ad esempio, per eseguire la maggior parte delle operazioni su tabelle, viste, volumi o funzioni, è necessario:

  1. USE CATALOG nel catalogo padre
  2. USE SCHEMA nel modello genitore
  3. Privilegio specifico per l'operazione ( ad esempio SELECT, MODIFYo EXECUTE)

Tutti e tre sono obbligatori. Avere solo il SELECT privilegio su una tabella non è sufficiente per leggerla se non si dispone di USE CATALOG o USE SCHEMA sui rispettivi oggetti padre.

I privilegi di utilizzo forniscono un importante meccanismo di controllo degli accessi per gli amministratori di livello superiore. Ad esempio, anche se un proprietario di una tabella vuole condividere la tabella con altri utenti, tali utenti non possono accedere alla tabella senza USE CATALOG e USE SCHEMA privilegi per gli oggetti padre. Poiché solo i proprietari del catalogo e dello schema o gli utenti con privilegi MANAGE possono concedere questi privilegi di utilizzo, impedisce ai proprietari di tabelle di concedere l'accesso all'esterno dei limiti approvati.

Requisiti di privilegio d'uso per MANAGE

Il MANAGE privilegio ha requisiti di privilegio d'uso ridotti. Per esercitare MANAGE, non serve un privilegio di utilizzo al livello in cui MANAGE è concesso: MANAGE su un catalogo non richiede USE CATALOG su quel catalogo, e MANAGE su uno schema non richiede USE SCHEMA su quello schema. Serve il privilegio di utilizzo solo sui livelli container strettamente sopra il livello dove si detiene MANAGE, non a quel livello o al di sotto. Su ciascuno di questi livelli più elevati, puoi soddisfare il requisito con USE CATALOG o USE SCHEMA, oppure con titolarità o MANAGE. Poiché MANAGE in un contenitore si eredita da tutti i relativi oggetti figlio, disporre di MANAGE a un livello superiore significa che non sono necessari privilegi d’uso nei livelli inferiori. Per esempio:

  • MANAGE su un catalogo non richiede privilegi di utilizzo. Puoi gestire il catalogo e qualsiasi schema, tabella o altro oggetto al suo interno senza USE CATALOG o USE SCHEMA.
  • MANAGE su uno schema richiede USE CATALOG sul catalogo padre (oppure la proprietà del catalogo o MANAGE su tale catalogo), ma non USE SCHEMA sullo schema.
  • MANAGE su un oggetto non contenitore, come una tabella, una vista, un volume o una funzione, richiede USE CATALOG sul catalogo padre e USE SCHEMA sullo schema padre (oppure i diritti di proprietà o MANAGE su uno dei due elementi padre).

Questa riduzione si applica solo alle capacità di metadati che MANAGE, e a eventuali privilegi figli di MANAGE tali come READ METADATA, offrono. I privilegi di accesso ai dati come SELECT e MODIFY richiedono ancora USE CATALOG e USE SCHEMA, anche per gli utenti con MANAGE. Per maggiori informazioni su cosa MANAGE permette, vedi Il MANAGE privilegio.

La tabella seguente illustra le operazioni comuni e i relativi privilegi necessari:

Operation Privilegi obbligatori
Leggere i dati da una tabella o una vista USE CATALOG nel catalogo, USE SCHEMA sullo schema, SELECT sulla tabella o sulla vista
Scrivere dati in una tabella USE CATALOG nel catalogo, USE SCHEMA sullo schema, MODIFY nella tabella
Creare uno schema in un catalogo USE CATALOG nel catalogo, CREATE SCHEMA nel catalogo
Creare una tabella all'interno di uno schema USE CATALOG nel catalogo, USE SCHEMA nello schema, CREATE TABLE nello schema (o nel catalogo, se concesso a livello di catalogo)
Eseguire una funzione USE CATALOG sul catalogo, USE SCHEMA sullo schema, EXECUTE sulla funzione
Leggere i file da un volume USE CATALOG nel catalogo, USE SCHEMA nel schema, READ VOLUME nel volume
Gestire un catalogo (concedere privilegi, trasferire la proprietà, abbandonare) MANAGE sul catalogo (nessun privilegio d'uso richiesti)
Gestire uno schema (concedere privilegi, trasferire la proprietà, abbandono) USE CATALOG sul catalogo, MANAGE sullo schema
Gestire una tabella, una vista, un volume o una funzione (concedere privilegi, trasferire la proprietà, abbandono) USE CATALOG sul catalogo, USE SCHEMA sullo schema, MANAGE sull'oggetto

ALL PRIVILEGES Comportamento

ALL PRIVILEGES implica tutti i privilegi applicabili per un tipo di oggetto specifico, senza che Azure Databricks conceda esplicitamente ogni singolo privilegio. Per esempio:

  • ALL PRIVILEGES in una tabella implica la possibilità di eseguire SELECT, MODIFYe APPLY TAG.
  • ALL PRIVILEGES in un volume implica la possibilità di eseguire READ VOLUME, WRITE VOLUMEe APPLY TAG.
  • ALL PRIVILEGES in uno schema implica tutti i privilegi a livello di schema.
  • ALL PRIVILEGES in un catalogo implica tutti i privilegi a livello di catalogo.

ALL PRIVILEGES non include i privilegi EXTERNAL USE SCHEMA, EXTERNAL USE LOCATION, MANAGE o READ METADATA.

Per altre informazioni su come ALL PRIVILEGES viene valutato e revocato, vedere ALL PRIVILEGES(TUTTI I PRIVILEGI).

Privilegio MANAGE

Il MANAGE privilegio consente agli utenti di gestire privilegi su, trasferire la proprietà di ed eliminare un oggetto senza essere il proprietario. Avere MANAGE è simile alla proprietà, ma esistono alcune differenze importanti. Vedere Proprietà e MANAGE privilegio.

Per esercitare MANAGE, gli utenti necessitano dei privilegi d'uso appropriati sui contenitori genitori sopra l'oggetto dove MANAGE è concesso, ma non su quell'oggetto stesso. Ad esempio, MANAGE in un catalogo non richiede alcun privilegio di utilizzo. Per dettagli completi, vedi Requisiti di privilegi di utilizzo per MANAGE.

Se MANAGE viene concesso per un oggetto contenitore, l'utente ottiene MANAGE anche su tutti gli oggetti figlio.

Per informazioni dettagliate, vedere MANAGE.

Privilegio BROWSE

BROWSE consente agli utenti di individuare gli oggetti e visualizzare i relativi metadati senza concedere l'accesso ai dati sottostanti. Gli utenti con BROWSE possono vedere che un oggetto esiste, visualizzarne il nome, la descrizione e i tag e richiedere l'accesso senza bisogno USE CATALOG di o USE SCHEMA.

BROWSE viene concesso a livello di catalogo e si applica a tutti gli oggetti all'interno del catalogo. Databricks consiglia di concedere BROWSE sui cataloghi al gruppo All account users per rendere accessibili i dati in tutta l'organizzazione.

Per informazioni dettagliate, vedere BROWSE.

Privilegi compositi e per i figli

Alcuni privilegi sono correlati da una relazione padre-figlio di tipo composito. Un privilegio composito concede un ampio insieme di capacità, e ciascuno dei suoi privilegi figli concede un sottoinsieme di tali capacità. I privilegi per i minori ti permettono di delegare parte dell'accesso di un privilegio composito senza concederne il pieno privilegio.

I privilegi compositi e per i minori vengono concessi e revocati indipendentemente. Concedere un privilegio composito non concede privilegi ai figli, e revocare un privilegio composito non revoca alcun privilegio per minori che sia stato concesso esplicitamente.

Di seguito sono riportati esempi di privilegi compositi e di minori:

  • MANAGE è un privilegio composito. READ METADATA è un figlio di MANAGE che concede visibilità in sola lettura sui metadati di un oggetto, senza le capacità di modifica e gestione che MANAGE include. Vedi READ METADATA.
  • MODIFY è un privilegio composito, e INSERT, UPDATE, e DELETE (Beta) sono i suoi figli. Ognuno concede un sottoinsieme dell'accesso di scrittura che MODIFY fornisce. Vedi Privilegi DML granulari.

Proprietà

Ogni oggetto a protezione diretta in Unity Catalog ha un proprietario. Il proprietario può essere un utente, un'entità servizio o un gruppo. L'entità che crea un oggetto diventa il proprietario iniziale.

La proprietà ha una denotazione speciale nel catalogo unity. I proprietari di oggetti possono eseguire automaticamente tutte le funzionalità dell'oggetto di cui sono proprietari. Tuttavia, Azure Databricks non concede in modo esplicito il ALL PRIVILEGES privilegio al proprietario. Ciò significa che non vedrai `` restituito quando elenchi le autorizzazioni utilizzando l'API Databricks o con un comando ``.

La proprietà non si eredita verso il basso nel Catalogo Unity. Tuttavia, i proprietari di oggetti hanno la capacità di gestire automaticamente tutti gli oggetti figlio. Ad esempio, se si è proprietari di un catalogo, non si possiedono automaticamente gli schemi figlio all'interno del catalogo, ma è possibile gestire tutti gli schemi figlio. Analogamente ai proprietari che hanno tutte le funzionalità dell'oggetto senza esplicitamente avere ALL PRIVILEGES, anche Azure Databricks non concede esplicitamente il privilegio MANAGE in questo caso.

I proprietari di oggetti possono eseguire altre operazioni importanti sull'oggetto, tra cui la concessione e la revoca delle autorizzazioni, il trasferimento della proprietà e l'eliminazione dell'oggetto.

Annotazioni

Per evitare l'esfiltrazione accidentale dei dati, i proprietari dello schema non hanno il EXTERNAL USE SCHEMA privilegio per impostazione predefinita e i proprietari della posizione esterna non dispongono del EXTERNAL USE LOCATION privilegio per impostazione predefinita. Consulta: Abilitare l'accesso ai dati esterni a Unity Catalog.

Per riepilogare, il proprietario di un oggetto può eseguire le operazioni seguenti:

Capability Descrzione
Tutte le funzionalità degli oggetti I proprietari hanno automaticamente tutte le funzionalità dell'oggetto di cui sono proprietari. Ciò equivale a avere ALL PRIVILEGES, ma Azure Databricks non assegna ALL PRIVILEGES in modo esplicito ai proprietari.
Gestire gli oggetti figlio I proprietari ottengono automaticamente la possibilità di gestire tutti gli oggetti figlio. Ciò equivale a avere il MANAGE privilegio per tutti gli oggetti figlio, ma Azure Databricks non assegna in modo esplicito il MANAGE privilegio ai proprietari.
Concedere e revocare le autorizzazioni I proprietari possono concedere e revocare privilegi per l'oggetto a utenti e gruppi
Trasferisci proprietà I proprietari possono trasferire la proprietà dell'oggetto a un'altra entità
Rimuovere oggetti I proprietari possono eliminare gli oggetti di cui sono proprietari

Per informazioni su come visualizzare e trasferire la proprietà, vedere Gestire la proprietà degli oggetti.

Proprietà versus il privilegio di MANAGE

Il MANAGE privilegio concede a un utente la possibilità di concedere e revocare privilegi per l'oggetto. Non concede all'utente tutti i privilegi per l'oggetto. Tuttavia, gli utenti con MANAGE possono concedere a se stessi in modo esplicito privilegi di accesso ai dati, come SELECT ad esempio.

Al contrario, i proprietari di oggetti dispongono di tutte le funzionalità per l'oggetto per impostazione predefinita. Poiché la proprietà non eredita verso il basso agli oggetti figlio, i proprietari richiedono comunque concessioni esplicite per tali oggetti figlio.

I requisiti relativi ai privilegi di utilizzo sono gli stessi per entrambi: i proprietari e gli utenti con MANAGE devono disporre degli appropriati privilegi di utilizzo sui contenitori padre dell'oggetto, ma non sull'oggetto stesso. Vedi Requisiti di privilegi d'uso per MANAGE.

La tabella seguente riepiloga le differenze principali tra la proprietà e il MANAGE privilegio:

Capability Proprietario MANAGE privilegio
Tutte le funzionalità dell'oggetto Sì, tutte le funzionalità sono implicite. Ciò è diverso dall'avere esplicitamente ALL PRIVILEGES. Vedere Proprietà. No, i privilegi devono essere concessi separatamente. Gli utenti con MANAGE possono concedere a se stessi questi privilegi.
Concedere e revocare privilegi per l'oggetto
Trasferisci proprietà
Eliminare l'oggetto
Possibilità di gestire oggetti figlio Sì, le funzionalità di gestione degli oggetti figlio sono implicite. Vedere Proprietà. Sì, il MANAGE privilegio è esplicitamente concesso agli oggetti figlio.
Richiede privilegi di utilizzo NO Richiede i privilegi d'uso appropriati sui contenitori genitori sopra l'oggetto dove MANAGE è concesso, ma non sull'oggetto stesso. MANAGE in un catalogo non richiede privilegi di utilizzo.
Numero di principali Solo un'entità (utente, entità servizio o gruppo) Può essere concesso a più entità

Per evitare l'escalation accidentale dei privilegi, il ALL PRIVILEGES privilegio non include il MANAGE privilegio.

Ereditarietà dei privilegi

Annotazioni

Se hai creato il metastore di Unity Catalog durante l'anteprima pubblica (prima del 25 agosto 2022), potresti essere su un modello di privilegio precedente che non supporta il modello di ereditarietà corrente. È possibile eseguire l'aggiornamento al modello di privilegio versione 1.0 per ottenere l'ereditarietà dei privilegi. Si veda Eseguire l'aggiornamento all'ereditarietà dei privilegi.

L'ereditarietà dei privilegi è una funzionalità chiave del modello di autorizzazioni del catalogo Unity. Quando si concede un privilegio a un oggetto padre, tale privilegio viene applicato automaticamente a tutti gli oggetti figlio correnti e futuri. Ciò semplifica la gestione degli accessi riducendo il numero di concessioni individuali che è necessario effettuare.

I privilegi ereditano verso il basso attraverso la gerarchia del modello a oggetti:

  • Un privilegio concesso in un catalogo si applica a tutti gli schemi nel catalogo e a tutte le tabelle, viste, volumi e funzioni in tali schemi
  • Un privilegio concesso per uno schema si applica a tutte le tabelle, le viste, i volumi e le funzioni in tale schema

Ad esempio, se si concede a un utente il SELECT privilegio in un catalogo, tale utente può leggere tutte le tabelle e le viste in tale catalogo (con i privilegi appropriati USE CATALOG e USE SCHEMA di utilizzo).

Important

I privilegi concessi in un metastore non vengono ereditati dagli oggetti figli. Il livello di metastore concede il controllo delle operazioni con ambito metastore come CREATE CATALOG e CREATE EXTERNAL LOCATION, non l'accesso ai dati all'interno del metastore.

Il READ METADATA privilegio è un'eccezione. Quando viene concesso su un metastore, READ METADATA eredita fino a tutti gli oggetti presenti nel metastore, e non sono necessari privilegi d'uso (USE CATALOG o USE SCHEMA) per esercitarlo. Vedi READ METADATA.

La proprietà non si eredita verso il basso nel Catalogo Unity. Il proprietario di un oggetto concede automaticamente tutti i privilegi solo a tale oggetto. Non si assume automaticamente la tua proprietà sugli oggetti figlio creati sotto il tuo oggetto. Tuttavia, si ottiene automaticamente il MANAGE privilegio per tutti gli oggetti figlio nuovi ed esistenti.

Esempi di ereditarietà

Si supponga di concedere SELECT, USE CATALOGe USE SCHEMA a livello di catalogo al finance_team gruppo:

GRANT USE CATALOG, USE SCHEMA, SELECT ON CATALOG sales TO finance_team;

Questa concessione consente al finance_team gruppo di:

  • Accedere al sales catalogo
  • Accedere a tutti gli schemi nel catalogo
  • Legge i dati da tutte le tabelle e le viste correnti e future del catalogo

Si supponga di concedere CREATE TABLE, USE CATALOGe USE SCHEMA a livello di catalogo al data_engineers gruppo:

GRANT USE CATALOG, USE SCHEMA, CREATE TABLE ON CATALOG analytics TO data_engineers;

Questa concessione consente al data_engineers gruppo di:

  • Accedere al analytics catalogo
  • Accedere a tutti gli schemi nel catalogo
  • Creare tabelle in qualsiasi schema corrente o futuro nel catalogo

Per istruzioni su come concedere e revocare privilegi, vedere Mostrare, concedere e revocare privilegi.