HomeKB0422: Anonymisieren von Daten in einer Datenbank

KB0422: Anonymisieren von Daten in einer Datenbank

HINTERGRUND

Um sensitive Daten für Drittpersonen unkenntlich zu machen, sind diese bei Bedarf zu anonymisieren. Dieser Artikel beschreibt das dazu erforderliche Vorgehen.

VORGEHEN

Um Daten einer Kunden-DB zu anonymisieren kann eine Datenbank-Funktion verwendet werden. Folgender SQL-Code generiert dazu vorgängig eine benötigte View und die gewünschte Funktion namens „Shuffle“.

Achtung: Führen Sie dies nicht auf den Live-Daten sondern auf einer Test-Datenbank aus!

Gehen Sie wie folgt vor, um eine Kopie der Live-Datenbank zu erstellen:

  1. Ein Backup der Datenbank erstellen.
  2. Leere Datenbank über das verwendete TimeSafe-Produkt erstellen, dafür beim Starten der Anwendung die Ctrl-Taste gedrückt halten und „neue Datenbank erstellen“ auswählen. Alternativ kann auch eine neue Datenbank via SQL Server Management Studio erstellt werden.
  3. Das in Schritt 1 erstellte Backup in die in Schritt 2 erstellte Datenbank übernehmen. Die Anleitung dazu finden Sie unter folgenden Links: Für die Leistungserfassung Punkt 7 bis Punkt 10 und für die Zeiterfassung „ Auf dem neuen Server“  Punkt 4 bis Punkt 7
  4. Um Daten einer Kunden-DB zu anonymisieren kann eine Datenbank-Funktion verwendet werden. Folgender SQL-Code generiert dazu vorgängig eine benötigte View und die gewünschte Funktion namens „Shuffle“.
  5. Führen Sie auf der neu erstellten Datenbank die folgende Anweisung aus:
CREATE VIEW Random
AS SELECT RAND() AS RAND
GO

CREATE FUNCTION Shuffle(@string AS nvarchar(MAX), @LENGTH AS INT)
RETURNS VARCHAR(MAX)
BEGIN
DECLARE @RESULT NVARCHAR(MAX)
DECLARE @counter INT

SET @RESULT = ''
SET @counter = 0

WHILE @counter < @LENGTH
BEGIN

SELECT @RESULT = @RESULT + SUBSTRING(@string, (SELECT CONVERT(INT, (RAND * LEN(@string) + 1)) FROM Random), 1)
SET @counter = @counter + 1
END

SELECT @RESULT = UPPER(LEFT(@RESULT,1)) + SUBSTRING(@RESULT,2,LEN(@RESULT))
RETURN @RESULT
END
GO

BEISPIELE

Folgender SQL-Code anonymisiert z.B. die Bezeichnung der Organisationen:

UPDATE dbo.tOrganizations
SET strDesignation = dbo.Shuffle(strDesignation, LEN(strDesignation))

Oder die Vor- und Nachnamen der Kontakte:UPDATE dbo.tContacts
SET strFirstName = dbo.Shuffle(strFirstName, LEN(strFirstName))

UPDATE dbo.tContacts
SET strLastName = dbo.Shuffle(strLastName, LEN(strLastName))

VIEW UND FUNKTION WIEDER LÖSCHEN

DROP VIEW Random
GO

DROP FUNCTION Shuffle
GO

5. Führen Sie die unter „BEISPIELE“ erwähnten SQL-Codes auf der neu erstellen Datenbank aus.6. Erstellen Sie ein Backup dieser soeben anonymisierten Datenbank