Freigeben über


Dynamische Datenmaskierung in Fabric-Data Warehousing

Gilt für:✅ SQL-Analyseendpunkt und Warehouse in Microsoft Fabric

Dynamische Datenmaskierung schränkt die Offenlegung sensibler Daten ein, indem diese für nicht berechtigte Benutzer maskiert werden. Sie kann den Entwurf und die Sicherheitscodierung in Ihrer Anwendung erheblich vereinfachen.

Die dynamische Datenmaskierung hilft, die unbefugte Einsichtnahme in sensible Daten zu verhindern, indem Administratoren festlegen können, wie viele sensible Daten mit minimalen Auswirkungen auf die Anwendungsschicht offengelegt werden sollen. Die dynamische Datenmaskierung kann für bestimmte Datenbankfelder konfiguriert werden, um sensible Daten in den Ergebnismengen von Abfragen zu verbergen. Bei dynamischer Datenmaske werden die Daten in der Datenbank nicht geändert, sodass sie mit vorhandenen Anwendungen verwendet werden können, da Maskierungsregeln auf Abfrageergebnisse angewendet werden. Viele Clientanwendungen können sensible Daten maskieren, ohne vorhandene Abfragen zu ändern.

  • Eine zentrale Datenmaskierungsrichtlinie wirkt sich direkt auf vertrauliche Felder in der Datenbank aus.
  • Festlegen berechtigter Benutzer oder Rollen, die Zugriff auf vertrauliche Daten haben.
  • Die dynamische Datenmaskierung bietet Funktionen zur vollständigen und teilweisen Maskierung sowie eine Zufallsmaske für numerische Daten.
  • Zum Definieren und Verwalten von Masken werden einfache Transact-SQL-Befehle verwendet.

Der Zweck der dynamischen Datenmaskierung besteht darin, die Offenlegung sensibler Daten zu beschränken, indem Benutzer an der Anzeige von Daten gehindert werden, auf die sie keinen Zugriff haben sollen. Die dynamische Datenmaskierung ist nicht darauf ausgerichtet, Datenbankbenutzer daran zu hindern, eine direkte Verbindung mit der Datenbank herzustellen und umfassende Abfragen auszuführen, die Teile der vertraulichen Daten verfügbar machen.

Dynamische Datenmasken ergänzen sich zu anderen Fabric-Sicherheitsfeatures wie Sicherheit auf Spaltenebene und Sicherheit auf Zeilenebene. Es wird dringend empfohlen, diese Datenschutzfeatures zusammen zu verwenden, um die vertraulichen Daten in der Datenbank zu schützen.

Definieren eines dynamischen Datenformats

Eine Maskierungsregel kann für eine Spalte in einer Tabelle definiert werden, um die Daten in dieser Spalte unkenntlich zu machen. Es stehen vier Arten von Masken zur Verfügung.

Funktion Beschreibung Beispiele
Standard Die vollständige Maskierung gemäß der Datentypen der festgelegten Felder.

Für String-Datentypen verwenden Sie XXXX (oder weniger) wenn die Größe des Feldes weniger als 4 Zeichen beträgt (char, nchar, varchar, nvarchar, text, ntext).

Verwenden Sie für numerische Datentypen den Wert 0 (null) (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).

Für Datums- und Zeitdatentypen verwenden Sie 1900-01-01 00:00:00.0000000 (date, datetime2, datetime, datetimeoffset, smalldatetime, time).

Verwenden Sie für binäre Datentypen ein Einzelbyte des ASCII-Werts 0 (binary, varbinary, image).
Beispielsyntax der Spaltendefinition: Phone# varchar(12) MASKED WITH (FUNCTION = 'default()') NULL

Beispiel für die alter-Syntax: ALTER COLUMN Gender ADD MASKED WITH (FUNCTION = 'default()')
E‑Mail Eine Maskierungsmethode, die den ersten Buchstaben einer E-Mail-Adresse und das konstante Suffix „.com“ in Form einer E-Mail-Adresse verfügbar macht. aXXX@XXXX.com. Beispielsyntax der Definition: Email varchar(100) MASKED WITH (FUNCTION = 'email()') NULL

Beispiel für die alter-Syntax: ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
Zufällig Eine zufällige Maskierungsfunktion, die für alle numerischen Typen verwendet werden kann, um den ursprünglichen Wert mit einem zufälligen Wert innerhalb eines bestimmten Bereichs zu maskieren. Beispielsyntax der Definition: Account_Number bigint MASKED WITH (FUNCTION = 'random([start range], [end range])')

Beispiel für die alter-Syntax: ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Benutzerdefinierte Zeichenfolge Eine Maskierungsmethode, die den ersten und letzten Buchstaben verfügbar macht und in der Mitte eine benutzerdefinierte Zeichenfolge zur Auffüllung hinzufügt. prefix,[padding],suffix

Wenn der ursprüngliche Wert zu kurz ist, um die gesamte Maske zu vervollständigen, wird ein Teil des Präfixes oder Suffixes nicht angezeigt.
Beispielsyntax der Definition: FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(prefix,[padding],suffix)') NULL

Beispiel für die alter-Syntax: ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

Dadurch wird eine Telefonnummer wie 555.123.1234 zu 5XXXXXXX umgewandelt.

Weiteres Beispiel:

ALTER COLUMN [Phone Number] ADD MASKED WITH (FUNCTION = 'partial(5,"XXXXXXX",0)')

Dadurch wird eine Telefonnummer wie 555.123.1234 zu 555.1XXXXXXX umgewandelt.

Weitere Beispiele finden Sie unter Implementieren dynamischer Datenmasken in Synapse Data Warehouse.

Berechtigungen

Benutzer ohne Administrator-, Mitglieds- oder Mitwirkendenrechte im Arbeitsbereich und ohne erhöhte Berechtigungen für das Warehouse sehen maskierte Daten.

Sie benötigen keine besondere Berechtigung, um eine Tabelle mit einer dynamischen Datenmaske zu erstellen, sondern nur die Standard-CREATE TABLE und ALTER die On-Schema-Berechtigung.

Um die Maske einer Spalte hinzuzufügen, zu ersetzen oder zu entfernen, benötigen Sie die ALTER ANY MASK-Erlaubnis und die ALTER-Berechtigung für die Tabelle. Es ist angemessen, ALTER ANY MASK einem Sicherheitsbeauftragten zu gewähren.

Benutzer mit einer SELECT-Berechtigung für eine Tabelle können die Tabellendaten einsehen. Spalten, die als maskiert definiert sind, zeigen die maskierten Daten an. Erteilen Sie einem Benutzer die UNMASK-Berechtigung, unmaskierte Daten aus den Spalten abzurufen, für welche die Maskierung definiert ist.

Die CONTROL-Berechtigung für die Datenbank enthält sowohl die ALTER ANY MASK-Berechtigung als auch die UNMASK-Berechtigung, mit welcher der Benutzer unmaskierte Daten anzeigen kann. Administrative Benutzer oder Rollen wie Admin, Member oder Contributor haben von Haus aus CONTROL-Berechtigung für die Datenbank und können standardmäßig unmaskierte Daten einsehen. Erhöhte Berechtigungen für das Warehouse umfassen die CONTROL-Berechtigung.

Sicherheitsaspekte: Umgehung der Maskierung durch Inferenz oder Brute-Force-Techniken

Die dynamische Datenmaskierung wurde entwickelt, um die Anwendungsentwicklung zu vereinfachen, indem die Datenexposition in einer Reihe von vordefinierten Abfragen, die von der Anwendung verwendet werden, begrenzt wird. Die dynamische Datenmaskierung kann zwar auch nützlich sein, um zu verhindern, dass sensible Daten beim direkten Zugriff auf Daten versehentlich preisgegeben werden, aber es ist wichtig zu wissen, dass nicht privilegierte Benutzer mit Abfrageberechtigungen Techniken anwenden können, um Zugriff auf die eigentlichen Daten zu erhalten.

Nehmen wir als Beispiel einen Benutzer, der über ausreichende Privilegien verfügt, um Abfragen im Warehouse durchzuführen, und versucht, die zugrunde liegenden Daten zu „erraten“ und schließlich auf die tatsächlichen Werte zu schließen. Nehmen Sie an, es liegt eine definierte Maske für die [Employee].[Salary] -Spalte vor, und dieser Benutzer stellt eine direkte Verbindung zur Datenbank her und beginnt mit dem Raten von Werten, um schließlich auf den [Salary] Wert in der Employees Tabelle zu schließen:

SELECT ID, Name, Salary FROM Employees
WHERE Salary > 99999 and Salary < 100001;

Ergebnis:

ID Name Gehalt
62543 Jana Hoffmann 0
91245 Johan Lorenz 0

Dies zeigt, dass die dynamische Datenmaske nicht allein verwendet werden sollte, um vertrauliche Daten von Benutzern mit Abfragezugriff auf den Warehouse- oder SQL-Analyseendpunkt vollständig zu sichern. Sie ist geeignet, um die Offenlegung sensibler Daten zu verhindern, schützt aber nicht vor der böswilligen Absicht, auf die zugrunde liegenden Daten zu schließen.

Es ist wichtig, die Sicherheit auf Objektebene mit granularen SQL-Berechtigungen ordnungsgemäß zu verwalten und stets das Prinzip der minimal erforderlichen Berechtigungen zu befolgen.

Nächster Schritt