Dynamic Data Masking – Ein Sicherheitsfeature?
Heute möchte ich ein paar Worte über eine Technologie
verlieren, die häufig von Kunden mit höheren Sicherheitsanforderungen in den
Ring der nutzbaren Sicherheitsfeatures geworfen wird. Hierbei handelt es sich
um die Verschleierungstechnologie «Dynamische Datenmaskierung».
Diese Technologie kann verwendet werden, um die Ausgabe von sensiblen Daten an normale Benutzer zu verhindern, in dem diese Daten mit einem «Fake»-Wert dargestellt werden
Diese Technologie kann verwendet werden, um die Ausgabe von sensiblen Daten an normale Benutzer zu verhindern, in dem diese Daten mit einem «Fake»-Wert dargestellt werden
Dynamische Datenmaskierung (DDM) steht den Benutzern von MS
SQL Server 2016 in der Edition Standard und Enterprise zur Verfügung. Alle
anderen Editionen unterstützen dieses Feature seit MS SQL 2016 SP 1.
Technisches:
DDM ist grundsätzlich eine implementierte Schemaänderung der
Tabelle, bei der die Maskierungsregeln basierend auf die Spalten festgelegt
werden.
Um DDM einzurichten benötigt man neben der ALTER TABLE Berechtigung auch die Berechtigung ALTER ANY MASK.
Um DDM einzurichten benötigt man neben der ALTER TABLE Berechtigung auch die Berechtigung ALTER ANY MASK.
Maskierungsfunktionen:
Es existieren derzeit vier Maskierungsfunktionen:
Es existieren derzeit vier Maskierungsfunktionen:
·
DEFAULT
ersetzt einen String durch ‘XXXX’ (bei weniger als 4 Stellen durch die entsprechende Anzahl) und numerische Werte durch ‘0’. Datumwerte werden auf den Zeitpunkt ‘01.01.1900 00:00:00.0000000’ gesetzt und binäre Werte auf den ASCII Wert ‘0’.
ersetzt einen String durch ‘XXXX’ (bei weniger als 4 Stellen durch die entsprechende Anzahl) und numerische Werte durch ‘0’. Datumwerte werden auf den Zeitpunkt ‘01.01.1900 00:00:00.0000000’ gesetzt und binäre Werte auf den ASCII Wert ‘0’.
·
EMAIL
ersetzt die Emailadresse durch einen String, der das erste Zeichen gefolgt von drei X’en, einem @-Zeichen, gefolgt von vier X’en. Den Schluss bildet das Suffix ‘.com’. Dadurch wird die Form einer Email behalten.
ersetzt die Emailadresse durch einen String, der das erste Zeichen gefolgt von drei X’en, einem @-Zeichen, gefolgt von vier X’en. Den Schluss bildet das Suffix ‘.com’. Dadurch wird die Form einer Email behalten.
·
RANDOM
ersetzt einen numerischen Wert durch einen numerischen Wert aus einem frei wählbaren Nummernbereich
ersetzt einen numerischen Wert durch einen numerischen Wert aus einem frei wählbaren Nummernbereich
·
CUSTOM STRING
ersetzt einen String durch einen angegebenen String, wobei eine frei wählbare Anzahl der führenden und beendenden Zeichen vom Originalstring übernommen werden kann.
ersetzt einen String durch einen angegebenen String, wobei eine frei wählbare Anzahl der führenden und beendenden Zeichen vom Originalstring übernommen werden kann.
Nicht-maskierbare Datentypen:
· FILESTREAM Daten
·
Mit Always-On verschlüsselte Spalten
·
COLUMN_SET Spalten
·
Es werden zwar keine berechneten Spaten
unterstützt, sie können aber maskiert werden, indem man die Quellspalten
maskiert
·
Spalten, die als Schlüssel für die
Volltextindizierung verwendet werden
Wie sicher ist nun DDM?
Sobald ein DDM für eine Spalte einer Tabelle eingerichtet
wurde, werden allen Usern, denen nicht das Recht ‘UNMASK’ zugewiesen wurde, die
Daten maskiert angezeigt. Allerdings kann man Usern nicht nur ein Teil der
Daten unmaskiert zeigen. Hat ein Benutzer das Recht ‘UNMASK’, so sieht er ALLE maskierten Daten einer
Datenbank unmaskiert.
Weiterhin schützt DDM nicht vor Brute Force Angriffen, da
ein SELECT Statement auf den Originaldaten ausgeführt wird. Wird nun eine
Spalte mit Gehaltsinformationen mittels eines WHERE Bedingung abgefragt (z.B.
grösser 100000), so werden die korrekten Daten selektiert, aber die Werte nur maskiert
angezeigt. Mit genügend Abfragen kann man auf die Originalwerte schliessen.
Um allerdings einen Datenexport in eine andere Umgebung durchzuführen,
werden in der Zielumgebung nun die maskierten Daten eingetragen. Z.B. in eine
Umgebung für Entwickler, die keinen Zugriff auf die Originaldaten haben sollen.
Fazit:
DDM kann eine gute Möglichkeit sein, Werte zu verschleiern.
Allerdings ist zu berücksichtigen, in wie weit der Abfragende in der Lage ist,
mittels selbstgeschriebener Abfragen die Daten auszuwerten.
Vielen Dank für die Aufmerksamkeit