COMMENT ON COLUM ora00.mitarbeiternr IS 'ANONYMISIERUNG: Zufallsfunktion' COMMENT ON COLUM ora00.mitarbeitername IS 'ANONYMISIERUNG: Produktivdatenfunktion'
[<Schemaname>.]<Tabellenname>.<Spaltenname>: [<Schemaname>.]<Packagename>.<Funktionsname>
create or replace package ora00.pkg_mask as function fct_geh (p_origGehalt NUMBER) return number; end; / create or replace package body ora00.pkg_mask as function fct_geh (p_origGehalt NUMBER) return number is p_newGehalt NUMBER(9,2) := 0; begin p_newGehalt := dbms_random.value(1000000.00,9999999.99); return p_newGehalt; end; end; /
Export: expdp ora00/ora00 tables=ora00.mitarbeiter dumpfile=tbl_mitarbeiter.dmp reuse_dumpfiles=y directory=tmp_dir remap_data=ora00.mitarbeiter.gehalt:ora00. pkg_mask.fct_geh Import: impdp ora00/ora00 tables=ora00.mitarbeiter dumpfile=tbl_mitarbeiter.dmp directory=tmp_dir remap_data=ora00.mitarbeiter.gehalt:ora00. pkg_mask.fct_geh
Das Data Masking ist die Transformation sensibler Unternehmensinformationen in realistische Testdaten. Realistisch steht hierbei für die Übernahme der Datenformate von Produktivdaten. Diese generierten Daten finden vor allem in der Software-Entwicklung Verwendung, um qualitative und quantitative Aussagen über das Verhalten von Neu- oder Weiterentwicklungen treffen zu können.
Als Merkmale des Data Masking gelten:
Es sind folgende Funktionalitäten nutzbar.
Die Erstellung eines Prüfreports (Impact Report) ermöglicht, auf Fehler und/oder Prämissen hinzuweisen. Hierzu gehören Prüfungen auf Eindeutigkeit, Maskenformate, Speicherplatz, Check Constraints und Default-Werte für Partitionen.
Die Maskierung der Daten erfolgt grundsätzlich in mehreren Schritten:
Schritt 1: Zuerst werden die sensitiven Daten identifiziert. Diese Analyse führt der Security Manager der Datenbank durch.
Schritt 2: Im Anschluss daran definiert ein Business Analyst oder Applikationsverantwortlicher die Datentypmaske der relevanten Spalten und fügt einen entsprechenden Kommentar hinzu. Beispiele finden Sie in Abbildung 1.
Schritt 3: Im nächsten Schritt erfolgt das Klonen der Produktionsdatenbank als Staging-Datenbank. Dies geschieht durch den DBA.
Schritt 4: Jetzt werden die Definitionen für die Maskierungsformate mit Hilfe des Enterprise Manager Data Masking Pack durch den DBA erstellt. Darin findet sich schon eine Vielzahl an vordefinierten Formaten (siehe Abbildung 2).
Schritt 5: Der nächste Schritt beinhaltet das Ausführen eines Jobs, der in der Bibliothek enthalten ist. Hierdurch wird ein Skript generiert, das letztendlich dafür sorgt, dass
Der daraus resultierende Prüfreport (Impact Report) sollte fehlerfrei sein.
Schritt 6: Abschließend wird das zuvor generierte Skript ausgeführt und die Staging-Datenbank zur Testdatenbank geklont.
Das Beispiel in Abbildung 3 zeigt die Transformation der Daten beim Data Masking. Hierzu werden drei Spalten mit ihren Datenformaten beibehalten und anschließend nach bestimmten Transformationsschritten maskiert. Die vierte Spalte (Gehalt) bleibt in ihren Daten unverändert. Dennoch ist ein Rückschluss auf die Originaldaten nicht möglich.
Wie schon in der ORDIX News Artikelreihe „Oracle Database 11g“ [1] erwähnt wurde, ist durch die Einführung des Übergabeparameters REMAP_DATA auch eine Datenmaskierung bei der Nutzung des Tools Datapump mittels expdp/impdp möglich.
Die Syntax des Parameters finden Sie in Abbildung 4.
Hierdurch existiert nun ab 11g eine lizenzfreie Möglichkeit der Testdatengenerierung. Die einzige Voraussetzung hierfür ist das Erstellen der jeweiligen Funktionen. Es muss dabei auch der gleiche Datentyp berücksichtigt werden. Somit ist auch der Validität eines Testszenarios genüge getan. Die zu nutzende Funktion sollte über ein Package definiert werden (siehe Abbildung 5).
Die Kommandozeile für den Aufruf des Datapump Utility für diesen Fall finden Sie in Abbildung 6.
Sowohl mit der Option Data Masking als auch mit der Nutzung des neuen Parameters REMAP_DATA im Tool Datapump existiert jeweils eine gute und performante Option der Testdatengenerierung. Die Entscheidung für eine der beiden unterschiedlichen Möglichkeiten wird in dem Spannungsfeld zwischen Kosten und Qualität bestimmt. Für die Bereitstellung von Testdaten für Modultests durch den Entwickler wird sicherlich die Nutzung der Datapump-Option im Vordergrund stehen. Sind darüber hinaus neben fachlichen Tests auch Performance-Analysen notwendig, sollte der Einsatz der Option Data Masking in Erwägung gezogen werden.
Klaus Günther (info@ordix.de).