Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: database SQL di Azure Istanza gestita di SQL di Azure
Database SQL di Azure Synapse Analytics (solo pool SQL dedicati)
in Fabric
database SQL di Azure, database SQL in Microsoft Fabric, Istanza gestita di SQL di Azure e Azure Synapse Analytics supportano la maschera dati dinamica (DDM). La funzione Maschera dati dinamica limita l'esposizione dei dati sensibili, nascondendoli agli utenti senza privilegi.
Dynamic Data Masking contribuisce a evitare l’accesso non autorizzato ai dati sensibili consentendo ai clienti di definire la quantità di dati sensibili da rivelare, in modo da avere un effetto minimo sul livello dell'applicazione. Si tratta di una funzionalità di sicurezza basata su criteri che consente di nascondere i dati sensibili nel set di risultati di una query in campi del database designati, senza modificare i dati contenuti nel database.
Ad esempio, un addetto all'assistenza di un call center potrebbe identificare una persona che chiama confermando alcuni caratteri del suo indirizzo e-mail, ma l'indirizzo e-mail completo non dovrebbe essere rivelato all'addetto all'assistenza. È possibile definire una regola di mascheramento che maschera l'intero indirizzo di posta elettronica nel set di risultati di qualsiasi query. Come altro esempio, è possibile definire una maschera dati appropriata per proteggere i dati personali, in modo che uno sviluppatore possa eseguire query negli ambienti di produzione per la risoluzione dei problemi senza violare le normative di conformità.
Nozioni fondamentali su Dynamic Data Masking
Per database SQL di Azure, è possibile configurare un criterio di maschera dati dinamica nel portale di Azure selezionando il riquadro Maschera dati dinamica in Sicurezza nel riquadro di configurazione database SQL.
Questa funzionalità non può essere impostata usando il portale di Azure per Istanza gestita di SQL o il database SQL in Fabric. Usare invece Transact-SQL (T-SQL), come nell'esempio di autorizzazione granulare in questo articolo. Per altre informazioni, vedere Maschera dati dinamica.
Criteri di mascheramento dei dati dinamici
Utenti SQL esclusi dalla maschera: Set di utenti SQL, che possono includere identità da Microsoft Entra ID, che ottengono dati non mascherati nei risultati della query SQL. Gli utenti con diritti amministrativi come l'amministratore del server, l'amministratore di Microsoft Entra e il ruolo db_owner possono visualizzare i dati originali senza maschera. Nota: si applica anche al ruolo amministratore di sistema in SQL Server.
Regole di mascheramento: un insieme di regole che definisce i campi designati a cui applicare la maschera e la funzione di mascheramento da usare. I campi designati possono essere definiti tramite uno schema, un nome di tabella e un nome di colonna del database.
Funzioni di mascheramento: un insieme di metodi che consente di controllare l'esposizione dei dati per scenari diversi.
Funzione di mascheramento Logica di mascheramento Predefinita Mascheramento completo in base ai tipi di dati dei campi designati
UsareXXXX(o meno) se le dimensioni del campo sono inferiori a 4 caratteri per i tipi di dati stringa (nchar, ntext, nvarchar).
Usare un valore zero per i tipi di dati numerici (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
Usare1900-01-01per i tipi di dati di data/ora (date, datetime2, datetime, datetimeoffset, smalldatetime, time).
Per sql_variant, viene usato il valore predefinito del tipo corrente.
Per XML, viene utilizzato il documento<masked />.
Usare un valore vuoto per tipi di dati speciali (timestamp, tabella, HierarchyID, uniqueidentifier, binary, image, varbinary e tipi spaziali).Carta di credito Metodo di mascheramento che espone le ultime quattro cifre dei campi designati e aggiunge una stringa costante come prefisso sotto forma di carta di credito. XXXX-XXXX-XXXX-1234E-mail Metodo di mascheramento che rende visibile la prima lettera e sostituisce il dominio con XXX.com usando un prefisso stringa costante sotto forma di indirizzo di posta elettronica. aXX@XXXX.comNumero casuale Metodo di mascheramento che genera un numero casuale secondo i limiti selezionati e i tipi di dati effettivi. Se i limiti designati sono uguali, la funzione maschera è un numero costante.
Testo personalizzato Metodo di mascheramento che rende visibile il primo e l'ultimo carattere e aggiunge una stringa di riempimento personalizzata al centro. Se la stringa originale è più corta del prefisso e del suffisso visibili, viene usata solo la stringa di riempimento. prefix[padding]suffix
Datetime Abilita la maschera granulare per le colonne di data/ora, ovvero datetime, datetime2, date, time, datetimeoffset e smalldatetime. È possibile mascherare componenti specifici, ad esempio anno ( datetime("Y")), mese (datetime("M")), giorno (datetime("D")), ora (datetime("h")), minuto (datetime("m")) o secondo (datetime("s")). Questa funzione viene applicata usando T-SQL.
Per esempio:
- Maschera anno:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- Filtro mese:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- Maschera minuto:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
Campi consigliati a cui applicare la maschera
Il motore di raccomandazioni DDM evidenzia determinati campi del database come potenzialmente sensibili e quindi come ottimi candidati per l'applicazione della maschera. Nel riquadro Dynamic Data Masking nel portale sono visibili le colonne consigliate per il proprio database. Selezionare Aggiungi maschera per una o più colonne, quindi selezionare la funzione di maschera appropriata e selezionare Salva per applicare la maschera per questi campi.
Gestire Dynamic Data Masking usando T-SQL
- Per creare una maschera dati dinamica, vedere Creare una maschera dati dinamica.
- Per aggiungere o modificare una maschera in una colonna esistente, vedere Aggiungere o modificare una maschera in una colonna esistente.
- Per concedere le autorizzazioni per visualizzare i dati senza maschera, vedere Concedere le autorizzazioni per visualizzare i dati non mascherati.
- Per escludere una maschera dati dinamica, vedere Eliminare una maschera dati dinamica.
Configurare la maschera dati dinamica per il database usando i cmdlet di PowerShell
Criteri di maschera dati
Regole di maschera dati
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
Configurare la maschera dati dinamica per il database usando l'API REST
È possibile usare l'API REST per gestire a livello programmatico i criteri e le regole di maschera dati. L'API REST pubblicata supporta le operazioni seguenti:
Criteri di maschera dati
- Crea o aggiorna: consente di creare o aggiornare un criterio di maschera dati del database.
- Ottieni: Ottiene un criterio di mascheramento dei dati del database.
Regole di maschera dati
- Crea o aggiorna: consente di creare o aggiornare una regola di maschera dati del database.
- Elenco per database: consente di ottenere un elenco di regole di maschera dati del database.
Autorizzazioni
È possibile configurare la maschera dati dinamica con i ruoli predefiniti seguenti:
Queste sono le azioni necessarie per usare la maschera dati dinamica:
Lettura/scrittura:
Microsoft.Sql/servers/databases/dataMaskingPolicies/*
Leggi:
Microsoft.Sql/servers/databases/dataMaskingPolicies/read
Scrivi:
Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Per altre informazioni sulle autorizzazioni quando si usa la maschera dati dinamica con il comando T-SQL, vedere Autorizzazioni.
Esempio di autorizzazione granulare
Impedire l'accesso non autorizzato ai dati sensibili e ottenere il controllo mascherandolo a un utente non autorizzato a livelli diversi del database. È possibile concedere o revocare UNMASK autorizzazioni a livello di database, a livello di schema, a livello di tabella o a livello di colonna a qualsiasi utente o ruolo del database. In combinazione con l'autenticazione di Microsoft Entra, UNMASK le autorizzazioni possono essere gestite per utenti, gruppi e applicazioni mantenute all'interno dell'ambiente Azure. L'autorizzazione UNMASK offre un modo granulare per controllare e limitare l'accesso non autorizzato ai dati archiviati nel database e migliorare la gestione della sicurezza dei dati.
Creare uno schema per contenere le tabelle utente:
CREATE SCHEMA Data; GOCreare una tabella con colonne mascherate:
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, FirstName VARCHAR (100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL, LastName VARCHAR (100) NOT NULL, Phone VARCHAR (12) MASKED WITH (FUNCTION = 'default()') NULL, Email VARCHAR (100) MASKED WITH (FUNCTION = 'email()') NOT NULL, DiscountCode SMALLINT MASKED WITH (FUNCTION = 'random(1, 100)') NULL, BirthDay DATETIME MASKED WITH (FUNCTION = 'default()') NULL );Inserisci dati di esempio:
INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) VALUES ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'), ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5, '1990-05-14 11:30:00'), ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50, '2004-02-29 14:20:10'), ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40, '1990-03-01 06:00:00');Creare uno schema per contenere le tabelle del servizio:
CREATE SCHEMA Service; GOCreare una tabella del servizio con colonne mascherate:
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );Inserisci dati di esempio:
INSERT INTO Service.Feedback (Feedback, Rating, Received_On) VALUES ('Good', 4, '2022-01-25 11:25:05'), ('Excellent', 5, '2021-12-22 08:10:07'), ('Average', 3, '2021-09-15 09:00:00');Creare utenti diversi nel database:
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GOConcedere autorizzazioni di lettura agli utenti nel database:
ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; ALTER ROLE db_datareader ADD MEMBER ServiceLead; ALTER ROLE db_datareader ADD MEMBER ServiceManager; ALTER ROLE db_datareader ADD MEMBER ServiceHead;Concedere autorizzazioni diverse
UNMASKagli utenti:Concedere l'autorizzazione a livello di colonna
UNMASKperServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;Concedere l'autorizzazione a livello di tabella
UNMASKaServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;Concedere l'autorizzazione a livello
UNMASKdi schema aServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Concedere l'autorizzazione di database a livello
UNMASKaServiceHead;GRANT UNMASK TO ServiceHead;
Eseguire query sui dati nel contesto dell'utente
ServiceAttendant:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Eseguire query sui dati nel contesto dell'utente
ServiceLead:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Eseguire query sui dati nel contesto dell'utente
ServiceManager:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Interrogare i dati nel contesto dell'utente
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;Per revocare
UNMASKle autorizzazioni, usare le istruzioni T-SQL seguenti:REVOKE UNMASK ON Data.Membership (FirstName) FROM ServiceAttendant; REVOKE UNMASK ON Data.Membership FROM ServiceLead; REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; REVOKE UNMASK FROM ServiceHead;