Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:Azure SQL Database
Azure SQL Managed Instance
Azure 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
GebruikXXXX(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).
Gebruik1900-01-01voor 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-1234E-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.comWillekeurig 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")').
Aanbevolen velden om te maskeren
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
- Zie Een dynamisch gegevensmasker maken als u een dynamisch gegevensmasker wilt maken.
- Zie Een masker toevoegen of bewerken in een bestaande kolom als u een masker wilt toevoegen of bewerken in een bestaande kolom.
- Als u machtigingen wilt verlenen om niet-gemaskeerde gegevens weer te geven, raadpleegt u Machtigingen verlenen om niet-gemaskeerde gegevens weer te geven.
- Zie Een dynamisch gegevensmasker verwijderen als u een dynamisch gegevensmasker wilt verwijderen.
Dynamische gegevensmaskering instellen voor uw database met behulp van PowerShell-cmdlets
Beleid voor gegevensmaskering
Regels voor gegevensmaskering
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
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.
Maak een schema dat gebruikerstabellen bevat:
CREATE SCHEMA Data; GOTabel 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 );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');Schema maken voor het bevatten van servicetabellen:
CREATE SCHEMA Service; GOServicetabel 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 );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');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; GOLeesmachtigingen 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;UNMASKVerschillende machtigingen verlenen aan gebruikers:Machtiging op kolomniveau
UNMASKverlenen aanServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;Machtiging op tabelniveau
UNMASKverlenen aanServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;Machtiging op schemaniveau
UNMASKverlenen aanServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;Machtiging op databaseniveau
UNMASKverlenen aanServiceHead;GRANT UNMASK TO ServiceHead;
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;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;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;Vragen op de gegevens in de context van gebruiker
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;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;