Come proteggere un lakehouse per i team di Data Warehousing
Introduzione
In questo articolo viene fornita una panoramica di come configurare la sicurezza per un lakehouse in Fabric per l'uso con utenti SQL con query T-SQL. Questi utenti possono essere analisti aziendali che usano i dati tramite SQL, generatori di report o ingegneri dei dati che creano nuove tabelle e viste.
Funzionalità di sicurezza
Microsoft Fabric usa un modello di sicurezza a più livelli con controlli diversi disponibili su diversi livelli, per fornire solo le autorizzazioni minime necessarie. Per altre informazioni sulle diverse funzionalità di sicurezza disponibili in Fabric, vedere Modello di controllo di accesso ai dati in OneLake.
Nel carico di lavoro Fabric Data Warehouse, gli elementi dell'endpoint di analisi SQL e warehouse consentono anche la definizione della sicurezza SQL nativa. La sicurezza SQL usa la libreria completa di costrutti di sicurezza T-SQL per consentire il controllo di accesso granulare di tabelle, viste, righe e colonne all'interno di un elemento. Per altre informazioni sulla sicurezza SQL, vedere Autorizzazioni granulari di SQL.
Le autorizzazioni SQL configurate nel warehouse o nell'endpoint di analisi SQL si applicano solo alle query eseguite sul warehouse o sull'endpoint di analisi SQL. I dati sottostanti si trovano in OneLake, ma l'accesso ai dati di OneLake viene controllato separatamente tramite i ruoli di accesso ai dati OneLake. Per assicurarsi che gli utenti con autorizzazioni SQL specifiche non visualizzino i dati a cui non hanno accesso SQL, non includere tali utenti in un ruolo di accesso ai dati OneLake.
Protezione in base al caso d'uso
La sicurezza in Microsoft Fabric è ottimizzata per la protezione dei dati per casi d'uso specifici. Un caso d'uso è un set di utenti che richiedono un accesso specifico e l'accesso ai dati tramite un determinato motore. Per gli scenari SQL, alcuni casi d'uso comuni sono:
- Writer SQL: utenti che devono creare nuove tabelle, visualizzare o scrivere dati in tabelle esistenti.
- Reader SQL: utenti che devono leggere i dati usando query SQL. Potrebbero accedere alla connessione SQL direttamente o tramite un altro servizio, ad esempio Power BI.
È quindi possibile allineare ogni caso d'uso con le autorizzazioni necessarie su Fabric.
Accesso in scrittura SQL
È possibile concedere a un utente l'accesso in scrittura a un magazziino o a un endpoint di analisi SQL in due modi:
- Tramite i ruoli dell'area di lavoro Fabric è possibile concedere l'appartenenza a tre ruoli dell'area di lavoro che garantiscono autorizzazioni di scrittura. Ogni ruolo viene convertito automaticamente in un ruolo corrispondente in SQL che concede l'accesso in scrittura equivalente.
- Concedere l'accesso in lettura al motore SQL e concedere autorizzazioni SQL personalizzate per scrivere in alcuni o in tutti i dati.
Se un utente ha bisogno dell'accesso in scrittura a tutti i magazzini o a tutti gli endpoint di analisi SQL di un'area di lavoro, deve essere assegnato a un ruolo dell'area di lavoro. A meno che un utente non abbia bisogno di assegnare ad altri utenti i ruoli dell'area di lavoro, è opportuno utilizzare il ruolo Collaboratore.
Se un utente deve scrivere solo su magazzini specifici o su analisi SQL, concedergli l'accesso diretto tramite le autorizzazioni SQL.
Accesso in lettura SQL
È possibile concedere a un utente l'accesso in lettura a un magazziino o a un endpoint di analisi SQL in due modi:
- Concedere l'accesso in lettura tramite l'autorizzazione ReadData, concessa come parte dei ruoli dell'area di lavoro Fabric. Tutti e quattro i ruoli dell'area di lavoro concedono l'autorizzazione ReadData.
- Concedere l'accesso in lettura al motore SQL e concedere autorizzazioni SQL personalizzate per leggere in alcuni o in tutti i dati.
Se un utente è membro di un ruolo dell'area di lavoro Fabric, gli viene concessa l'autorizzazione ReadData. L'autorizzazione ReadData esegue il mapping dell'utente a un ruolo SQL che concede autorizzazioni SELECT a tutte le tabelle del magazzino o del lakehouse. Questa autorizzazione è utile se un utente deve visualizzare tutti o la maggior parte dei dati nel lakehouse o nel magazzino. Tutte le autorizzazioni SQL DENY impostate in un determinato lakehouse o magazzino applicano e limitano l'accesso alle tabelle. Inoltre, la sicurezza a livello di riga e colonna può essere impostata sulle tabelle per limitare l'accesso a un livello granulare.
Se un utente deve accedere solo a un lakehouse o a un magazzino specifico, la funzionalità di condivisione fornisce l'accesso solo all'elemento condiviso. Durante la condivisione, gli utenti possono scegliere di concedere solo l'autorizzazione di lettura o Read + ReadData. La concessione dell'autorizzazione di lettura consente all'utente di connettersi al magazzino o all'endpoint di analisi SQL, ma non concede l'accesso alle tabelle. La concessione dell'autorizzazione di lettura consente all'utente di connettersi al magazzino o all'endpoint di analisi SQL, ma non garantisce l'accesso alle tabelle. In entrambi i casi, è possibile configurare una sicurezza SQL aggiuntiva per concedere o negare l'accesso a tabelle specifiche. Questa sicurezza SQL può includere un controllo di accesso granulare, ad esempio la sicurezza a livello di riga o colonna.
Usare con i collegamenti
I collegamenti sono una funzionalità di OneLake che consente di fare riferimento ai dati da un'unica posizione senza copiare fisicamente i dati. I collegamenti sono uno strumento efficace che consente di riutilizzare facilmente i dati di un lakehouse in altre posizioni senza creare copie duplicate.
I magazzini in Fabric non supportano i collegamenti. Tuttavia, esiste un comportamento speciale per il modo in cui l'endpoint di analisi SQL per un lakehouse interagisce con i collegamenti.
Tutti i collegamenti in un lakehouse sono accessibili in modalità delegata durante l'esecuzione di query tramite l'endpoint di analisi SQL. L'identità delegata è l'utente di Fabric proprietario del lakehouse. Per impostazione predefinita, il proprietario è l'utente che ha creato il lakehouse e l'endpoint di analisi SQL. Il proprietario può essere modificato in casi selezionati e il proprietario corrente viene visualizzato nella colonna Proprietario in Fabric quando si visualizza l'elemento nell'elenco di elementi dell'area di lavoro. Il comportamento delegato indica che un utente che esegue query è in grado di leggere dalle tabelle di collegamento se il proprietario ha accesso ai dati sottostanti, non l'utente che esegue query. L'utente che esegue query ha bisogno dell'accesso solo per selezionare dalla tabella di collegamento.
Nota
Ad esempio, UtenteA è il proprietario di un lakehouse e UtenteB esegue una query su una tabella che rappresenta un collegamento. UtenteB deve prima avere accesso in lettura alla tabella, tramite ReadData o tramite le autorizzazioni SQL. Per visualizzare i dati, la query controlla quindi se UtenteA ha accesso al collegamento. Se UtenteA ha accesso, UtenteB visualizzerà i risultati della query. Se UtenteA non ha accesso, la query avrà esito negativo.
Per i lakehouse che usano la funzionalità Ruoli di accesso ai dati OneLake, l'accesso a un collegamento è determinato dal fatto che il proprietario dell'endpoint di analisi SQL abbia accesso per visualizzare il lakehouse di destinazione e leggere la tabella tramite un ruolo di accesso ai dati di OneLake.
Per i lakehouse che non usano ancora la funzionalità Ruoli di accesso ai dati OneLake, l'accesso a un collegamento è determinato dal fatto che il proprietario dell'endpoint di analisi SQL disponga dell’autorizzazione Read e ReadAll per il percorso di destinazione.