Maschera dati dinamica

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

Azure SQL Database, Istanza gestita di SQL di Azure e Azure Synapse Analytics supportano la maschera dati dinamica. La maschera dati dinamica limita l'esposizione dei dati sensibili nascondendoli agli utenti senza privilegi.

Il mascheramento dei dati dinamici impedisce l'accesso non autorizzato ai dati sensibili consentendo agli utenti di definire la quantità di dati sensibili da rivelare, con un impatto 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 di database designati, senza modificare i dati nel database.

Ad esempio, un rappresentante del servizio in un call center potrebbe identificare un chiamante confermando diversi caratteri del proprio indirizzo di posta elettronica, ma l'indirizzo di posta elettronica completo non deve essere rivelato al rappresentante del servizio. È possibile definire una regola di mascheramento che maschera tutti gli indirizzi 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

È possibile configurare un criterio di maschera dati dinamica nel portale di Azure selezionando il pannello Maschera dati dinamica in Sicurezza nel riquadro di configurazione database SQL. Questa funzionalità non può essere impostata usando il portale per Istanza gestita di SQL. Per altre informazioni, vedere Dynamic Data Masking.

Criteri di mascheramento dei dati dinamici

  • Utenti SQL esclusi dalla maschera: set di utenti SQL o identità Azure AD che ricevono dati visibili nei risultati delle query SQL. Gli utenti con privilegi di amministratore sono sempre esclusi dalla maschera e possono visualizzare i dati originali senza maschera.
  • Regole di maschera: set di regole che definiscono i campi designati a cui applicare la maschera e la funzione maschera da usare. I campi designati possono essere definiti tramite uno schema, un nome di tabella e un nome di colonna del database.
  • Funzioni maschera : set di metodi che consentono di controllare l'esposizione dei dati per scenari diversi.
Funzione maschera Maschera logica
Default Maschera completa in base ai tipi di dati dei campi designati

• Usare XXXX o un numero minore di X se la dimensione del campo è inferiore a 4 caratteri per i tipi di dati di stringa (nchar, ntext, nvarchar).
• Usare un valore pari a zero per i tipi di dati numerici (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
• Usare 01-01-1900 per i tipi di dati 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 <mascherato/> .
• Usare un valore vuoto per i tipi di dati speciali (timestamp table, hierarchyid, GUID, binary, image, varbinary spatial types).
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-1234
Posta elettronica Metodo di mascheramento, che espone la prima lettera e sostituisce il dominio con XXX.com utilizzando un prefisso di stringa costante sotto forma di indirizzo di posta elettronica.

aXX@XXXX.com
Numero 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.

Screenshot che mostra il metodo di mascheramento per la generazione di un numero casuale.
Testo personalizzato Metodo di mascheramento, che espone i primi e gli ultimi caratteri e aggiunge una stringa di spaziatura interna personalizzata al centro. Se la stringa originale è più corta del prefisso e del suffisso visibili, viene usata solo la stringa di riempimento.
prefisso[riempimento]suffisso

Riquadro di spostamento

Il motore di raccomandazioni DDM evidenzia determinati campi del database come potenzialmente sensibili e quindi come ottimi candidati per l'applicazione della maschera. Nel pannello Maschera dati dinamica nel portale saranno visibili le colonne consigliate per il proprio database. È sufficiente fare clic su Aggiungi maschera per una o più colonne e quindi su Salva per applicare una maschera a questi campi.

Gestire la maschera dati dinamica con T-SQL

Configurare la maschera dati dinamica per il database usando i cmdlet di PowerShell

Criteri di maschera dati

Regole di maschera dati

Configurare la maschera dati dinamica per il database usando l'API REST

È possibile usare l'API REST per gestire a livello di codice i criteri e le regole di maschera dati. L'API REST pubblicata supporta le operazioni seguenti:

Criteri di maschera dati

  • Crea o aggiorna: crea o aggiorna un criterio di maschera dati del database.
  • Get: ottiene un criterio di maschera dati del database.

Regole di maschera dati

Autorizzazioni

Questi sono i ruoli predefiniti per configurare la maschera dati dinamica:

Queste sono le azioni necessarie per usare la maschera dati dinamica:

Lettura/Scrittura:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/* Read:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read Write:
  • 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 diversi livelli del database. È possibile concedere o revocare l'autorizzazione UNMASK a livello di database, a livello di schema, di tabella o a livello di colonna a un utente. L'uso dell'autorizzazione UNMASK offre un modo più granulare per controllare e limitare l'accesso non autorizzato ai dati archiviati nel database e migliorare la gestione della sicurezza dei dati.

  1. Creare uno schema per contenere tabelle utente

    CREATE SCHEMA Data; 
    GO 
    
  2. Creare una tabella con colonne mascherate

    CREATE TABLE Data.Membership (
      MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
      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
    ); 
    
  3. Inserire 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'); 
    
  4. Creare uno schema per contenere tabelle del servizio

    CREATE SCHEMA Service; 
    GO 
    
  5. Creare una tabella di servizio con colonne mascherate

    CREATE TABLE Service.Feedback ( 
        MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
        Feedback varchar(100) MASKED WITH (FUNCTION = 'default()') NULL, 
        Rating int MASKED WITH (FUNCTION='default()'), 
        Received_On datetime 
        );
    
  6. Inserire 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'); 
    
  7. 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;  
    GO
    
  8. Concedere le 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; 
    
  9. Concedere autorizzazioni UNMASK diverse agli utenti

    --Grant column level UNMASK permission to ServiceAttendant  
    GRANT UNMASK ON Data.Membership(FirstName) TO ServiceAttendant;  
    
    -- Grant table level UNMASK permission to ServiceLead  
    GRANT UNMASK ON Data.Membership TO ServiceLead;  
    
    -- Grant schema level UNMASK permission to ServiceManager  
    GRANT UNMASK ON SCHEMA::Data TO ServiceManager;  
    GRANT UNMASK ON SCHEMA::Service TO ServiceManager;  
    
    --Grant database level UNMASK permission to ServiceHead;  
    GRANT UNMASK TO ServiceHead;
    
  10. 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; 
    
  11. 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; 
    
  12. Eseguire query sui dati nel contesto dell'utente ServiceManager

    EXECUTE AS USER='ServiceManager';  
    SELECT MemberID,FirstName,LastName,Phone,Email FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  13. Eseguire query sui dati nel contesto dell'utente ServiceHead

    EXECUTE AS USER='ServiceHead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT;  
    
  14. Per revocare le autorizzazioni UNMASK, 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; 
    

Vedere anche