Dynamische gegevensmaskering

Van toepassing op: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (alleen toegewezen SQL-pools)

Azure SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics ondersteunen dynamische gegevensmaskering. 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 alle e-mailadressen in de resultatenset van elke query worden 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.

Basisbeginselen van dynamische gegevensmaskering

U stelt een beleid voor dynamische gegevensmaskering in Azure Portal in door de blade Dynamische gegevensmaskering te selecteren onder Beveiliging in het configuratiedeelvenster van SQL Database. Deze functie kan niet worden ingesteld met behulp van de portal voor SQL Managed Instance. Zie Dynamische gegevensmaskering voor meer informatie.

Beleid voor dynamische gegevensmaskering

  • SQL-gebruikers die zijn uitgesloten van maskering: een set SQL-gebruikers, die identiteiten kunnen bevatten van Microsoft Entra-id (voorheen Azure Active Directory), die ontmaskerde gegevens in de SQL-queryresultaten ophalen. 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 die de aangewezen velden definiĆ«ren 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 bepaald.
Maskeringsfunctie Maskeringslogica
Standaard Volledige maskering op basis van de gegevenstypen van de aangewezen velden

* Gebruik XXXX (of minder) als de grootte van het veld minder dan 4 tekens is voor tekenreeksgegevenstypen (nchar, ntext, nvarchar).
* Gebruik een nulwaarde voor numerieke gegevenstypen (bigint, bit, decimaal, int, geld, numeriek, smallint, smallmoney, tinyint, float, real).
* Gebruiken 1900-01-01 voor datum/tijd-gegevenstypen (datum, datum/tijd2, datum/tijd, datum/tijd, smalldatetime, tijd).
* Voor sql_variant wordt de standaardwaarde van het huidige type gebruikt.
* Voor XML wordt het document <masked /> gebruikt.
* Gebruik een lege waarde voor speciale gegevenstypen (timestamp, tabel, HierarchyID, uniqueidentifier, binary, image, varbinary en ruimtelijke typen).
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-mailen 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.

Screenshot that shows the masking method for generating a random number.
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

Screenshot of the navigation pane.

De DDM-aanbevelingen-engine 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.

Bevoegdheden

Dit zijn de ingebouwde rollen voor het configureren van dynamische gegevensmaskering:

Dit zijn de vereiste acties voor het gebruik van dynamische gegevensmaskering:

Lezen/schrijven:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/*

Lezen:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read

Schrijven:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Zie Machtigingen voor meer informatie over machtigingen bij het gebruik van dynamische gegevensmaskering met de T-SQL-opdracht

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 UNMASK-machtigingen verlenen of intrekken op databaseniveau, schemaniveau, tabelniveau of op kolomniveau voor elke databasegebruiker of -rol. In combinatie met Microsoft Entra-verificatie kunnen UNMASK-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 het beheer van gegevensbeveiliging 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 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. 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 PRIMARY KEY CLUSTERED,
        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. Verschillende UNMASK-machtigingen verlenen aan gebruikers:

    --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. Voer een query uit op de gegevens in de context van de 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 de 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 de 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. Query's uitvoeren op de gegevens in de context van de 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 UNMASK-machtigingen wilt intrekken, 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;
    

Zie ook