Maschera dati dinamica nel data warehousing di Fabric

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

La funzione Maschera dati dinamica limita l'esposizione dei dati sensibili, nascondendoli agli utenti senza privilegi. Può essere usata per semplificare notevolmente la progettazione e la codifica della sicurezza nell'applicazione.

La maschera dati dinamica consente di impedire la visualizzazione non autorizzata dei dati sensibili consentendo agli amministratori di specificare la quantità di dati sensibili da rivelare, con un effetto minimo sul livello dell'applicazione. La maschera dati dinamica può essere configurata in campi di database designati per nascondere i dati sensibili nei set di risultati delle query. Con la maschera dati dinamica, i dati nel database non vengono modificati, quindi possono essere usati con le applicazioni esistenti perché le regole di maschera vengono applicate ai risultati delle query. Molte applicazioni sono in grado di mascherare i dati sensibili senza modificare le query esistenti.

  • I criteri di mascheramento dei dati centrali operano direttamente sui campi sensibili del database.
  • Designare gli utenti con privilegi o ruoli che hanno accesso ai dati sensibili.
  • La maschera dati dinamica include funzioni di mascheramento completo e maschera parziale e una maschera casuale per i dati numerici.
  • I semplici comandi Transact-SQL definiscono e gestiscono le maschere.

Lo scopo del Dynamic Data Masking consiste nel limitare l'esposizione dei dati sensibili, impedendo la visualizzazione dei dati agli utenti che non dovrebbero averne accesso. La maschera dati dinamica non mira a impedire agli utenti del database di connettersi direttamente al database ed eseguire query complete che espongono parti dei dati sensibili.

La maschera dati dinamica è complementare ad altre funzionalità di sicurezza dell'infrastruttura, ad esempio la sicurezza a livello di colonna e la sicurezza a livello di riga. È consigliabile usare queste funzionalità di protezione dei dati insieme per proteggere i dati sensibili nel database.

Definire una maschera dati dinamica

È possibile definire una regola di maschera su una colonna di una tabella per offuscare i dati in tale colonna. Sono disponibili cinque tipi di maschere.

Funzione Descrizione Esempi
Predefinita 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 e ora, usare (date, datetime2, datetime, datetimeoffset, smalldatetime, time). 1900-01-01 00:00:00.0000000

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 di 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 alter: 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 Synapse Data Warehouse.

Autorizzazioni

Gli utenti senza diritti di Amministrazione istrator, membro o collaboratore per l'area di lavoro e senza autorizzazioni elevate per il warehouse vedranno i dati mascherati.

Non è necessaria alcuna autorizzazione speciale per creare una tabella con una maschera dati dinamica, ma solo le autorizzazioni standard CREATE TABLE e ALTER per lo schema.

L'aggiunta, la sostituzione o la rimozione della maschera di una colonna richiedono l'autorizzazione e ALTER l'autorizzazione ALTER ANY MASK per la tabella. È opportuno concedere ALTER ANY MASK a un responsabile della sicurezza.

Gli utenti con SELECT autorizzazione per una tabella possono visualizzare i dati della tabella. Le colonne definite come mascherate visualizzeranno i dati mascherati. Concedere l'autorizzazione UNMASK a un utente per consentire loro di recuperare dati non mascherati dalle colonne per cui è definita la maschera.

L'autorizzazione CONTROL per il database include sia l'autorizzazione ALTER ANY MASK e UNMASK che consente all'utente di visualizzare i dati non mascherati. Amministrazione i ruoli o utenti non autorizzati, ad esempio Amministrazione, membro o collaboratore hanno l'autorizzazione CONTROL per il database in base alla progettazione e possono visualizzare i dati non mascherati per impostazione predefinita. Le autorizzazioni elevate per il warehouse includono CONTROL l'autorizzazione.

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

La maschera dati dinamica è progettata per semplificare lo sviluppo di applicazioni limitando l'esposizione dei dati in un set di query predefinite usate dall'applicazione. Anche se Dynamic Data Masking può essere utile anche per evitare l'esposizione accidentale dei dati sensibili durante l'accesso diretto ai dati, è importante notare che gli utenti senza privilegi con autorizzazioni di query possono applicare tecniche per ottenere l'accesso ai dati effettivi.

Si consideri ad esempio un utente con privilegi sufficienti per eseguire query nel warehouse e tenta di "indovinare" i dati sottostanti e infine dedurre i valori effettivi. Si supponga di avere una maschera definita nella [Employee].[Salary] colonna e che l'utente si connetta direttamente al database e inizi a indovinare i valori, deducendo infine il [Salary] valore nella Employees tabella:

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

Il risultato è il seguente:

ID Name Salario
62543 Valeria Dal Monte 0
91245 Giorgio Cavaglieri 0

Ciò dimostra che la maschera dati dinamica non deve essere usata da sola per proteggere completamente i dati sensibili dagli utenti con accesso alle query all'endpoint di analisi Warehouse o SQL. È appropriato per impedire l'esposizione dei dati sensibili, ma non protegge da finalità dannose per dedurre i dati sottostanti.

È importante gestire correttamente la sicurezza a livello di oggetto con autorizzazioni granulari SQL e seguire sempre il principio minimo necessario per le autorizzazioni.

Passaggio successivo