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.
Il catalogo unity supporta due approcci per la sicurezza a livello di riga e a livello di colonna: criteri ABAC e filtri di riga a livello di tabella e maschere di colonna. Nessuno dei due approcci concede l'accesso ai dati autonomamente, entrambe aggiungono restrizioni ai privilegi a livello di oggetto esistenti. È necessario concedere l'accesso alla tabella di base separatamente tramite autorizzazioni a livello di oggetto (GRANT).
La differenza principale è la posizione in cui vengono definite le restrizioni.
I filtri di riga a livello di tabella e le maschere di colonna applicano controlli di sensibilità direttamente su singole tabelle usando ALTER TABLE. I proprietari delle tabelle gestiscono la propria protezione dei dati senza bisogno di un sistema di tag regolamentato. Questa operazione è semplice per un numero ridotto di tabelle, ma ogni tabella deve essere configurata singolarmente e i proprietari di tabelle possono modificare o rimuovere i propri filtri e maschere.
I criteri di controllo degli accessi in base agli attributi vengono collegati a livello di catalogo, schema o tabella e si abbinano a tabelle e colonne in modo dinamico in base ai tag governati. Un criterio definito a livello di catalogo si applica a tutte le tabelle del catalogo e i singoli proprietari di tabelle non possono rimuovere, modificare o ignorarlo. La politica si trova nel catalogo e viene valutata da Unity Catalog prima che la query raggiunga il runtime. In questo modo gli amministratori di livello superiore applicano regole a livello di organizzazione e assicurano che gli amministratori e i proprietari di livello inferiore non possano aggirarli.
Riepilogo dettagliato del confronto
Questa tabella riepiloga le differenze tra i criteri ABAC e i filtri di riga a livello di tabella e le maschere di colonna.
| Considerazione | Criteri di controllo degli accessi in base al ruolo | Filtri di riga a livello di tabella e maschere di colonna |
|---|---|---|
| Sintassi SQL | CREATE POLICY ... ON CATALOG/SCHEMA/TABLE |
ALTER TABLE ... SET ROW FILTER / ALTER TABLE ... ALTER COLUMN ... SET MASK |
| Scope | Tutte le tabelle all'interno dell'ambito della politica (catalogo, schema o tabella) e dei suoi discendenti. Le nuove tabelle con tag vengono trattate automaticamente. | Singola tabella in cui è configurato il filtro o la maschera. Ogni tabella deve essere configurata singolarmente. |
| Corrispondenza dinamica | Le tabelle e le colonne vengono confrontate in modo dinamico in base ai tag regolati tramite has_tag() e has_tag_value(). |
Nessuna corrispondenza dinamica. I filtri e le maschere sono associati a tabelle e colonne specifiche. |
| Principali di destinazione |
TO
/
EXCEPT clausole nella definizione dei criteri, oltre alle funzioni di identità nella funzione definita dall'utente (UDF). |
Le funzioni identità come current_user() nell'UDF. |
| Governance delle politiche | I criteri possono essere impostati dai proprietari del catalogo o dello schema. Dopo essere stato impostato a un livello superiore, i proprietari di tabelle non possono eseguire l'override, modificare o rimuoverli. | Gestito dai proprietari di tabelle, che possono modificare o rimuovere filtri e maschere nelle proprie tabelle. |
| Funzionalità non supportate | Le operazioni come il viaggio nel tempo, la clonazione e la condivisione delta possono essere eseguite dalle entità nella EXCEPT clausola . Vedere Progettazione non riuscita. |
Nessuna EXCEPT clausola, pertanto le funzionalità non supportate rimangono non disponibili per le tabelle protette. |
| Politiche efficaci |
SHOW EFFECTIVE POLICIES per vedere quali criteri si applicano a una tabella e a un utente specificati. |
Visibile direttamente nella definizione della tabella. |
| Controllabilità |
DESCRIBE POLICY e SHOW POLICIES per esaminare le definizioni dei criteri. |
INFORMATION_SCHEMA.ROW_FILTERS e INFORMATION_SCHEMA.COLUMN_MASKS. |
In generale, usare i criteri di controllo degli accessi basato sugli attributi quando:
- Sono necessarie regole di accesso coerenti in molte tabelle, schemi o cataloghi.
- L'organizzazione separa i compiti. Ad esempio, gli autori di criteri definiscono regole e gli amministratori dei dati classificano i dati con tag.
- Il patrimonio di dati è in continua crescita e si desidera che le nuove tabelle vengano trattate automaticamente quando vengono contrassegnate.
- È necessaria la
EXCEPTclausola per consentire operazioni come il viaggio nel tempo, la condivisione Delta o l'ottimizzazione completa delle query per principali specifici.
In generale, usare filtri di riga a livello di tabella e maschere di colonna quando:
- Ogni tabella ha una logica rigorosa e specifica che non viene generalizzata in altre tabelle.
- I proprietari delle tabelle devono gestire direttamente i propri filtri e maschere, senza un sistema di tag centralizzato.
- Si dispone di un piccolo set stabile di tabelle che cambiano raramente.
Combinazione di ABAC e filtri di riga a livello di tabella e maschere di colonna
ABAC, i filtri di riga a livello di tabella e le maschere di colonna possono coesistere nella stessa tabella. In fase di query, i criteri vengono valutati in modo indipendente per l'utente che esegue query con le regole seguenti:
- È possibile applicare un solo filtro di riga distinto.
- È possibile risolvere una sola maschera di colonna distinta per colonna.
Azure Databricks valuta il conflitto confrontando le funzioni applicate, non l'output dei dati. Se sia un criterio ABAC che un filtro a livello di tabella o una maschera applicano la stessa funzione di filtro di riga o maschera di colonna per lo stesso utente, Azure Databricks consente l'esecuzione. Se applicano funzioni diverse, Azure Databricks blocca l'accesso e restituisce un errore, anche se tali funzioni producono output di dati identici.
Per informazioni dettagliate sulla risoluzione dei conflitti e sulla risoluzione dei problemi, vedere Regole per più filtri e maschere.
Sicurezza a livello di riga e a livello di colonna con viste dinamiche
Le viste dinamiche possono anche implementare la sicurezza a livello di riga e a livello di colonna incorporando funzioni di identità come current_user() e is_account_group_member() direttamente nella definizione della vista. Le visualizzazioni dinamiche, i filtri di riga e le maschere di colonna applicano la logica di filtro o trasformazione al momento della query, ma differiscono per come vengono gestiti, l'ambito e come vengono esposti agli utenti.
| Si applica a | Come viene gestito | Meglio utilizzato per | |
|---|---|---|---|
| viste dinamiche | Viste | Logica SQL nella definizione della vista | Controllo di accesso con granularità fine che si estende su più tabelle di origine o rimodella i dati per la condivisione |
| Filtri di riga e maschere di colonna | Tabelle e colonne | Criteri di controllo degli accessi basati su attributi o assegnazione a livello di tabella | Controllo di accesso a livello di riga e a livello di colonna senza introdurre nuovi oggetti |
Usare le visualizzazioni dinamiche quando è necessario un controllo di accesso con granularità fine che si estende su più tabelle di origine o rimodellare i dati per la condivisione. Usare filtri di riga e maschere di colonna quando si vuole controllare l'accesso alle singole tabelle senza introdurre nuovi oggetti.
Ad esempio, una visualizzazione dinamica può mascherare una colonna di posta elettronica per i non revisori:
CREATE VIEW sales_redacted AS
SELECT
user_id,
CASE
WHEN is_account_group_member('auditors') THEN email
ELSE regexp_extract(email, '^.*@(.*)$', 1)
END AS email,
country,
product,
total
FROM sales_raw
Le viste dinamiche supportano completamente l'ottimizzazione delle query e il pushdown del predicato, in modo da offrire prestazioni di query migliori rispetto ai filtri di riga e alle maschere di colonna. Impediscono inoltre agli utenti di modificare le tabelle sottostanti.
Tuttavia, le visualizzazioni dinamiche presentano due svantaggi per la governance dei dati:
- Controllo limitato: le visualizzazioni dinamiche non contengono metadati semantici, ad esempio tag o definizioni di criteri nelle tabelle di sistema, che rendono più difficile il controllo su larga scala.
-
Vulnerabilità alla sonda: poiché non hanno una
SecureViewbarriera, non proteggono dagli attacchi di sonda, in cui un utente crea un predicato con effetti collaterali per dedurre informazioni sulle righe filtrate. Vedere Informazioni sul pushdown del predicato nelle tabelle protette.