Controllare l'accesso esterno ai dati nel catalogo Unity
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Suggerimento
Per informazioni su come leggere i dati di Azure Databricks usando Microsoft Fabric, vedere Usare Microsoft Fabric per leggere i dati registrati nel catalogo Unity.
Questo articolo descrive come controllare l'accesso ai dati in Azure Databricks quando i motori di elaborazione esterni utilizzano le API aperte del catalogo Unity o le API Iceberg per accedere a tali dati, in particolare quando i motori utilizzano la funzionalità di distribuzione delle credenziali del catalogo Unity per ottenere l'accesso.
I controlli di accesso descritti in questo articolo riguardano scenari in cui le credenziali temporanee vengono utilizzate per leggere i dati dai cataloghi del catalogo Unity utilizzando motori e interfacce esterne, come ad esempio:
- API REST di Iceberg
- Microsoft Fabric
- duckDB
- Apache Spark e Trino
Nota
Il catalogo Unity implementa le API REST di Iceberg tramite Delta Lake UniForm, un modo alternativo per fornire ai client Iceberg l'accesso in sola lettura alle tabelle Delta nel catalogo Unity. Vedere Usare UniForm per leggere le tabelle Delta con i client Iceberg.
Panoramica del distributore di credenziali e concessione dell'accesso al motore esterno
Quando si desidera utilizzare un motore esterno per accedere ai dati registrati nel metastore del catalogo Unity, è necessario richiedere una credenziale di breve durata utilizzando l'API REST del catalogo Unity. Il processo con cui il catalogo Unity concede la credenziale è chiamato vending di credenziali.
Per ottenere una credenziale temporanea, l'entità di sicurezza di Azure Databricks (utente, gruppo o entità servizio) che effettua la richiesta deve avere il privilegio EXTERNAL USE SCHEMA
per lo schema che contiene la tabella a cui desidera accedere dal motore esterno. Anche il metastore del catalogo Unity che contiene lo schema deve essere abilitato in modo esplicito per l'accesso esterno.
Quando all'entità con privilegi sono state concesse le credenziali temporanee, ricevono una stringa di token di accesso di breve durata e un URL del percorso di archiviazione cloud che gli utenti del motore esterno possono usare per accedere all'oggetto dati (tabella) dal percorso di archiviazione cloud. Il modo in cui le credenziali e il token vengono usati dal motore esterno sono specifici del motore esterno e non sono trattati qui.
Il motore esterno e la configurazione del catalogo Unity di Azure Databricks devono inoltre soddisfare requisiti di rete specifici, elencati nelle sezioni seguenti.
Requisiti
Questa sezione elenca le configurazioni di rete, le opzioni del metastore del catalogo Unity, i tipi di tabella e le autorizzazioni necessarie per l'accesso sicuro agli oggetti di dati del catalogo Unity da motori esterni che utilizzano le API aperte del catalogo Unity o le API REST di Iceberg.
Requisiti di rete
- Per accedere all'area di lavoro di Azure Databricks utilizzando le API aperte del catalogo Unity o le API REST di Iceberg, l'URL dell'area di lavoro deve essere accessibile al motore che esegue la richiesta. Sono incluse le aree di lavoro che usano elenchi di accesso IP o collegamento privato di Azure.
- Per accedere alla posizione di archiviazione cloud sottostante per gli oggetti di dati registrati nel catalogo Unity, gli URL di archiviazione generati dall'API delle credenziali temporanee del catalogo Unity devono essere accessibili al motore che esegue la richiesta. Ciò significa che il motore deve essere consentito nel firewall e negli elenchi di controllo di accesso di rete per gli account di archiviazione cloud sottostanti.
Requisiti dei metastore e degli oggetti dati del catalogo Unity
- Il metastore deve essere abilitato per l'accesso ai dati esterni.
- Durante l'anteprima pubblica sono supportate solo le tabelle.
- Le tabelle esterne supportano la lettura e la scrittura.
- Le tabelle gestite possono essere solo lette.
- I tipi di tabelle indicati di seguito non sono supportati:
- Tabelle con filtri di riga o maschere di colonna.
- Tabelle condivise tramite la condivisione Delta.
- Tabelle federate lakehouse (tabelle esterne).
- Visualizzazioni
- Viste materializzate
- Tabelle live delta - tabelle di streaming
- Tabelle online
- Indici di ricerca vettoriali
Requisiti relativi alle autorizzazioni
L'entità che richiede le credenziali temporanee deve avere:
Privilegio
EXTERNAL USE SCHEMA
per lo schema contenitore o il relativo catalogo padre.Questo privilegio deve essere sempre concesso in modo esplicito. Solo il proprietario del catalogo padre può concederlo. Per evitare l'esfiltrazione accidentale,
ALL PRIVILEGES
non include il privilegioEXTERNAL USE SCHEMA
e i proprietari dello schema non dispongono di questo privilegio per impostazione predefinita.Autorizzazione
SELECT
per la tabella,USE CATALOG
nel catalogo padre eUSE SCHEMA
nello schema padre.
Abilitare l'accesso ai dati esterni nel metastore
Per consentire ai motori esterni di accedere ai dati in un metastore, un amministratore del metastore deve abilitare l'accesso ai dati esterni per il metastore. Questa opzione è disabilitata per impostazione predefinita per impedire l'accesso esterno non autorizzato.
- Nell’area di lavoro di Azure Databricks collegata al metstore, fare clic su Catalogo.
- Fare clic sull'icona a forma di ingranaggio nella parte superiore del riquadro Catalogo e selezionare Metastore.
- Nella scheda Dettagli abilitare l'accesso ai dati esterni.
Richiedere credenziali temporanee per l'accesso ai dati esterni
Per richiedere credenziali temporanee per l'accesso ai dati esterni, un utente dell'area di lavoro che soddisfa i requisiti elencati in precedenza deve usare l'API /api/2.1/unity-catalog/temporary-table-credentials
.
Nota
È possibile recuperare un elenco di tabelle che supportano la distribuzione delle credenziali richiamando l'API ListTables con l'opzione include_manifest_capabilities
abilitata. Solo le tabelle contrassegnate HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT
o HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT
sono idonee per riferimento nell'API temporary-table-credentials. Si veda GET /api/2.1/unity-catalog/tables.
Ad esempio:
curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'
Per informazioni dettagliate, vedere POST /api/2.1/unity-catalog/temporary-table-credentials nella guida di riferimento all'API REST di Azure Databricks.