Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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:
-
USE CATALOGnel catalogo padre -
USE SCHEMAnel modello genitore - Privilegio specifico per l'operazione ( ad esempio
SELECT,MODIFYoEXECUTE)
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:
-
MANAGEsu un catalogo non richiede privilegi di utilizzo. Puoi gestire il catalogo e qualsiasi schema, tabella o altro oggetto al suo interno senzaUSE CATALOGoUSE SCHEMA. -
MANAGEsu uno schema richiedeUSE CATALOGsul catalogo padre (oppure la proprietà del catalogo oMANAGEsu tale catalogo), ma nonUSE SCHEMAsullo schema. -
MANAGEsu un oggetto non contenitore, come una tabella, una vista, un volume o una funzione, richiedeUSE CATALOGsul catalogo padre eUSE SCHEMAsullo schema padre (oppure i diritti di proprietà oMANAGEsu 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 PRIVILEGESin una tabella implica la possibilità di eseguireSELECT,MODIFYeAPPLY TAG. -
ALL PRIVILEGESin un volume implica la possibilità di eseguireREAD VOLUME,WRITE VOLUMEeAPPLY TAG. -
ALL PRIVILEGESin uno schema implica tutti i privilegi a livello di schema. -
ALL PRIVILEGESin 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 diMANAGEche concede visibilità in sola lettura sui metadati di un oggetto, senza le capacità di modifica e gestione cheMANAGEinclude. Vedi READ METADATA. -
MODIFYè un privilegio composito, eINSERT,UPDATE, eDELETE(Beta) sono i suoi figli. Ognuno concede un sottoinsieme dell'accesso di scrittura cheMODIFYfornisce. 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 `
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 | Sì | Sì |
| Trasferisci proprietà | Sì | Sì |
| Eliminare l'oggetto | Sì | Sì |
| 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
salescatalogo - 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
analyticscatalogo - 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.