Dynamic data masking nell’Archiviazione dati 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.
Dynamic data masking è utile per impedire l'accesso non autorizzato ai dati sensibili consentendo agli utenti di specificare la quantità di dati sensibili da visualizzare, con un impatto minimo sul livello dell'applicazione. È possibile configurare la maschera dati dinamica in campi di database designati per nascondere i dati sensibili nei set di risultati delle query. Grazie alla maschera dati dinamica, i dati del database non vengono modificati, quindi possono essere utilizzati con le applicazioni esistenti, poiché vengono applicate le regole per la maschera ai risultati della 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.
- Le funzionalità di Dynamic data masking offrono funzioni di mascheramento completo e parziale, oltre a una maschera casuale per dati numerici.
- 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 espongano parti dei dati sensibili.
Dynamic data masking è complementare ad altre funzionalità di sicurezza di Fabric, ad esempio la sicurezza a livello di colonna e la sicurezza a livello di riga. È consigliabile usare queste funzionalità di protezione dei dati insieme in modo da proteggere i dati sensibili nel database.
Definizione di una maschera dati dinamica
Una regola per la maschera può essere definita in una colonna all'interno di una tabella, al fine di nascondere i dati in tale colonna. Sono disponibili quattro tipi di maschere.
Funzione | Descrizione | Esempi |
---|---|---|
Default | 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()') |
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 Dynamic data masking in Synapse Data Warehouse.
Autorizzazioni
Gli utenti senza diritti di amministratore, membro o collaboratore per l'area di lavoro e senza autorizzazioni elevate per il magazzino, vedranno i dati mascherati.
Non sono necessarie autorizzazioni ai accesso speciali per creare una tabella con una maschera dati dinamica. Sono sufficienti le autorizzazioni standard CREATE TABLE
e ALTER
per autorizzazioni di schema.
L'aggiunta, la sostituzione o la rimozione della maschera da una colonna richiede le autorizzazioni ALTER ANY MASK
e ALTER
sulla tabella. È opportuno concedere ALTER ANY MASK
a un responsabile della sicurezza.
Gli utenti con autorizzazione SELECT
su una tabella possono visualizzare i dati in essa contenuti. Le colonne definite con maschera visualizzeranno dati mascherati. Concedere l'autorizzazione UNMASK
a un utente per abilitare il recupero dei dati senza maschera dalle colonne su cui è definita la stessa maschera.
L'autorizzazione CONTROL
per il database includono le autorizzazioni ALTER ANY MASK
e UNMASK
, che consentono all'utente di visualizzare i dati non mascherati. Gli utenti o i ruoli amministrativi come amministratore, membro, o collaboratore dispongono, in base alla progettazione, dell'autorizzazione di CONTROLLO sul database e possono visualizzare i dati non mascherati per impostazione predefinita. Le autorizzazioni elevate per il magazzino includono l'autorizzazione CONTROL
.
Considerazioni sulla sicurezza: ignorare il mascheramento usando attacchi di forza bruta o inferenze
Il mascheramento dei dati dinamici è progettato per semplificare lo sviluppo di applicazioni, limitando l'esposizione dei dati in un set di query predefinito usato dall'applicazione. Nonostante il Dynamic Data Masking possa essere utile anche per prevenire l'esposizione accidentale dei dati sensibili durante l'accesso diretto ai dati, è importante notare che gli utenti senza privilegi con autorizzazioni per le query possono applicare le tecniche per ottenere l'accesso ai dati effettivi.
Ad esempio, si consideri un utente con privilegi sufficienti per eseguire query sul magazzino che provi a trovare i dati sottostanti e infine a dedurre i valori effettivi. Si presupponga di aver definito una maschera nella colonna [Employee].[Salary]
e che l'utente si connetta direttamente al database e inizi a ipotizzare 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 | Nome | Salario |
---|---|---|
62543 | Valeria Dal Monte | 0 |
91245 | Giorgio Cavaglieri | 0 |
Ciò dimostra che il Dynamic Data Masking non deve essere usato da solo per proteggere completamente i dati sensibili dagli utenti con accesso alle query all'endpoint di analisi SQL o magazzino. È appropriato per impedire l'esposizione dei dati sensibili, ma non protegge da potenziali attacchi dannosi mirati a dedurre i dati sottostanti.
È importante gestire correttamente la protezione a livello di oggetto con le autorizzazioni granulari SQL e seguire sempre il principio di autorizzazioni minime necessarie.
Contenuto correlato
- Ruoli dell'area di lavoro nel data warehousing di Fabric
- Sicurezza a livello di colonna in Fabric data warehousing
- Sicurezza a livello di riga nel data warehousing di Fabric
- Sicurezza per l'archiviazione dati in Microsoft Fabric