Mascheramento dinamico dei dati in Fabric Data Warehouse

Si applica a:✅ endpoint di analisi SQL e Warehouse in Microsoft Fabric

La maschera dati dinamica è una funzionalità di protezione dei dati che limita l'esposizione dei dati sensibili mascherandola agli utenti senza privilegi. Semplifica la progettazione e la codifica della sicurezza nell'applicazione.

La maschera dati dinamica consente di impedire la visualizzazione non autorizzata dei dati sensibili. Gli amministratori specificano la quantità di dati sensibili da rivelare, con un effetto minimo sul livello dell'applicazione. È possibile configurare la maschera dati dinamica nei campi di database designati per nascondere i dati sensibili nei set di risultati delle query. I dati nel database non vengono modificati, quindi le applicazioni esistenti possono continuare a funzionare senza modifiche perché le regole di maschera vengono applicate ai risultati della query. Molte applicazioni sono in grado di mascherare i dati sensibili senza modificare le query esistenti.

La maschera dati dinamica offre queste funzionalità:

  • I criteri di mascheramento dei dati centrali operano direttamente sui campi sensibili del database.
  • Gli utenti o i ruoli con privilegi possono essere designati per accedere ai dati sensibili.
  • Sono disponibili opzioni di maschera da scegliere: maschera completa e funzioni di maschera parziale e maschera casuale per i dati numerici.
  • Semplici comandi Transact-SQL definiscono e gestiscono le maschere.

La maschera dati dinamica non impedisce agli utenti del database di connettersi direttamente al database ed eseguire query complete che espongono parti dei dati sensibili. Usare la maschera dati dinamica insieme ad altre funzionalità di sicurezza Fabric come la sicurezza a livello di colonna e la sicurezza a livello di riga per proteggere i dati sensibili nel database.

Funzioni di maschera dati dinamica

Definire una regola di maschera su una colonna di una tabella per offuscare i dati in tale colonna. Sono disponibili quattro tipi di maschere.

Funzione Descrizione Esempi
Predefinito Maschera completa in base al tipo di dati dei campi designati.

Per i tipi di dati stringa, usare XXXX (o meno) se le dimensioni del campo sono inferiori a 4 caratteri (char, nchar, varchar, nvarchar, text, ntext).

Per il tipo di dati numerici, usare il valore zero (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Per i tipi di dati di data/ora, usare 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

Per i tipi di dati binati, usare un singolo byte di valore 0 ASCII (binary, varbinary, image).
Esempio di sintassi di definizione della colonna: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Esempio di sintassi di alter: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
E-mail Metodo di maschera che espone la prima lettera di un indirizzo di posta elettronica e il suffisso costante ".com", sotto forma di un indirizzo di posta elettronica. aXXX@XXXX.com. Esempio di sintassi di definizione: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Esempio della sintassi di alter: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Casuale Una funzione di maschera casuale per l'uso in qualsiasi tipo numerico al fine di mascherare il valore originale con un valore casuale in un intervallo specificato. Esempio di sintassi di definizione: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Esempio di sintassi di modifica: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Stringa personalizzata Metodo di maschera che espone la prima e l'ultima lettera e aggiunge al centro una stringa di riempimento personalizzata. prefix,[padding],suffix

Se il valore originale è troppo breve per completare l'intera maschera, la parte del prefisso o del suffisso non viene esposta.
Esempio di sintassi di definizione: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Esempio di sintassi di alter: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Questo trasforma un numero di telefono come 555.123.1234 in 5XXXXXXX.

Esempio aggiuntivo:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Questo trasforma un numero di telefono come 555.123.1234 in 555.1XXXXXXX.

Per altri esempi, vedere Come implementare la maschera dati dinamica in Fabric Data Warehouse.

Autorizzazioni per la maschera dati dinamica

In Fabric Data Warehouse gli utenti visualizzano i dati mascherati quando eseguono query sulle colonne mascherate se non sono membri dei ruoli Amministratore, Membro o Collaboratore nell'area di lavoro o non dispongono di autorizzazioni elevate per il warehouse.

Nella tabella seguente sono elencate le autorizzazioni necessarie per ogni operazione di maschera dati dinamica:

Operation Autorizzazione necessaria
Creare una tabella con colonne mascherate CREATE TABLE e ALTER nello schema
Aggiungere, sostituire o rimuovere una maschera in una colonna ALTER ANY MASK e ALTER sulla tabella
Visualizzare i dati mascherati SELECT sul tavolo
Visualizzare i dati non mascherati UNMASK nella colonna o CONTROL nel database

Concedi ALTER ANY MASK a un responsabile della sicurezza. Concedi UNMASK a un utente per consentirgli di recuperare dati non mascherati da colonne mascherate.

L'autorizzazione CONTROL nel database include sia ALTER ANY MASK che UNMASK, quindi gli utenti che dispongono di CONTROL possono visualizzare i dati non mascherati. Gli utenti amministratori o i ruoli, ad esempio Amministratore, Membro o Collaboratore, dispongono CONTROL dell'autorizzazione per il database in base alla progettazione e possono visualizzare i dati non mascherati per impostazione predefinita. Le autorizzazioni elevate per il magazzino includono l'autorizzazione CONTROL.

Considerazioni sulla sicurezza: ignorare la maschera usando tecniche di inferenza o di forza bruta

La maschera dati dinamica semplifica lo sviluppo di applicazioni limitando l'esposizione dei dati in un set di query predefinite usate dall'applicazione. Anche se la maschera dati dinamica può anche contribuire a evitare l'esposizione accidentale dei dati sensibili durante l'accesso diretto ai dati, gli utenti senza privilegi con autorizzazioni di query possono usare tecniche per dedurre i dati effettivi.

Ad esempio, un utente che dispone dell'autorizzazione per eseguire query nel warehouse può indovinare i valori per dedurre i dati mascherati. Si supponga di definire una maschera nella [Employee].[Salary] colonna. L'utente si connette direttamente al database e inizia a indovinare i valori, deducendo infine il [Salary] valore nella Employees tabella. Eseguono una query di range sulla tabella Employees:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

L'interrogazione restituisce:

ID Nome Salario
62543 Jane Doe 0
91245 John Smith 0

Anche se la Salary colonna è mascherata (i valori visualizzati come 0), la WHERE clausola conferma che entrambi i dipendenti hanno uno stipendio compreso tra $99.999 e $100.001. Non usare il mascheramento dinamico dei dati da solo per mettere completamente al sicuro i dati sensibili dagli utenti con accesso tramite query al Warehouse o all'endpoint di analisi SQL. La maschera dati dinamica è appropriata per impedire l'esposizione accidentale dei dati sensibili, ma non protegge da finalità dannose per dedurre i dati sottostanti.

Gestire correttamente la sicurezza a livello di oggetto con autorizzazioni granulari SQL e seguire sempre il principio dei privilegi minimi.

Passaggio successivo