Anonymisieren und Pseudonymisieren von Daten
In Microsoft Access, Random, Anonym, Pseudonym, einfache Umwandlung in functions. ID Nummer ohne Hash in vba
In der folgenden Demo-Datenbank werden wichtige Daten anonymisiert und pseudonymisiert.
Das heißt, für wichtige Nummern werden nicht rückführbare andere Zahlen eingefügt,
Und für Texte werden Pseudonyme vergeben
Hier eine anonymisierte und pseudonymisiert Tabelle
Anwenden der Random -Funktion in einer Tabelle oder Abfrage
Mit einer einmaligen Random-Nummer werden die Nummern verändert, sodass diese nicht zurückverfolgt werden können.
Diese Funktion ist möglich, sobald in der vba Code-Seite die public function wie folgt eingefügt wurde.
Über ein Formular kann die Random-Nummer manuell erzeugt werden und auf Veränderung geprüft werden
Die Änderung der Wichtigen Nummern wird durch ein Update / Aktualisierungsabfrage ausgeführt
Dabei werden die kritischen Nummern, welche nicht zurückgeführt werden können sollten, durch einen Anonymisierungsfunktion umgewandelt.
Anschliessend können in einer Abfrage die Zahlen einheitlich verschlüsselt werden
Pseudonymisierung
Bei der Pseudonymisierung werden jedem kritischen Text Pseudonyme vergeben.
Also wird anstatt Maier, Müller Huber entweder Name 123, Name 234, Name 456 oder Hase, Maus, Elefant vergeben.
Update in SQL
UPDATE tblPersonal_Data SET tblPersonal_Data.Firstname = "Firstname " & [PersonalNumber] , tblPersonal_Data.LastName = "LastName " & [PersonalNumber] , tblPersonal_Data.BirthDay = Date(), tblPersonal_Data.ZipCode = Left([PersonalNumber],5) , tblPersonal_Data.City = "City " & [PersonalNumber] , tblPersonal_Data.Email = "Email@" & [PersonalNumber] & ".com"; |
Vba Code zum Formular Random Nummer erstellen, init
Vba Code zum Button
Option Compare Database Option Explicit
Private Sub BtnRandom_Click() '--------------< BtnRandom_Click()>------------- 'create public Random Number create_Public_Random_Number
'anzeigen tbxRandom.Value = public_Random_Zahl '--------------</ BtnRandom_Click()>------------- End Sub
|
Mit der Randomize Klasse in vba Office und der Rnd(123) Funktion können dann in vba neue Zufallszahlen erstellt werden
Der Rnd() Befehl erstellt eine double-Zahl von 0-1.
Mit der Multiplikation einer Basis-Zahl entsteht dann der gültige Zahlenbereich von 0 bis 999.999.999
Dann wird mit einer vba Funktion eine Random Zahl erzeugt, welche einen Offset nach einer zufälligen Zahl zwischen 0 und 999.999.99 erzeugt
Public Function create_Public_Random_Number() '--------------< create_Public_Random_Number() >--------------
'Init Zufallszahlen Randomize
'bilde Zufallszahl Dim lngRandom As Long lngRandom = Rnd(10000) * 999999 '*eine Zahl von 0 bis 6 stellen
'Public zuweisen public_Random_Zahl = lngRandom '--------------</ create_Public_Random_Number() >-------------- End Function
|
Anonymisieren von Zahlen mit Referenz-Funktionen
Mit der folgenden public function in Microsoft Access oder Microsoft Excel kann man Nummern anonymisieren ähnlich wie ein Hash bilden.
Der einzige Unterschied ist, dass dabei zufällige Nummern erstellt werden, welche für den Rechenvorgang im Offset gleichbleiben.
Bei Hash Funktionen entstehen immer auch Buchstaben, welche anschließend nicht in Daten-Tabellen als Zahl weiterverwendet werden können.
Eine zufällige Nummer wäre hier auch nicht sinnvoll, wenn externe Import oder Export Funktionen auf Doubletten oder auf Index-Verweise berechnen oder referenzieren müssen.
Option Compare Database Option Explicit
Public public_Random_Zahl As Long
Public Function Anonymize_Number(ByVal sInput As String) '--------------< Anonymize_Number() >-------------- 'Zugriff ueber Excel oder Access Tabelle als Funktion =Anonymize_Number() 'veraendere eine IDNummer mit einem Random-Shift
'< check > If public_Random_Zahl = 0 Then create_Public_Random_Number If sInput = "" Then Exit Function If Len(sInput) < 3 Then Exit Function '</ check >
'< convert > 'convert string to number (Excel numbers as string, from SAP) Dim long_Input As Long long_Input = CLng(sInput) '</ convert >
Dim new_Number As Long new_Number = long_Input + public_Random_Zahl
'< return > Anonymize_Number = new_Number '</ return > '--------------</ Anonymize_Number() >-------------- End Function |
Aufgabe:
Für wichtigere Aufgaben mit höherem Level kann die Umwandlungs-Funktion natürlich verbessert und ausgefeilt werden.
Fazit
Natürlich ist unter viel Aufwand bei einer einfachen Änderung die Rekonstruktion mit kriminellen Mitteln und viel Aufwand möglich.
Allerdings ist eine Interne Änderung in dieser Weise für interne Aufgaben möglich.
Die Funktion kann natürlich komplexer aufgebaut werden, und die Daten sind auch nach wie vor nicht für den öffentlichen Gebrauch zu verwenden.