Dynamic data masking in Azure Synapse Analytics dedicated SQL pools

Azure Synapse Analytics ondersteunt dynamische datamaskering (DDM) in dedicated SQL pools. Met dynamische gegevensmaskering wordt de blootstelling van gevoelige gegevens beperkt door deze gegevens te maskeren voor niet-gemachtigde gebruikers.

Dynamische gegevensmaskering helpt onbevoegde toegang tot gevoelige gegevens te voorkomen door klanten in staat te stellen aan te geven hoeveel van de gevoelige gegevens moeten worden weergegeven met minimale gevolgen voor de toepassingslaag. Het is een beveiligingsfunctie op basis van beleid waarmee de gevoelige gegevens worden verborgen in de resultatenset van een query boven aangewezen databasevelden, terwijl de gegevens in de database niet worden gewijzigd.

Een servicevertegenwoordiger in een callcenter kan bijvoorbeeld een beller identificeren door verschillende tekens van het e-mailadres te bevestigen, maar het volledige e-mailadres mag niet worden weergegeven aan de servicevertegenwoordiger. Er kan een maskeringsregel worden gedefinieerd waarmee het hele e-mailadres in de resultatenset van elke query wordt gemaskeerd. Een ander voorbeeld is dat een geschikt gegevensmasker kan worden gedefinieerd om persoonsgegevens te beveiligen, zodat een ontwikkelaar query's kan uitvoeren op productieomgevingen voor probleemoplossingsdoeleinden zonder dat de nalevingsregels worden overtreden.

Note

Dynamische datamasking wordt ondersteund in Azure Synapse dedicated SQL-pools, maar niet voor Apache Spark-pools en serverless SQL-pools.

Basisbeginselen van dynamische gegevensmaskering

Je stelt een dynamisch datamaskerbeleid in in het Azure-portaal door het Dynamic Data Masking-paneel onder Security in je configuratiescherm te selecteren. Je kunt ook Transact-SQL (T-SQL) gebruiken, zoals in het voorbeeld Granular permission example in dit artikel. Zie Dynamische gegevensmaskering voor meer informatie.

Beleid voor dynamische gegevensmaskering

  • SQL-gebruikers uitgesloten van maskering: Een set SQL-gebruikers, waarbij identiteiten van Microsoft Entra ID kunnen zijn inbegrepen, die niet-gemaskeerde gegevens krijgen in de SQL-queryresultaten. Gebruikers met beheerdersrechten zoals serverbeheerder, Microsoft Entra-beheerder en db_owner rol kunnen de oorspronkelijke gegevens zonder masker bekijken. (Opmerking: het is ook van toepassing op de rol sysadmin in SQL Server)

  • Maskeringsregels: Een set regels waarmee de aangewezen velden worden gedefinieerd die moeten worden gemaskeerd en de maskeringsfunctie die wordt gebruikt. De aangewezen velden kunnen worden gedefinieerd met behulp van een databaseschemanaam, tabelnaam en kolomnaam.

  • Maskeringsfuncties: Een set methoden waarmee de blootstelling van gegevens voor verschillende scenario's wordt beheerd.

    Maskeringsfunctie Maskeringslogica
    Standaard Volledige maskering op basis van de gegevenstypen van de aangewezen velden

    Gebruik XXXX (of minder) als de veldgrootte minder dan 4 tekens is voor string-datatypes (nchar, nvarchar).
    Gebruik een nulwaarde voor numerieke gegevenstypen (bigint, bit, decimal, int, money, numeriek, smallint, smallmoney, tinyint, float, real).
    *Gebruik 1900-01-01 voor datum-/tijdgegevenstypen (date, datetime2, datetime, datetimeoffset, smalldatetime, time).
    Creditcard Maskeringsmethode, waarmee de laatste vier cijfers van de aangewezen velden worden weergegeven en een constante tekenreeks als voorvoegsel wordt toegevoegd in de vorm van een creditcard.

    XXXX-XXXX-XXXX-1234
    E-mail Maskeringsmethode, waarmee de eerste letter wordt weergegeven en het domein wordt vervangen door XXX.com met behulp van een constant tekenreeksvoorvoegsel in de vorm van een e-mailadres.

    aXX@XXXX.com
    Willekeurig getal Maskeringsmethode, waarmee een willekeurig getal wordt gegenereerd op basis van de geselecteerde grenzen en de werkelijke gegevenstypen. Als de aangewezen grenzen gelijk zijn, is de maskeringsfunctie een constant getal.
    Aangepaste tekst Maskeringsmethode, waarmee de eerste en laatste tekens worden weergegeven en een aangepaste opvullingstekenreeks in het midden wordt toegevoegd. Als de oorspronkelijke tekenreeks korter is dan het weergegeven voorvoegsel en achtervoegsel, wordt alleen de opvullingstekenreeks gebruikt.

    prefix[padding]suffix
    Datum/tijd Maakt gedetailleerde maskering mogelijk voor datum-/tijdkolommen, namelijk datum/tijd, datum/tijd2, datum, tijd, datetimeoffset en smalldatetime. U kunt specifieke onderdelen maskeren, zoals jaar (datetime("Y")), maand (datetime("M")), dag (datetime("D")), uur (datetime("h")), minuut (datetime("m")) of seconde (datetime("s")). U past deze functie toe met behulp van T-SQL.

    Voorbeeld:

    - Masker jaar: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
    - Masker maand: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
    - Mask minuut: ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').

De DDM-aanbevelingengine markeert bepaalde velden uit uw database als mogelijk gevoelige velden, wat mogelijk goede kandidaten zijn voor maskering. In het deelvenster Dynamische gegevensmaskering in de portal ziet u de aanbevolen kolommen voor uw database. Selecteer Masker toevoegen voor een of meer kolommen, selecteer vervolgens de juiste maskeringsfunctie en selecteer Opslaan om masker voor deze velden toe te passen.

Dynamische gegevensmaskering beheren met T-SQL

Dynamische gegevensmaskering instellen voor uw database met behulp van PowerShell-cmdlets

Beleid voor gegevensmaskering

Regels voor gegevensmaskering

Dynamische gegevensmaskering instellen voor uw database met behulp van de REST API

U kunt de REST API gebruiken om beleid en regels voor gegevensmaskering programmatisch te beheren. De gepubliceerde REST API ondersteunt de volgende bewerkingen:

Beleid voor gegevensmaskering

  • Maken of bijwerken: hiermee maakt of bijwerkt u een beleid voor databasegegevensmaskering.
  • Ophalen: Hiermee haalt u een beleid voor databasegegevensmaskering op.

Regels voor gegevensmaskering

  • Maken of bijwerken: hiermee wordt een databasegegevensmaskeringsregel gemaakt of bijgewerkt.
  • List By Database: Hiermee haalt u een lijst op met regels voor het maskeren van databasegegevens.

Permissions

Voor meer informatie over permissies bij het gebruik van dynamische datamasking met een T-SQL-commando, zie Permissions.

Gedetailleerd machtigingsvoorbeeld

Voorkom onbevoegde toegang tot gevoelige gegevens en krijg controle door deze te maskeren voor een onbevoegde gebruiker op verschillende niveaus van de database. U kunt machtigingen verlenen of intrekken UNMASK op databaseniveau, schemaniveau, tabelniveau of op kolomniveau voor elke databasegebruiker of -rol. In combinatie met Microsoft Entra-verificatie UNMASK kunnen machtigingen worden beheerd voor gebruikers, groepen en toepassingen die worden onderhouden in uw Azure-omgeving. De UNMASK machtiging biedt een gedetailleerde manier om onbevoegde toegang tot gegevens die zijn opgeslagen in de database te beheren en te beperken en gegevensbeveiligingsbeheer te verbeteren.

  1. Maak een schema dat gebruikerstabellen bevat:

    CREATE SCHEMA Data;
    GO
    
  2. Tabel maken met gemaskeerde kolommen:

    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
    );
    
  3. Voorbeeldgegevens invoegen:

    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. Schema maken voor het bevatten van servicetabellen:

    CREATE SCHEMA Service;
    GO
    
  5. Servicetabel maken met gemaskeerde kolommen:

    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
    );
    
  6. Voorbeeldgegevens invoegen:

    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. Maak verschillende gebruikers in de 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. Leesmachtigingen verlenen aan de gebruikers in de 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. UNMASK Verschillende machtigingen verlenen aan gebruikers:

    • Machtiging op kolomniveau UNMASK verlenen aan ServiceAttendant:

      GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;
      
    • Machtiging op tabelniveau UNMASK verlenen aan ServiceLead:

      GRANT UNMASK ON Data.Membership TO ServiceLead;
      
    • Machtiging op schemaniveau UNMASK verlenen aan ServiceManager:

      GRANT UNMASK ON SCHEMA::Data TO ServiceManager;
      GRANT UNMASK ON SCHEMA::Service TO ServiceManager;
      
    • Machtiging op databaseniveau UNMASK verlenen aan ServiceHead;

      GRANT UNMASK TO ServiceHead;
      
  10. Voer een query uit op de gegevens in de context van gebruiker ServiceAttendant.

    EXECUTE AS USER = 'ServiceAttendant';
    
    SELECT MemberID,
           FirstName,
           LastName,
           Phone,
           Email,
           BirthDay
    FROM Data.Membership;
    SELECT MemberID,
           Feedback,
           Rating
    FROM Service.Feedback;
    
    REVERT;
    
  11. Voer een query uit op de gegevens in de context van gebruiker ServiceLead.

    EXECUTE AS USER = 'ServiceLead';
    
    SELECT MemberID,
           FirstName,
           LastName,
           Phone,
           Email,
           BirthDay
    FROM Data.Membership;
    SELECT MemberID,
           Feedback,
           Rating
    FROM Service.Feedback;
    
    REVERT;
    
  12. Voer een query uit op de gegevens in de context van gebruiker ServiceManager.

    EXECUTE AS USER = 'ServiceManager';
    
    SELECT MemberID,
           FirstName,
           LastName,
           Phone,
           Email,
           BirthDay
    FROM Data.Membership;
    SELECT MemberID,
           Feedback,
           Rating
    FROM Service.Feedback;
    
    REVERT;
    
  13. Vragen op de gegevens in de context van gebruiker ServiceHead

    EXECUTE AS USER = 'ServiceHead';
    
    SELECT MemberID,
           FirstName,
           LastName,
           Phone,
           Email,
           BirthDay
    FROM Data.Membership;
    SELECT MemberID,
           Feedback,
           Rating
    FROM Service.Feedback;
    
    REVERT;
    
  14. Als u machtigingen wilt intrekken UNMASK , gebruikt u de volgende T-SQL-instructies:

    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;