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 il modo in cui i criteri ABAC (controllo degli accessi basato su attributi) vengono valutati al tempo di esecuzione della query, tra cui:
- Modalità di gestione dei conflitti tra più criteri
- Funzionamento del casting dei tipi per le maschere di colonna
- Quali misure di sicurezza impediscono l'esposizione dei dati quando vengono eliminati tag o funzioni da cui dipende un criterio
Valutazione e applicazione dei criteri
Quando un utente esegue query su una tabella, la valutazione ABAC procede in due fasi: valutazione dei criteri in Unity Catalog e applicazione dei criteri in Databricks Runtime.
Diversi utenti possono visualizzare risultati diversi dalla stessa query perché la valutazione dei criteri dipende dall'identità dell'utente, dalle appartenenze ai gruppi e dai tag sui dati a cui accedono. Le modifiche apportate alle assegnazioni di appartenenza ai gruppi o ai tag modificano dinamicamente i criteri effettivi in fase di query.
Valutazione dei criteri (catalogo Unity)
Unity Catalog esegue i seguenti passaggi utilizzando i metadati dell'oggetto proteggibile (ad esempio, le assegnazioni di tag governati) e l'identità dell'utente e le appartenenze ai gruppi:
- Identifica tutte le politiche il cui ambito copre la tabella interrogata.
- Per ognuno di questi criteri, controlla se l'utente che esegue query si trova nell'elenco
TOe non nell'elencoEXCEPT. - Per ogni criterio, valuta le condizioni di tabella e colonna rispetto ai tag nell'oggetto sottoposto a query, inclusi i tag ereditati. Le condizioni delle colonne devono corrispondere almeno a una colonna.
- Se il criterio viene applicato, determina il filtro di riga o la maschera di colonna effettiva e la invia al runtime di Databricks come parte dei metadati della tabella.
Applicazione dei criteri (Databricks Runtime)
"Il Databricks Runtime Query Planner traduce il filtro di riga o la maschera di colonna effettivi in una vista sicura sopra le scansioni delle tabelle che applicano il filtraggio e la mascheratura durante l'esecuzione della query." Si tratta dello stesso meccanismo di imposizione usato per i filtri di riga a livello di tabella e le maschere di colonna.
Progettazione a chiusura in caso di guasto
ABAC segue un modello di chiusura sicura, in cui l'impostazione predefinita di Azure Databricks nega l'accesso se non è in grado di verificare le condizioni di sicurezza. Azure Databricks consente l'accesso alle tabelle protette dal controllo degli accessi basato sugli attributi solo quando può applicare in modo sicuro tutti i criteri applicabili. Questo vale per le versioni di calcolo non supportate, le operazioni specifiche sui dati della tabella sottostanti e le situazioni in cui sono state rimosse le dipendenze di un criterio (tag o funzioni).
Versioni di calcolo non supportate
I criteri di controllo degli accessi basato su attributi richiedono Databricks Runtime 16.4 o versione successiva o un'elaborazione serverless. Se un utente tenta di accedere a una tabella protetta dal controllo degli accessi basato su attributi (ABAC) da una versione non supportata, la query viene bloccata (l'accesso viene negato) per impedire l'esposizione non protetta dei dati.
Nella modalità di accesso dedicata, Azure Databricks delega alla computazione serverless l'applicazione dei controlli per garantire che vengano applicati controlli di accesso con granularità fine. Per consentire agli utenti su runtime meno recenti di accedere a queste tabelle, è necessario esentarli esplicitamente dalle politiche.
Operazioni non supportate sui dati protetti
Alcune operazioni non sono compatibili con i filtri di riga o le maschere di colonna. Queste operazioni falliscono invece di aggirare le normative. Per eseguirli, l'entità deve essere elencata nella EXCEPT clausola di ogni criterio ABAC applicabile alla tabella. I principali esentati non sono soggetti ai criteri, pertanto Azure Databricks non deve applicarli e può consentire in sicurezza l'operazione.
Le operazioni che richiedono l'esenzione dell'entità di esecuzione includono aggiornamenti della pipeline, processi di backup e flussi di lavoro amministrativi come i seguenti:
- Accesso alle tabelle protette da controllo degli accessi basato su attributi da sistemi di calcolo che eseguono versioni di Databricks Runtime precedenti alla 16.4
- Query sullo spostamento cronologico
- Clonazione profonda e superficiale
- Delta Sharing, in cui il proprietario della condivisione deve essere esente dalla politica e disporre delle autorizzazioni Delta Sharing necessarie. Si noti che i criteri non regolano l'accesso del destinatario.
- Creazione e sincronizzazione dell'indice di ricerca vettoriale
Per altre informazioni su queste e altre limitazioni, vedere Requisiti, quote e limitazioni del controllo degli accessi basato su attributi.
Dipendenze dei criteri rimosse
Le politiche ABAC dipendono da tag gestiti e funzioni definite dall'utente. Se una di queste dipendenze viene rimossa mentre un criterio li fa ancora riferimento, le query sulle tabelle nell'ambito del criterio hanno esito negativo.
Eliminazione di tag regolamentata
Se si elimina un tag regolamentato a cui fa riferimento un criterio ABAC, tutte le query sull'oggetto in cui è associato il criterio e i relativi oggetti figlio hanno esito negativo con un INVALID_PARAMETER_VALUE.UC_ABAC_UNKNOWN_TAG_POLICY errore. Ciò si verifica anche se il tag non è stato applicato alle tabelle sottoposte a query.
Quando un tag regolamentato viene eliminato, diventa un tag non governativo. Le restrizioni relative ai valori consentiti vengono rimosse e tutti gli utenti con APPLY TAG possono modificare i valori senza privilegi ASSIGN .
Avvertimento
L'interfaccia utente e l'API non impediscono l'eliminazione di un tag regolamentato a cui viene fatto riferimento in un criterio di controllo degli accessi in base al ruolo. Prima di eliminare un tag governato, verificare che nessuna politica ABAC lo riferisca.
Per risolvere l'errore, ripristinare il tag eliminato o aggiornare o eliminare il criterio che vi fa riferimento. Vedere Creare e gestire tag regolamentati.
Eliminazione di una colonna contrassegnata
Azure Databricks impedisce l'eliminazione di una colonna con un tag regolamentato applicato. Per eliminare la colonna, un utente con ASSIGN sul tag e APPLY TAG sull'oggetto deve prima rimuovere il tag, quindi la colonna può essere eliminata.
Questo è rilevante per le pipeline dichiarative e altri flussi di lavoro automatizzati che modificano gli schemi di tabella. Se una pipeline tenta di eliminare una colonna con tag, l'operazione non riesce. Per sbloccare la pipeline, un utente con le autorizzazioni di tag necessarie deve rimuovere il tag, eseguire la pipeline in modo che la modifica dello schema abbia esito positivo e quindi riapplicare il tag alle colonne pertinenti. Se il tag non viene riapplicato, le query sui dati avranno esito negativo perché il criterio è ancora nell'ambito, ma il tag previsto non è più presente nell'oggetto.
Eliminazione delle funzioni a cui fanno riferimento le politiche
Se una funzione definita dall'utente facente riferimento a una policy viene eliminata mentre è ancora applicata, le query sulle tabelle in quell'ambito falliscono con UC_DEPENDENCY_DOES_NOT_EXIST. Per risolvere il problema, ripristinare la funzione oppure aggiornare le impostazioni per fare riferimento a una diversa funzione definita dall'utente (UDF).
Regole per più filtri e maschere
È possibile applicare un solo filtro di riga distinto in fase di query per una determinata tabella e utente. Analogamente, solo una maschera di colonna distinta per colonna può essere risolta in fase di esecuzione per una determinata colonna e un determinato utente. In questo modo si evitano risultati ambigui.
Se più filtri o maschere distinti si applicano allo stesso utente e alla stessa tabella (o colonna), Azure Databricks blocca l'accesso e restituisce un errore. Per esempio:
- Un filtro a livello di tabella o maschera è in conflitto con un criterio ABAC. Una tabella o una colonna che dispone già di un filtro di riga applicato manualmente o maschera di colonna entra in conflitto con qualsiasi filtro o maschera definiti da ABAC per lo stesso obiettivo.
- La clausola di un filtro di
USING COLUMNSriga fa riferimento a unMATCH COLUMNSalias che corrisponde a più colonne. LaUSING COLUMNSclausola passa i valori di colonna alla funzione definita dall'utente (UDF). Se unMATCH COLUMNSalias nellaUSING COLUMNSclausola corrisponde a più di una colonna, il motore non può determinare quale colonna passare alla UDF e la query ha esito negativo con un errore. - Viene fatta menzione a una colonna mascherata nella clausola
USING COLUMNSdi un'altra policy. Se una colonna è mascherata da un criterio, non può essere usata come argomento di input nellaUSING COLUMNSclausola di un altro criterio.
Più criteri di controllo degli accessi basati su attributi (ABAC) possono coesistere per la stessa tabella o colonna se producono lo stesso filtro o maschera effettiva. Ad esempio, due criteri che fanno riferimento alla stessa funzione definita dall'utente con gli stessi argomenti si risolvono nello stesso filtro o maschera e non sono in conflitto.
Risoluzione dei conflitti di criteri
Quando Azure Databricks rileva più filtri o maschere distinti durante la valutazione dei criteri per un determinato utente, genera un errore INVALID_PARAMETER_VALUE.UC_ABAC_MULTIPLE_ROW_FILTERS o COLUMN_MASKS_FEATURE_NOT_SUPPORTED.MULTIPLE_MASKS e blocca l'accesso alla tabella finché il conflitto non viene risolto.
Per diagnosticare e risolvere:
- Usare
SHOW EFFECTIVE POLICIESper visualizzare tutti i criteri applicabili alla tabella. - Controllare
INFORMATION_SCHEMA.ROW_FILTERSeINFORMATION_SCHEMA.COLUMN_MASKSper identificare eventuali filtri di riga a livello di tabella o maschere di colonna che possono essere in conflitto. - Controllare quali criteri si sovrappongono nelle relative
TO/EXCEPTentità eWHEN/MATCH COLUMNScondizioni. - Risolvere in base a:
- Affinamento delle condizioni delle policy. Aggiornare
WHENoMATCH COLUMNSclausole per essere più specifiche in modo che i criteri distinti siano destinati a tabelle o colonne diverse. - Regolazione dei tag gestiti. Esaminare le assegnazioni di tag nelle colonne o nelle tabelle che attivano corrispondenze di criteri indesiderate e rimuoverle o aggiornarle.
- Regolazione dei principali. Aggiornare le clausole
TO/EXCEPTin modo da coprire ogni utente con al massimo una politica per tabella (per i filtri di riga) o per colonna (per le maschere di colonna). - Politiche di ristrutturazione. Consolidare i criteri sovrapposti in un singolo criterio o suddividere i criteri generali in criteri separati e mirati in modo esplicito.
- Affinamento delle condizioni delle policy. Aggiornare
Conversione automatica dei tipi per le maschere di colonna
Azure Databricks esegue automaticamente il cast sia dell'input che dell'output delle funzioni maschera di colonna risolte dai criteri di controllo degli accessi basati su attributi. Viene eseguito il cast del valore della colonna di input in modo che corrisponda al tipo di parametro della funzione mask e viene eseguito il cast dell'output della funzione in modo che corrisponda al tipo di dati della colonna di destinazione. Ciò garantisce la coerenza dei tipi e il comportamento affidabile delle query durante il mascheramento delle colonne. Il cast automatico funziona come segue:
- Esecuzione della funzione maschera: quando la valutazione dei criteri determina che la maschera viene applicata, la funzione di maschera viene eseguita sui valori di colonna corrispondenti.
- Automatic type casting: Azure Databricks esegue il cast del valore della colonna di input in modo che corrisponda al tipo di parametro della funzione ed esegue il cast dell'output della funzione in modo che corrisponda al tipo di dati della colonna di destinazione.
- Risultato restituito: il risultato digitato correttamente viene restituito alla query.
Se i tipi di input o output non sono compatibili, il cast ha esito negativo e la query restituisce un errore di runtime. Il cast segue gli standard SQL ANSI per le operazioni CAST (dettagli di compatibilità completi), con un'aggiunta: in Databricks Runtime 18.1 e versioni successive, i criteri della maschera di colonna ABAC possono eseguire il cast di struct a VARIANT, che non è supportato nel SQL generale.
È necessario assicurarsi che le funzioni di mascheramento restituiscano tipi compatibili con le colonne di destinazione. Vedere Funzioni di mascheramento compatibili con il casting per esempi e l'approccio VARIANT per un mascheramento flessibile tra i tipi di colonne.