Dienstag, 4. Dezember 2018

Dynamic Data Masking – Ein Sicherheitsfeature?


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

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.

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’.

·       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.

·       RANDOM
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.

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