2017-10-09 5 views
0

J'aime créer un outil qui brouille les données sensibles de production et les a ajoutées dans une autre DB de développement. J'ai construit quelques scripts qui font des numéros de sécurité sociale aléatoires, des dates de naissance décalées, des emails brouillés, etc. Mais j'ai rencontré un problème alors que nous avons une référence pour cette colonne.Comment migrer un sous-ensemble de données de la production pour le développer en brouillant des données sensibles?

For example:- if we scramble tables tableA and TableB, 

TableB ont une clé forieng de tableA (ssn)

TableA 
    ssn firstName     lastName 
    ....................................... 
    111 arun      prasanth     
    222 ann       antony     
    333 sruthy      abc      
    666 new       abc  




TableB(ssn Foreign key reference) 
id ssn Place 
................ 
1 111 kerala 
2 222 usa 
3 333 ekm 
5 666 chennai 

sortie désiré doit être

TableA 
    ssn firstName     lastName 
    ....................................... 
    999 gdfsgs     trttr 
    956 hsggghhgh     pipip 
    855 hdsgfgsddd    lklkl 
    233 ghfgfggfgf    mkmk 




TableB(ssn Foreign key reference) 
id ssn Place 
................ 
1 999 kerala 
2 956 usa 
3 855 ekm 
5 233 chennai 

Répondre

0

Étant donné que votre environnement de développement applique de toute évidence des relations de clés étrangères, la modification de la valeur d'une clé est un problème.

Les options comprennent:

la conception de la base de données afin qu'un fait important comme n'est pas une SSN clé interne en premier lieu (trop tard pour le faire). (Si SSN dans votre base de données ne représente pas un fait important, il peut ne pas être nécessaire de le changer dans la copie de développement, car il n'expose que des données significatives lorsqu'il est connecté aux données personnelles réelles en production, que vous supprimez, mais vous et vos collègues pouvez être en désaccord avec moi.)

Modifier les données pour un SSN à la fois - par exemple, entrer une ligne de 000, Proxy, Proxy dans la TableA; changer tous les SSN de 111 dans les autres tables à 000; changer SSN 111 dans les Tableaux A à 999; changer tous les SSN 000 dans les autres tables à 999. Je l'ai fait dans les données de production, quand quelqu'un a été enregistré avec deux ID de service différents dans des bases de données différentes et nous devions fusionner les données de deux ID.

Copie de données dans une base de données ne comportant pas de contraintes référentielles sur les tables; changez les données comme vous voulez, mais en terminant par des relations correctes; recopiez les données dans une autre base de données où il y a des contraintes.

Si la langue et la conception permettent, suppriment ou désactivent l'application de la clé étrangère, modifiez vos données, puis créez ou activez les clés étrangères. Mais méfiez-vous des contraintes dans la base de données qui étaient déjà désactivées. Si à la fin vous activez toutes les contraintes qui ont été désactivées, vous pouvez également activer les contraintes qui étaient déjà désactivées avant de commencer.

Des outils standard pour produire des données d'identité anonymes peuvent vous être utiles. Pour les noms, j'ai utilisé une méthode de prise d'une liste de prénoms raisonnables et distincts, et une liste de noms de famille, deux nombres premiers différents de longueur (ou "co-prime"). Prenez les noms dans l'ordre (semi-aléatoire) d'une liste, et de l'autre, à son tour, revenant de la fin de la liste au début. Les combinaisons de noms ne doivent pas être répétées avant que toutes les paires aient été utilisées une seule fois. Ma liste incluait une orthographe de "Mohamed", et comme nom de famille, parce que je pensais qu'il serait provocateur de produire un "Mohamed Singh". Il ne m'est pas venu à l'esprit d'utiliser "hsggghhgh", mais vous pouvez utiliser "User101first" et "User101last", etc.

0

Vous pouvez essayer avec quelques outils de brouillage ou de créer un algorithme qui génère quelque chose comme hashcode. Votre algorithme devrait toujours générer la même valeur si la valeur d'entrée est la même. Par exemple: - La valeur générée de 111 doit toujours être 999.