Effizientes Bereitstellen von Testdaten mit Oracle Data Masking

Werbung
Effizientes Bereitstellen von Testdaten mit Oracle
Data Masking
Oliver Gehlert
metafinanz Informationssysteme GmbH
München
Schlüsselworte:
Oracle Grid Control, Oracle 11gR2, Security, Compliance, Test
Einleitung
Laut einer Studie des Ponemon Instituts verwenden mehr als 70% der befragten Unternehmen
sensible Originaldaten für ihre Testsysteme. Dies geschieht, obwohl nur 7% der Unternehmen
davon ausgehen, dass ihre Testsysteme ausreichend geschützt sind.
Aus welchen Gründen werden diese sensiblen Daten ungeschützt übernommen? Die Gründe
dafür sind u. a. das Nachstellen von Fehlern, die nur in Produktion aufgetreten sind, Tunen
von Statements, konsistente Testdaten und das einfache Erstellen der Testdatenbank.
Abgesehen vom ersten Punkt, können all diese Punkte mit dem Oracle Data Masking Pack
gelöst werden.
Das Data Masking Pack für Grid Control ab 10.2.0.4 bzw. die DB Console in Version 11g
Release 2 bietet die Möglichkeit sensible Daten automatisiert zu ersetzen.
Anforderungen an die Datenmaskierung
Die Maskierung einzelner Spalten, ohne Berücksichtigung von Fremdbeziehungen ist trivial.
Kompliziert wird es dann, wenn Daten sinnvoll verschlüsselt werden sollen und die
referentielle Integrität erhalten bleiben muss. Existieren abhängige Daten, wie Emailadressen,
oder Regionszuordnungen, dann müssen diese Spalten auch angepasst werden.
All diese Anforderungen lassen sich problemlos mit PL/SQL umsetzen, der Aufwand ist aber
merklich und Anpassungen sowie Erweiterungen sind nur mit größerem Aufwand
implementierbar.
Oracle Data Masking
Benötigte Infrastruktur
Um das Data Masking Pack verwenden zu können, benötigt man entweder Grid Control, das
die entsprechenden Datenbanken verwaltet oder die DB Console ab Oracle Datenbankversion
11g Release 2.
Verwendung des Enterprise Managers
Data Masking ist ein Unterpunkt des Reiters „Schema“
Abbildung 1 Links in Grid Control
Formatbibliothek
Bei Version 10.2.0.5 bzw. in der DB Console werden ein paar Maskierungsdefinitionen
mitgeliefert. Die Definitionen sind aber eher für den amerikanischen Markt interessant:
• Social Security Number
• Telefonnummer USA
• ISBN
• Kreditkartennummern
• UPC
Abbildung 2 Formatbibliothek
Das Anlegen neuer Definitionen erfolgt über einen Assistenten. Angelegte Definitionen sind
für alle Benutzer von Grid Control sichtbar. Es erfolgt keine Zuordnung zu Tabellenspalten.
Formatdefinitionen
Formatdefinitionen sind spaltenbezogen und weisen Spalten Maskierungsformate aus der
Formatbibliothek bzw. neu erstellte Formate zu. Die Formatdefinitionen können sich auf
einzelne Spalten oder Spaltengruppen beziehen. Die Formatdefinitionen können, wie die
Einträge aus der Formatbibliothek, im XML-Format exportiert bzw. importiert werden. Die
Formatdefinitionen stehen nur dem Benutzer zur Verfügung, der sie angelegt hat.
Maskierung einzelner Spalten
Für die Maskierung einzelner Spalten stehen folgende Maskierungsmöglichkeiten zur
Verfügung:
•
•
•
•
•
•
•
Wertemenge
Feste Zahl
Feste Zeichenkette
Teilstring
Tabellenspalte
Löschen
Vertauschen
•
•
•
•
•
•
•
Zufallszahl
Zufallsdatum
Zufallszeichenkette
Truncate
Benutzerdefinierte Funktionen
Postprocessing Funktionen
Ersetzung durch Hashwert
Bei Spalten vom Typ Varchar2 können mehrere Maskierungsformate zusammengefügt
werden, bei Date- oder Numberspalten ist nur eine Maskierung zulässig:
Abbildung 3 Zusammengesetzte Formate
Die Maskierung einzelner Spalten kann auch in Abhängigkeit von den Werten anderer
Spalten erfolgen. Dies kann bei nicht komplett normalisierten Datenmodellen vorkommen:
Abbildung 4 Bedingte Maskierung
Grid Control testet weder bei der Anlage noch bei der Skriptgenerierung, ob die Definition
überschneidungsfrei ist. Eventuelle Fehler erhält man erst zur Laufzeit.
Existieren Abhängigkeiten zwischen mehreren Spalten, so kann man diese als Spaltengruppen
maskieren. Hierbei stehen aber deutlich weniger Formatmasken zur Verfügung
Maskierung von Spaltengruppen
Abbildung 5 Spaltengruppen
Abbildung 6 Maskierungsformate für Gruppen
Erhaltung der referentiellen Integrität
Werden Spalten maskiert, auf die Foreign Keys verweisen, so nimmt Oracle Data Masking
automatisch die zugehörigen Spalten mit in die Maskierungsdefinition auf. Gibt es
Abhängigkeiten, die nur in der Applikation abgeprüft werden, so kann man die Spalten
manuell über „Dependent Columns“ hinzufügen.
Abbildung 7 Abhängige Spalten
Datenbankcloning
Das effizienteste Verfahren zur Erstellung einer Testdatenbank ist das Clonen der
Produktivdatenbank per RMAN. Das Data Masking Pack erlaubt es, eine oder mehrere
Maskierungsdefinitionen an den Cloningprozess anzubinden. Das Maskieren erfolgt hierbei
nach dem Cloning.
Als Ziele stehen alle Server zur Verfügung, die als Ziele in Grid Control hinterlegt sind und
auf denen die passende Softwareversion installiert ist. Ab Oracle 11gR2 kann die Datenbank
auch direkt mit RMAN geclont werden, ohne das die Backupdateien zwischengespeichert
werden müssen.
Hinter den Kulissen von Data Masking
Aus den angelegten Formaten generiert Grid Control SQL-Skripte, die mehrere Prozeduren
und Funktionen enthalten, sowie eine eigene Jobsteuerung, die die eigentliche Maskierung
durchführen:
• Test, ob der Benutzer zur DBA-Gruppe gehört
• Erstellen einer Zwischentabelle MGMT_DM_TT_ mit Ursprungsspaltenwert und
maskiertem Wert
• Löschen aller Constraints der betroffenen Tabellen
• Löschen aller Indizes auf den betroffenen Tabellen
• Umbenennen der Tabellen in Tabellenname$DMASK
• Neuerstellen der Tabellen per Create Table as Select ausgehend von der umbenannten
Ursprungstabelle und der Zwischentabelle mit den maskierten Spalten.
• Löschen der $DMASK-Tabellen
• Neuanlage von Not Null Constraints, Unique Keys und Primary Keys
• Anlegen von Foreign Keys
• Neubestimmung der Statistiken mit Sample_Size Auto
• Löschen der Zwischentabellen
Aufgrund dieses Vorgehens werden abhängige Packages, Views, Materialized Views und
Trigger invalidiert.
Maskiert man Dimensionen und Fakttabellen, so wird nur eine Zwischentabelle je Dimension
angelegt, die zum Maskieren der Dimensionstabelle und Fakttabelle verwendet wird. Dadurch
bleiben die vorhandenen Mengengerüste und Datenverteilungen erhalten.
Lizenz
Das Data Masking Pack ist eine Option für die Oracle Enterprise Edition und muss
entsprechend für je CPU oder Named User lizenziert werden. Zu lizenzieren ist nicht nur die
Produktivdatenbank sondern auch die zugehörigen Testdatenbanken.
Die Verwendung der Data Masking Funktionalität im Enterprise Manager muss gesondert
lizenziert werden. Zu den lizenzpflichtigen Features gehören:
• Alle zugehörigen Seiten im Enterprise Manager
• Die Formatbibliothek
• Die Maskierungsdefinitionen
• Der Export und Import von Definitionen bzw. Templates
• Die Skriptgenerierung
• Datenbankcloning und Maskierungsworkflow
• Bei den Maskierungstechniken
o Bedingte Maskierung
o Zusammengesetzte Maskierung
o Deterministische Maskierung
Für die genauen Lizenzbedingungen wenden Sie sich bitte an Ihren Oracle
Vertriebsbeauftragten.
Oracle Datapump
Seit Oracle 11g Release 1 gibt es auch die Möglichkeit Daten beim Export mit Oracle
Datapump zu verändern. Hierzu wird für jede angegebene Spalte eine Funktion aufgerufen,
die ausgehend vom Originalwert einen neuen Wert zurückliefert. Es werden hier keine
fertigen Definition mitgeliefert.
Alternativ können die Daten beim Import mit Oracle Datapump verändert werden. Die Syntax
ist analog zum Datapumpexport.
Durch die Verwendung selbsterstellter Funktionen erreicht man mit Datapump maximale
Anpassung an die eigenen Anforderungen. Nachteilig ist aber, dass man selber für die
referentielle Integrität der Testdaten verantwortlich ist, und daher für Spalten mit ForeignkeyBeziehungen nur deterministische Funktionen verwendet werden können. Auch die
Maskierung abhängiger Spalten muss programmatisch gelöst werden. Bei den
Maskierungsfunktionen kann aber nur die zu maskierende Spalte als Parameter übergeben
werden. Das obige Beispiel für die Berechnung der Spalte AGE_RANGE, bzw
EMAILADRESS wäre mit Datapump nicht abbildbar.
Je nach Qualität und Anzahl der Maskierungsfunktionen erhöht sich der Zeitbedarf für den
Export deutlich, bei 3 Millionen Zeilen und einer Maskierungsfunktion (Random)
verdreifacht sich der Zeitbedarf für den Export.
Fazit
Mit Oracle Data Masking ist das Thema Testdatenerstellung deutlich vereinfacht worden.
Durch die Integration in die DB Console bei der Version 11gR2 wird auch keine aufwendige
Infrastruktur mehr benötigt, was die Nutzbarkeit von Data Masking deutlich vereinfacht.
Die Performance ist selbst auf schwächeren Testservern ausreichend und die Einbindung in
den Cloningprozess führt das Maskieren direkt nach dem Erstellen der Testdatenbank durch.
Das Clonen auf andere Server ist nur per Grid Control möglich, aber man kann das
Duplizieren und Maskieren auch per rman- und SQL-Skript automatisieren.
Datenschutz in Test- und Integrationsumgebungen ist ab sofort kein aufwendiges Unterfangen
mehr. Das Data Masking Pack erlaubt die komfortable Erstellung unterschiedlichster Regel
zur Datenmanipulation und die resultierenden Skripte können einfach in bereits vorhandene
Prozesse integriert werden. Durch die Realisierung in PL/SQL sind die Skripte auch
Plattformübergreifend zu verwenden.
Eine günstigere Alternative ist Oracle Datapump, die sich insbesondere für heterogene
Umgebungen anbietet. Die Maskierung einzelner Spalten ist hier ebenfalls sehr flexibel
gelöst, aber die Erhaltung referentieller Integrität bzw. die Konsistenz über unterschiedliche
Spalten hinweg ist für Datapump zu komplex.
Kontaktadresse:
Oliver Gehlert
metafinanz Informationssysteme GmbH
Leopoldstraße 146
D-80804 München
Telefon:
Fax:
E-Mail
Internet:
+49(0)89-360531-0
+49(0)89-360531-15
[email protected]
www.metafinanz.de
Herunterladen