|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Bonjour à tous,
J'ai besoin de faire un dump de ma base de données tout en anonymisant certaines données, notamment des noms. Malheureusement, je ne vois pas comment je peux faire pour y inclure dans la requête de dump. L'anonymisation peut être de différente forme, soit une séquence (nom1, nom2, nom3, ...) ou une randomisation (Mr dupigniouf deviendrai Mr ddfgshdfkjhe) ou toutes autres idées. merci pour vos réponses |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Puis vous faites le dump.
|
|
|
00
|
|
|
#3 | |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Citation:
J'ai oublié de le préciser, toutes mes excuses. |
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Ok super variante alors :
- Dumper votre base de prod - Remontez le dump sur une base temporaire - Appliquer la procédure initiale à la base temporaire Vous pouvez même faire un script qui fait tout ça si vous devez faire la manip régulièrement. |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Ok merci bien pour ta réponse.
Encore une petite question : comment faire une requête de randomisation de nom? Mr dupigniouf deviendrai Mr ddfgshdfkjhe. merci |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : mars 2005 Messages : 1 565 ![]() |
Si vous savez développer, vous pouvez faire une fonction utilisateur (UDF) sur votre SGBD qui génère une chaine aléatoire. Il suffira de l'appeler dans votre requête update pour valoriser le nom.
|
|
|
00
|
|
|
#7 | |||||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
C'est mieux de randomiser les colonnes qui participent aux filtres dans l'application, ça permet de conserver la distribution des données entre la dev et la prod.
Citation:
C'est faisable en une requête, tout dépend du SGBD utilisé (déjà pour la fonction random mais aussi en fonction des fonctionnalités offertes), par exemple sur oracle : Code :
Ci dessous le jeu de test : Code :
C'est totalement impossible à faire en une requête sur mysql.... |
|||||
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Merci pour ta réponse, je vais essayer ça. je suis sur oracle 10
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Salut,
Faut faire attention quand même Skuat, ce genre de décision doit se faire valider par des RSSI et autres... Même si les libellés sont redistribués de manière incohérente, ça peut divulger le nom d'un client, des numéros de téléphones, des libellés d'opérations (genre bancaire), ... je suis pas sûr qu'il soit safe de laisser extraire la liste des numéros de téléphones des clients de ta boite Bref, dbms_random.string, dbms_random.value, pour randomiser juste ce qui est nécessaire.
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#10 |
![]() ![]() Inscription : octobre 2008 Messages : 1 508 ![]() |
Mais quel peut être l'intérêt de remplacer un nom par une chaine aléatoire au lieu d'une chaine vide ou d'omettre carrément la colonne, si la chaine aléatoire est de toute manière inexploitable pour quoi que ce soit?
Il me semble que la technique de remplacement d'une valeur par une autre n'est utile que si c'est fait par une fonction au sens mathématique du terme, c'est-à-dire que si x=y alors f(x)=f(y) ce qui n'est pas le cas dans une technique à base de random(). Ce serait le cas en revanche pour une fonction de cryptage. De cette manière les éventuelles relations entre colonnes sont préservées. |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 653 ![]() |
Bein pour des environnements de test par exemple, c'est quand même agréable d'avoir des données autre que vide.
|
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Le cryptage effectivement (à partir du moment où la clef est bien gardée) ça serait l'idéal !
Après, ce qui reste vrai dans tous les cas, c'est qu'il faut faire du cas par cas avec les règles de gestion de chaque donnée. (Genre randomiser ou crypter n'importe comment les numéros de téléphone, ça peut faire un carnage. On s'est aperçu chez nous que la déperso faisait sauter tous les caractères spéciaux. Du coup, c'est en pré-prod que ça claque, parce que dans les environnements de tests tous les cas particuliers avaient été squizzés
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Ok pacmann, c'est sûr que c'est pas le développeur qui chosit.
En fait j'avais mal lu son poste à la base et je pensais que c'était ce qu'il voulait. Sinon pour avoir une valeur absurde il suffit peut être de translate les caractères : Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Je pense justement qu'il faudrait que ce soit pas facielment décodable
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#15 | ||
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Alors peut être mieux coupler TRANSLATE avec DBMS_RANDOM
Code :
|
||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 417 ![]() |
Ben tu coup tu pouvait te contenter de dbms_random.string ?
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
00
|
|
|
#17 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
Doh, je l'avais pas vu...
|
|
|
00
|
|
|
#18 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
L'anonymisation mal faite peut avoir des conséquences catastrophiques suivant ce que vous envisagez de faire sur la base anonymisée après.
Par exemple si vous voulez faire un audit, une anonymisation conduit assez systématiquement à des erreurs d'interprétation du fait de la transformation des données (impact sur le volume de données, les index;;etc). Une technique classique d'anonymisation qui respecte les données est de décaler les colonnes. Par exemple de décaler le nom et le prénom de n lignes. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#19 |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Bonjour,
je reviens vers vous après un week end prolongé. Donc dans l'idée, je résume les différentes étapes :
Peut on exporter un schéma en excluant certaines tables? |
|
|
00
|
|
|
#20 | |
|
Membre confirmé
![]() ![]() Inscription : avril 2006 Messages : 295 ![]() |
Citation:
le but est de fournir des données réelles et récentes pour le développements d'évolutions et assurer la maintenance. Même si tous cela est assuré en interne, il est important d'anonymiser certaines données notament tous ce qui permet d'identifier les personnes. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com