Delen via


Dynamische gegevensmaskering

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

Azure SQL Database, SQL Database in Microsoft Fabric, Azure SQL Managed Instance en Azure Synapse Analytics bieden ondersteuning voor dynamische gegevensmaskering (DDM). 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.

Basisbeginselen van dynamische gegevensmaskering

Voor Azure SQL Database stelt u een beleid voor dynamische gegevensmaskering in Azure Portal in door het deelvenster Dynamische gegevensmaskering te selecteren onder Beveiliging in het configuratiedeelvenster van SQL Database.

Deze functie kan niet worden ingesteld met behulp van Azure Portal voor SQL Managed Instance of SQL Database in Fabric. Gebruik in plaats daarvan Transact-SQL (T-SQL), zoals in het gedetailleerde machtigingsvoorbeeld 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 grootte van het veld minder dan 4 tekens is voor tekenreeksgegevenstypen (nchar, ntext, nvarchar).
    Gebruik een nulwaarde voor numerieke gegevenstypen (bigint, bit, decimal, int, money, numeriek, smallint, smallmoney, tinyint, float, real).
    Gebruik 1900-01-01 voor date/time-gegevenstypen (date, datetime2, datetime, datetimeoffset, 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-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.

    Schermopname van de maskeringsmethode voor het genereren van een willekeurig 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
    Schermopname van het navigatiedeelvenster.
    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

U kunt dynamische gegevensmaskering configureren met de volgende ingebouwde rollen:

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 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;