Dynamische Datenmaskierung

GILT FÜR: Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics

Azure SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics unterstützen die dynamische Datenmaskierung. Die dynamische Datenmaskierung beschränkt die Offenlegung vertraulicher Daten, indem sie für nicht berechtigte Benutzer maskiert werden.

Die dynamische Datenmaskierung hilft beim Verhindern des unbefugten Zugriffs auf sensible Daten, indem Kunden festlegen dürfen, welcher Anteil der sensiblen Daten mit minimalen Auswirkungen auf die Anwendungsschicht offengelegt wird. Es handelt sich um eine richtlinienbasierte Sicherheitsfunktion, die die sensiblen Daten im Resultset einer Abfrage in festgelegten Datenbankfeldern ausblendet, während die Daten in der Datenbank nicht geändert werden.

Beispielsweise könnte ein Servicemitarbeiter in einem Callcenter einen Anrufer identifizieren, indem er mehrere Zeichen seiner E-Mail-Adresse bestätigt. Die ganze E-Mail-Adresse sollte ihm aber nicht offengelegt werden. Es kann eine Maskierungsregel definiert werden, die alle E-Mail-Adressen im Resultset einer beliebigen Abfrage maskiert. In einem weiteren Beispiel kann eine entsprechende Datenmaske zum Schutz personenbezogener Daten definiert werden, damit ein Entwickler Produktionsumgebungen zu Problembehandlungszwecken abfragen kann, ohne gegen Vorschriften zu verstoßen.

Grundlegendes zur dynamischen Datenmaskierung

Sie richten eine Richtlinie für die dynamische Datenmaskierung im Azure-Portal durch Auswählen des Blatts Dynamische Datenmaskierung unter Sicherheit im Konfigurationsbereich Ihrer SQL-Datenbank-Instanz ein. Diese Funktion kann nicht über das Portal für SQL Managed Instance eingestellt werden. Weitere Informationen finden Sie unter Dynamic Data Masking.

Richtlinie für die dynamische Datenmaskierung

  • Von der Maskierung ausgeschlossene SQL-Benutzer: Eine Gruppe von SQL-Benutzern oder Azure AD-Identitäten, die in den Ergebnissen von SQL-Abfragen Daten ohne Maskierung erhalten. Benutzer mit Administratorrechten sind immer von der Maskierung ausgeschlossen und bekommen Originaldaten ohne Maskierung angezeigt.
  • Maskierungsregeln: Eine Gruppe von Regeln, die die zu maskierenden Felder und verwendete Maskierungsfunktion definieren. Mithilfe eines Datenbankschemanamens, Tabellennamens und Spaltennamens können die vorgesehenen Felder bestimmt werden.
  • Maskierungsfunktionen: Eine Reihe von Methoden, die die Anzeige von Daten in verschiedenen Szenarios steuern.
Maskierungsfunktion Maskierungslogik
Standard Vollständige Maskierung anhand der Datentypen der festgelegten Felder

• XXXX oder weniger X-Zeichen verwenden, wenn die Größe des Felds weniger als vier Zeichen für Zeichenfolgendatentypen (nchar, ntext, nvarchar) beträgt.
• Für numerische Datentypen (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real) einen Nullwert verwenden.
• Für Datum/Uhrzeit-Datentypen (date, datetime2, datetime, datetimeoffset, smalldatetime, time) 01-01-1900 verwenden.
• Für SQL-Varianten wird der Standardwert des aktuellen Typs verwendet.
• Für XML wird das Dokument <masked/> verwendet.
• Für spezielle Datentypen (timestamp table, hierarchyid, GUID, binary, image, räumliche varbinary-Typen) einen leeren Wert verwenden.
Kreditkarte Maskierungsmethode, die die letzten vier Ziffern der festgelegten Felder anzeigt und eine Konstantenzeichenfolge als Präfix in Form einer Kreditkarte hinzufügt.

XXXX-XXXX-XXXX-1234
E-Mail Maskierungsmethode, die den ersten Buchstaben und die Domäne durch „XXX.com“ ersetzt und dafür eine Konstantenzeichenfolge als Präfix in Form einer E-Mail-Adresse verwendet.

aXX@XXXX.com
Zufallszahl Maskierungsmethode, die eine Zufallszahl entsprechend den ausgewählten Grenzen und den tatsächlichen Datentypen generiert. Wenn die festgelegten Grenzen gleich sind, ist die Maskierungsfunktion eine konstante Zahl.

Screenshot that shows the masking method for generating a random number.
Benutzerdefinierter Text Maskierungsmethode, die die ersten und letzten Zeichen anzeigt und in der Mitte eine benutzerdefinierte Auffüllzeichenfolge hinzufügt. Wenn die ursprüngliche Zeichenfolge kürzer als das verfügbar gemachte Präfix und Suffix ist, wird nur die Auffüllzeichenfolge verwendet.
prefix[padding]suffix

Navigation pane

Von der DDM-Empfehlungs-Engine werden bestimmte Felder Ihrer Datenbank als potenzielle Felder mit vertraulichen Daten angegeben, bei denen es sich um gute Kandidaten für die Maskierung handelt. Auf dem Blatt „Dynamische Datenmaskierung“ im Portal werden die empfohlenen Spalten für Ihre Datenbank angezeigt. Sie können einfach für eine oder mehrere Spalten auf Maske hinzufügen und dann auf Speichern klicken, um eine Maskierung auf diese Felder anzuwenden.

Verwalten der dynamischen Datenmaskierung mit T-SQL

Einrichten der dynamischen Datenmaskierung für Ihre Datenbank mithilfe von PowerShell-Cmdlets

Datenmaskierungsrichtlinien

Datenmaskierungsregeln

Einrichten der dynamischen Datenmaskierung für Ihre Datenbank mithilfe der REST-API

Sie können die REST-API verwenden, um Datenmaskierungsrichtlinien und -regeln programmgesteuert zu verwalten. Die veröffentlichte REST-API unterstützt die folgenden Vorgänge:

Datenmaskierungsrichtlinien

  • Erstellen oder aktualisieren: Erstellt oder aktualisiert eine Datenbank-Datenmaskierungsrichtlinie.
  • Get (Abrufen): Ruft eine Datenbank-Datenmaskierungsrichtlinie ab.

Datenmaskierungsregeln

Berechtigungen

Dies sind die eingebauten Rollen, mit denen die dynamische Datenmaskierung konfiguriert wird:

Dies sind die erforderlichen Maßnahmen zur Verwendung der dynamischen Datenmaskierung:

Read/Write:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/* Lesen:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/lesen schreiben:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Um mehr über Berechtigungen bei der Verwendung von dynamischer Datenmaskierung mit dem T-SQL-Befehl zu erfahren, siehe Berechtigungen

Beispiel für präzise Berechtigung

Verhindern Sie nicht autorisierten Zugriff auf vertrauliche Daten und gewinnen Sie die Kontrolle, indem Sie sie für nicht autorisierte Benutzer auf verschiedenen Ebenen der Datenbank maskieren. Sie können die UNMASK-Berechtigung auf Datenbankebene, Schemaebene, Tabellenebene oder auf Spaltenebene für einen Benutzer erteilen oder widerrufen. Die Verwendung der UNMASK-Berechtigung bietet eine präzisere Möglichkeit, nicht autorisierten Zugriff auf die in der Datenbank gespeicherten Daten zu kontrollieren und einzuschränken und die Datensicherheitsverwaltung zu verbessern.

  1. Erstellen eines Schemas für Benutzertabellen

    CREATE SCHEMA Data; 
    GO 
    
  2. Erstellen einer Tabelle mit maskierten Spalten

    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. Einfügen von Beispieldaten

    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. Erstellen eines Schemas für Diensttabellen

    CREATE SCHEMA Service; 
    GO 
    
  5. Erstellen einer Diensttabelle mit maskierten Spalten

    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. Einfügen von Beispieldaten

    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. Erstellen verschiedener Benutzer in der Datenbank

    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. Erteilen von Leseberechtigungen für die Benutzer in der Datenbank

    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. Erteilen verschiedener UNMASK-Berechtigungen für Benutzer

    --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. Abfragen der Daten im Kontext des ServiceAttendant-Benutzers

    EXECUTE AS USER='ServiceAttendant';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  11. Abfragen der Daten im Kontext des ServiceLead-Benutzers

    EXECUTE AS USER='ServiceLead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  12. Abfragen der Daten im Kontext des ServiceManager-Benutzers

    EXECUTE AS USER='ServiceManager';  
    SELECT MemberID,FirstName,LastName,Phone,Email FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  13. Abfragen der Daten im Kontext des ServiceHead-Benutzers

    EXECUTE AS USER='ServiceHead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT;  
    
  14. Verwenden Sie zum Widerrufen von UNMASK-Berechtigungen die folgenden T-SQL-Anweisungen:

    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; 
    

Weitere Informationen