Implementare Dynamic Data Masking
dynamic data masking funziona offuscando i dati per limitarne l'esposizione. Gli utenti che non devono visualizzare i dati sensibili possono visualizzare la colonna contenente i dati, ma non i dati effettivi stessi. Dynamic Data Masking funziona a livello di presentazione e che i dati non mascherati sono sempre visibili da utenti con privilegi elevati.
Il vantaggio di Dynamic Data Masking è che non è necessario apportare molte modifiche all'applicazione o al database. È possibile configurarlo tramite il portale di Azure o usando T-SQL come indicato di seguito.
Nell'esempio entrambe le colonne PhoneNumber e EmailAddress sono nascoste all'utente DDMDemo che dispone SELECT solo dell'autorizzazione per la tabella. L'utente può visualizzare le ultime quattro cifre del numero di telefono perché viene mascherato usando una funzione partial che sostituisce tutte le cifre contenute nella colonna a eccezione delle ultime quattro. Questa maschera è considerata una funzione personalizzata. Oltre a T-SQL, se si usa il database SQL di Azure, è possibile creare regole di maschera dinamica nel portale di Azure:
È possibile aprire la schermata per aggiungere una regola di mascheramento passando al database nel portale di Azure e selezionando Dynamic Data Masking nella sezione Sicurezza del pannello principale del database.
I criteri di mascheramento supportati da Dynamic Data Masking che è possibile usare sono i seguenti:
| Funzione di mascheramento | Definizione | Esempio T-SQL |
|---|---|---|
| Predefinita | Maschera completamente i dati nella colonna senza esporre alcuna parte dei valori all'utente. L'utente visualizzerà XXXX per i valori stringa, 0 per i numeri e 01.01.1900 per i valori di data. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()') |
| Carta di credito | Maschera tutti i caratteri tranne i quattro finali, consentendo agli utenti di visualizzare le ultime quattro cifre. Questa maschera può essere utile per gli agenti del servizio clienti che devono visualizzare le ultime quattro cifre di un numero di carta di credito, ma che non devono vedere l'intero numero. I dati sono visualizzati nel formato consueto di un numero di carta di credito, XXXX-XXXX-XXXX-1234. | ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)') |
| Solo la prima lettera e il suffisso finale del dominio non sono mascherati; ad esempio "aXXX@XXXXXXX.com" | ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()') |
|
| Numero | Questo formato di mascheramento deve essere usato nelle colonne numeriche. Mostra un numero casuale come valore mascherato anziché il valore effettivo. Con ogni query viene visualizzato un numero diverso. | ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)') |
| Stringa personalizzata | Questa opzione consente di mascherare il testo con qualsiasi valore e di visualizzare un numero personalizzato di caratteri a una delle estremità del valore mascherato. Se la lunghezza del valore da mascherare è minore o uguale al numero di caratteri specificato dalla maschera, verranno visualizzati solo i caratteri mascherati. | ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)') |
Per consentire agli utenti di recuperare i dati non mascherati dalle colonne per cui è definito il mascheramento, è necessario concedere in modo esplicito l'autorizzazione UNMASK.
Nota
È possibile identificare i dati mascherati usando l'inferenza in base ai risultati. Se si usa la maschera dati, è anche consigliabile limitare la capacità dell'utente di eseguire query non pianificate.
Per questo motivo, è consigliabile usare la maschera dati dinamica con altre funzionalità di sicurezza, ad esempio il controllo, la crittografia, la sicurezza a livello di riga per proteggere meglio i dati sensibili.
Caso d'uso
La maschera dati è una funzionalità semplice e leggera ed è ideale per molti scenari, tra cui:
Mascherare i dati alla vista degli utenti dell'applicazione che non hanno un accesso diretto al database.
Limitare le informazioni private per un gruppo di utenti.
Fornire dati mascherati ai fornitori esterni, dove è necessario proteggere le informazioni sensibili pur conservando le relazioni tra gli elementi dei dati.
Esportare una copia del database di produzione in un ambiente inferiore per scopi di sviluppo con un utente che non ha l'autorizzazione
UNMASK. L'esportazione dei dati avverrà in un formato mascherato.
Importare ed esportare dati
Usando SELECT INTO o INSERT INTO per copiare i dati da una colonna con maschera in un'altra tabella vengono restituiti i dati mascherati nella tabella di destinazione.
Quando un utente senza privilegi di UNMASK esegue l'importazione ed esportazione di SQL Server, il file di dati esportato contiene dati mascherati e il database importato conterrà dati mascherati inattivi.
Per altre informazioni sul funzionamento di Dynamic Data Masking, vedere Dynamic Data Masking.