Gestire i privilegi nel Catalogo Unity
Questo articolo illustra come controllare l'accesso ai dati e ad altri oggetti in Unity Catalog. Per informazioni su come questo modello differisce dal controllo di accesso nel metastore Hive, vedere Usare il catalogo unity e il metastore Hive legacy.
Chi può gestire i privilegi?
Inizialmente, gli utenti non hanno accesso ai dati in un metastore. Gli amministratori dell'account Azure Databricks, gli amministratori dell'area di lavoro e i metastore dispongono dei privilegi predefiniti per la gestione di Unity Catalog. Vedere Privilegi di amministratore nel catalogo unity.
Tutti gli oggetti a protezione diretta in Unity Catalog hanno un proprietario. I proprietari di oggetti dispongono di tutti i privilegi per tale oggetto, inclusa la possibilità di concedere privilegi ad altre entità. I proprietari possono concedere ad altri utenti il privilegio MANAGE
per l'oggetto, che consente agli utenti di gestire i privilegi per l'oggetto. Si veda Gestire la proprietà dell'oggetto catalogo Unity.
I privilegi possono essere concessi da un amministratore del metastore, un utente con il privilegio MANAGE
per l'oggetto, il proprietario di un oggetto o il proprietario del catalogo o dello schema che contiene l'oggetto. Gli amministratori dell'account possono anche concedere privilegi direttamente in un metastore.
Privilegi del catalogo dell'area di lavoro
Se l'area di lavoro è stata abilitata automaticamente per il catalogo Unity, l'area di lavoro è collegata a un metastore per impostazione predefinita e viene creato un catalogo dell'area di lavoro nel metastore. Gli amministratori dell'area di lavoro sono i proprietari predefiniti del catalogo delle aree di lavoro. I proprietari possono gestire i privilegi nel catalogo dell'area di lavoro e in tutti gli oggetti figlio.
Tutti gli utenti dell'area di lavoro ricevono il privilegio USE CATALOG
sul catalogo dell'area di lavoro. Gli utenti dell'area di lavoro ricevono anche i privilegi USE SCHEMA
, CREATE TABLE
, CREATE VOLUME
, CREATE MODEL
, CREATE FUNCTION
e CREATE MATERIALIZED VIEW
sullo schema default
nel catalogo.
Per altre informazioni, consultare Abilitazione automatica del catalogo Unity.
Modello di ereditarietà
Gli oggetti a protezione diretta nel catalogo unity sono gerarchici e i privilegi vengono ereditati verso il basso. L'oggetto di livello più alto da cui vengono ereditati i privilegi è il catalogo. Ciò significa che la concessione di un privilegio per un catalogo o uno schema concede automaticamente il privilegio a tutti gli oggetti correnti e futuri all'interno del catalogo o dello schema. Ad esempio, se si assegna a un utente il SELECT
privilegio su un catalogo, tale utente sarà in grado di selezionare (leggere) tutte le tabelle e le viste in tale catalogo. I privilegi concessi in un metastore del Catalogo Unity non vengono ereditati.
Ai proprietari di un oggetto vengono concessi automaticamente tutti i privilegi per tale oggetto. Inoltre, i proprietari di oggetti possono concedere privilegi all'oggetto stesso e a tutti i relativi oggetti figlio. Ciò significa che i proprietari di uno schema non dispongono automaticamente di tutti i privilegi per le tabelle nello schema, ma possono concedersi privilegi sulle tabelle nello schema.
Nota
Se è stato creato il metastore del catalogo Unity durante l'anteprima pubblica (prima del 25 agosto 2022), si potrebbe essere in 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.
Mostrare, concedere e revocare privilegi
È possibile gestire i privilegi per gli oggetti metastore usando i comandi SQL, l'interfaccia della riga di comando di Databricks, il provider Databricks Terraform o Esplora cataloghi.
Nei comandi SQL seguenti sostituire questi valori segnaposto:
-
<privilege-type>
è un tipo di privilegio catalogo Unity. Vedere Tipi di privilegi. -
<securable-type>
: tipo di oggetto a protezione diretta, ad esempioCATALOG
oTABLE
. Vedere Oggetti a protezione diretta -
<securable-name>
: nome dell'entità a protezione diretta. Se il tipo a protezione diretta èMETASTORE
, non specificare il nome dell'entità a protezione diretta. Si presuppone che sia il metastore collegato all'area di lavoro. -
<principal>
è un utente, un'entità servizio (rappresentata dal relativo valore applicationId) o un gruppo. È necessario racchiudere gli utenti, i mandanti del servizio e i nomi dei gruppi che includono caratteri speciali tra apici inversi (` `
). Si veda Entità
Mostra le concessioni per gli oggetti in un metastore del catalogo Unity
Nota
Attualmente, gli utenti con privilegi relativi a MANAGE
per un oggetto non possono visualizzare tutte le autorizzazioni per tale oggetto nel INFORMATION_SCHEMA
. Al contrario, il INFORMATION_SCHEMA
mostra solo le concessioni personalizzate per l'oggetto . Questo comportamento verrà corretto in futuro.
Gli utenti con privilegi MANAGE
possono visualizzare tutte le concessioni in un oggetto usando comandi SQL o Esplora cataloghi. Consultare la gestione dei privilegi di Unity Catalog.
Autorizzazioni necessarie:
- Gli amministratori metastore, gli utenti con il privilegio
MANAGE
sull'oggetto, il proprietario dell'oggetto o il proprietario del catalogo o dello schema che contiene l'oggetto possono visualizzare tutte le concessioni sull'oggetto. - Se non si dispone delle autorizzazioni precedenti, è possibile visualizzare solo le proprie concessioni per l'oggetto .
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Selezionare l'oggetto, ad esempio un catalogo, uno schema, una tabella o una vista.
- Passare alla scheda Autorizzazioni .
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL. È possibile visualizzare le concessioni per un'entità specifica oppure visualizzare tutte le concessioni in un oggetto a protezione diretta.
SHOW GRANTS [principal] ON <securable-type> <securable-name>
Ad esempio, il comando seguente mostra tutte le concessioni in uno schema denominato default nel catalogo padre denominato main:
SHOW GRANTS ON SCHEMA main.default;
Il comando restituisce:
principal actionType objectType objectKey
------------- ------------- ---------- ------------
finance-team CREATE TABLE SCHEMA main.default
finance-team USE SCHEMA SCHEMA main.default
Visualizzare le concessioni per gli oggetti in un metastore del catalogo Unity
Autorizzazioni necessarie: è sempre possibile visualizzare le proprie concessioni in un oggetto .
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Selezionare l'oggetto, ad esempio un catalogo, uno schema, una tabella o una vista.
- Passare alla scheda Autorizzazioni . Se non si è un proprietario dell'oggetto o un amministratore del metastore, è possibile visualizzare solo le proprie concessioni sull'oggetto.
SQL
Eseguire il comando SQL seguente in un notebook o in un editor di query SQL per visualizzare le concessioni in un oggetto .
SHOW GRANTS `<user>@<domain-name>` ON <securable-type> <securable-name>
Concedere autorizzazioni per gli oggetti in un metastore del catalogo Unity
Autorizzazioni necessarie: amministratore metastore, il privilegio MANAGE
per l'oggetto, il proprietario dell'oggetto o il proprietario del catalogo o dello schema che contiene l'oggetto.
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Selezionare l'oggetto, ad esempio un catalogo, uno schema, una tabella o una vista.
- Passare alla scheda Autorizzazioni .
- Fare clic su Concedi.
- Immettere l'indirizzo di posta elettronica per un utente o il nome di un gruppo.
- Selezionare le autorizzazioni da concedere.
- Fare clic su OK.
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL.
GRANT <privilege-type> ON <securable-type> <securable-name> TO <principal>
Ad esempio, il comando seguente concede a un gruppo denominato finance-team l'accesso per creare tabelle in uno schema denominato default con il catalogo padre denominato main:
GRANT CREATE TABLE ON SCHEMA main.default TO `finance-team`;
GRANT USE SCHEMA ON SCHEMA main.default TO `finance-team`;
GRANT USE CATALOG ON CATALOG main TO `finance-team`;
Si noti che i modelli registrati sono un tipo di funzione. Per concedere un privilegio a un modello, è necessario usare GRANT ON FUNCTION
. Ad esempio, per concedere al gruppo ml-team-acme
il EXECUTE
privilegio per il modello prod.ml_team.iris_model
, si userà:
GRANT EXECUTE ON FUNCTION prod.ml_team.iris_model TO `ml-team-acme`;
Revocare le autorizzazioni per gli oggetti in un metastore del catalogo Unity
Autorizzazioni necessarie: l'amministratore Metastore, il privilegio MANAGE
per l'oggetto, il proprietario dell'oggetto o il proprietario del catalogo o dello schema che contiene l'oggetto.
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Selezionare l'oggetto, ad esempio un catalogo, uno schema, una tabella o una vista.
- Passare alla scheda Autorizzazioni .
- Selezionare un privilegio concesso a un utente, a un'entità servizio o a un gruppo.
- Fare clic su Revoca.
- Per confermare, fare clic su Revoca.
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL.
REVOKE <privilege-type> ON <securable-type> <securable-name> TO <principal>
Ad esempio, il comando seguente revoca l'accesso a un gruppo denominato finance-team per creare tabelle in uno schema denominato default con il catalogo padre denominato main:
REVOKE CREATE TABLE ON SCHEMA main.default TO `finance-team`;
Visualizzare le concessioni in un metastore
Autorizzazioni necessarie: amministratore del metastore o amministratore dell'account. È anche possibile visualizzare le proprie concessioni in un metastore.
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Accanto all'etichetta della pagina Esplora cataloghi fare clic sull'icona accanto al nome del metastore.
- Passare alla scheda Autorizzazioni .
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL. È possibile visualizzare le concessioni per un'entità specifica oppure visualizzare tutte le concessioni in un metastore.
SHOW GRANTS [principal] ON METASTORE
Concedere le autorizzazioni per un metastore
Autorizzazioni necessarie: amministratore del metastore o amministratore dell'account.
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Accanto all'etichetta della pagina Esplora cataloghi fare clic sull'icona accanto al nome del metastore.
- Nella scheda Autorizzazioni fare clic su Concedi.
- Immettere l'indirizzo di posta elettronica per un utente o il nome di un gruppo.
- Selezionare le autorizzazioni da concedere.
- Fare clic su OK.
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL.
GRANT <privilege-type> ON METASTORE TO <principal>;
Quando si concedono privilegi in un metastore, non si include il nome del metastore, perché viene assunto il metastore collegato all'area di lavoro.
Revocare le autorizzazioni in un metastore
Autorizzazioni necessarie: amministratore del metastore o amministratore dell'account.
Esplora cataloghi
- Nell'area di lavoro di Azure Databricks fare clic su Catalogo.
- Accanto all'etichetta della pagina Esplora cataloghi fare clic sull'icona accanto al nome del metastore.
- Nella scheda Autorizzazioni selezionare un utente o un gruppo e fare clic su Revoca.
- Per confermare, fare clic su Revoca.
SQL
Eseguire il seguente comando SQL in un notebook o nell'editor di query SQL.
REVOKE <privilege-type> ON METASTORE FROM <principal>;
Quando si revocano i privilegi in un metastore, non si include il nome del metastore, perché si presuppone che venga utilizzato il metastore collegato all'area di lavoro.