Datenschutz in der SAP HANA Datenbank mittels Data Masking und Data Anonymization

Endanwender können ohne Authentifizierung und Berechtigungsprüfung im SAP-ABAP-System direkt auf die Daten in der SAP HANA DB zugreifen, wie zum Beispiel auf Views in der SAP HANA DB.

Soll nun der Zugriff auf Daten aus Views nicht ungefiltert erfolgen, weil zum Beispiel nur Daten eines Werkes, eines Buchungskreises oder einer anderen organisatorischen Einheit eingesehen werden sollen, besteht die Möglichkeit einer Berechtigungsprüfung über analytische Privilegien. Die Unterschiede zwischen den einzelnen SAP HANA Privilegien wurden bereits im letzten Blog-Beitrag zu SAP HANA Privilegien aufgelistet. 

Um die Daten bestimmter Spalten eines Views nicht im Klartext für jeden berechtigten Benutzer einsehbar zu machen, stehen zwei Mechanismen zur Verfügung: Daten-Anonymisierung und Daten-Maskierung.

Daten-Anonymisierung

Die Daten-Anonymisierung ist Aufgabe der Entwickler:innen, welche die Views anlegen und die nicht die Aufgabe von Berechtigungsadministrator:innen. Bei der Anonymisierung wird zwischen folgenden zwei Arten unterschieden: K-Anonymität und Differential Privacy.

K-Anonymität

Bei dieser Form werden Details der Daten «unscharf» dargestellt. So wird z.B. bei einer Person mit Geburtsdatum am 01.12.1973 nur 1973 dargestellt und aus dem Wohnort Walldorf wird Wohnort Deutschland. Details, die nicht für jeden Endanwender einsehbar sein sollen, bleiben damit geschützt.

Differential Privacy

Differential Privacy, die zweite Variante der Anonymisierung, ersetzt Werte oder fügt fehlerhafte Daten ein. Statt des Namens einer Person, z.B. Anna wird „0c2187“ dargestellt. Diese Verfremdung der Daten erfolgt über einen SAP HANA DB eigenen Logarithmus.

Die Daten-Maskierung hingegen obliegt den Berechtigungsadministrator:innen, bzw. das Genehmigen des Zugriffs auf die Daten in klarer Form über Privilegien. Zunächst wird ein View mit einer Maskierung für die zu verbergende Spalte einer Tabelle angelegt. Die Tabelle heißt bspw. TEST00, die Spalte OBJECT_INCLUDE und liegt im Schema VDENEKE:

create view MASKIERT00 as select * from „VDENEKE“.“TEST00″ with MASK (OBJECT_INCLUDE USING ‚XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX‘);

Welche Art von Zeichen eingesetzt werden spielt keine Rolle. Allerdings muss die Zeichenlänge der Maskierung der Spaltenbreite entsprechen. Hat ein Benutzer nicht das Objekt Privileg für den View mit der Ausprägung «unmasked», so wird der Inhalt der Spalte OBJECT_INCLUDE mit Platzhaltern angezeigt:

SELECT TOP 1000 * FROM „VDENEKE“.“MASKIERT00”;

Abb. 1: Select ohne unmasked Privileg auf einen View, SAP HANA Studio

Nur der Ersteller des Views oder der Inhaber des Schemas, in dem der View gespeichert ist, kann das unmasked Objekt Privileg an einen Benutzer mit folgendem String vergeben:

grant UNMASKED on MASKIERT00 to <Endbenutzer>.

Die Zuweisung des unmasked Privilegs ist ausschließlich direkt an die Benutzer, jedoch nicht an eine Rolle möglich.

Das Ergebnis sieht wie folgt aus:

SELECT TOP 1000 * FROM „VDENEKE“.“MASKIERT00”;

Abb. 2: Select mit unmasked Privileg auf einen View, SAP HANA Studio

Jetzt erscheint der Inhalt der Spalte OBJECT_INCLUDE im Klartext.

Views mit Abhängigkeit zu anderen Views

Eine weitere Möglichkeit beim Erstellen von Views ist das Verknüpfen mit anderen Views.

Benutzer 1 legt einen ersten View mit Maskierung an:

CREATE VIEW DEBITOR1 (Vorname,

Name,

MaskedCreditCard1) as SELECT

VorName,

Name,

CreditCard

From Table DEBITOREN with MASK (MaskedCreditCard1 using abc1234567890xxx);

Benutzer 2 legt einen zweiten View mit Maskierung an, basierend auf ersten View DEBITOR1:

Create VIEW DEBITOR2 (Vorname,

Name,

MaskedCreditCard2) as SELECT

Vorname,

Name,

MaskedCreditCard1

From DEBITOR1 with MASK (MaskedCreditCard2 USING xxx0987654321cba);

In dieser Konstellation werden nicht nur die Privilegien des Endbenutzers evaluiert, sondern auch die Privilegien der Inhaber der Views. Wenn ein Endbenutzer auf den zweiten View zugreift, ist die Maskierung, die angewendet wird, abhängig von den Privilegien des Inhabers des zweiten Views und des Endbenutzers. Der Endbenutzer hat das SELECT Privileg auf DEBITOR2 und der Ersteller von DEBITOR2 das SELECT Privileg mit «grant option» auf View DEBITOR1. Das Ergebnis der Abfrage vom Endbenutzer ist jetzt davon abhängig, wer das unmasked Privileg besitzt.

Abb. 3: Privilegien für Views mit Abhängigkeiten

Fazit

Mit diesen Varianten stehen mehrere Möglichkeiten zur Verfügung, sensible Daten zu verbergen, entweder durch Daten-Anonymisierung oder Daten-Maskierung. Die Daten-Maskierungen sind dabei ohne zusätzliche Entwicklungen durch die Berechtigungsadministration zu realisieren.

Mit unserer Expertise und Workshops zu SAP HANA DB Rollen und Berechtigungen unterstützen wir Sie bei der Konzeption, Implementation oder Prüfung Ihrer SAP HANA Berechtigungen. Die Xiting Authorization Management Suite (XAMS) ermöglicht die Analyse, welche Benutzer über welche Privilegien verfügen und ob Segregation of Duties (SoD)-Verstöße vorliegen. 

Erfahren Sie mehr über unsere Services im Bereich SAP HANA!

Volker Deneke
Kontakt

Nehmen Sie Kontakt mit uns auf!

Haben Sie Fragen zu unseren Produkten?

+41 43 422 8803
[email protected]
+49 7656 9888 155
[email protected]
+1 855 594 84 64
[email protected]
+44 1454 838 785
[email protected]
Kontakt
Termin