Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
db-anonym
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lib
unicaen
db-anonym
Commits
429d68b3
Commit
429d68b3
authored
3 years ago
by
Bertrand Gauthier
Browse files
Options
Downloads
Patches
Plain Diff
Doc
parent
d0918c9e
No related branches found
No related tags found
No related merge requests found
Pipeline
#12353
passed
3 years ago
Stage: publish
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+96
-4
96 additions, 4 deletions
README.md
with
96 additions
and
4 deletions
README.md
+
96
−
4
View file @
429d68b3
# unicaen/db-anonym
Module `unicaen/db-anonym`
==========================
Ce module permet d'anonymiser et de restaurer la base de données d'une appli, selon ce qui est spécifié
dans un fichier de configuration.
Principe
--------
Ce module utilise le module Faker : https://github.com/FakerPHP/Faker.
Ce module permet d'anonymiser les données de la bdd principale sur laquelle pointe une appli. Il permet aussi de
restaurer les données initiales (même si dans la plupart des cas d'usage l'anonymisation sera faite de façon définitive
lors de la préparation d'une bdd de démo par exemple).
Les données fictives utilisées pour anonymiser sont générées à l'aide de
[
FakerPHP
](
https://github.com/FakerPHP/Faker
)
.
Les tables et colonnes concernées sont spécifiées dans un fichier de config, en terme de classe d'entité et de champs
Doctrine. Cf.
[
exemple de config
](
./config/unicaen-db-anonym.local.php.dist
)
.
Il est possibles d'écarter de l'anonymisation/restauration certains enregistrements selon la valeur d'un champ
(cf. clés de config
`'except'`
).
Préalables
----------
-
Une table
`_METADATA`
munie d'un témoin d'anonymisation est utilisée pour enregistrer le fait que la bdd a été anonymisée
ou non.
*
Cela empêche qu'un script de restauration ne soit généré à partir d'une bdd anonymisée, auquel cas on ne pourrait
pas restaurer les données d'origine !
*
Le script de création de cette table dans une bdd Postgres est fourni
[
ici
](
./sql/schema.postgres.sql
)
.
Actions disponibles
-------------------
### Génération des scripts d'anonymisation/restauration
Le module génére 2 scripts SQL :
-
1 script d'
*anonymisation*
des données (clé de config
`['output']['anonymisation']`
) ;
-
1 script de
*restauration*
des données originales (clé de config
`['output']['restauration']`
).
L'idée est de parcourir tous les enregistrements de chaque entité/table (sauf ceux écartés d'après la config) pour
générer d'une part un
`update ... where id = ...`
d'anonymisation inscrit dans le script d'anonymisation
et d'autre part un
`update ... where id = ...`
de restauration inscrit dans le script de restauration.
Aperçu d'un script d'anonymisation :
```
sql
update
DOCTORANT
set
INE
=
'646f9de9fcca4a99bab2690608082e4b'
where
id
=
48868
;
update
DOCTORANT
set
INE
=
'3a183d8d7279e1a96b9d28ef946f954a'
where
id
=
48910
;
update
DOCTORANT
set
INE
=
'97e795820dc7ad554861f4506560bd6c'
where
id
=
48892
;
update
DOCTORANT
set
INE
=
'4099c33d8adbde2cfbc8935f37daecf1'
where
id
=
30070
;
update
DOCTORANT
set
INE
=
'969deb1e7289759e3003c45cea027a42'
where
id
=
30071
;
update
DOCTORANT
set
INE
=
'd6026025bcbff07930ffb98e349a4672'
where
id
=
30073
;
```
Aperçu du script de restauration associé :
```
sql
update
DOCTORANT
set
INE
=
'0BLTV200U26'
where
id
=
48868
;
update
DOCTORANT
set
INE
=
'086OO5006D1'
where
id
=
48910
;
update
DOCTORANT
set
INE
=
'03140E00MA4'
where
id
=
48892
;
update
DOCTORANT
set
INE
=
'03140E00MZ9'
where
id
=
30070
;
update
DOCTORANT
set
INE
=
'03140E00N22'
where
id
=
30071
;
update
DOCTORANT
set
INE
=
'03140E00N33'
where
id
=
30073
;
```
```
bash
php public/index.php unicaen-db-anonym generer
```
### Lancement de l'anonymisation
Si le script d'anonymisation
**et**
celui de restauration ont été générés, le module est en mesure d'exécuter le script
d'anonymisation.
```
bash
php public/index.php unicaen-db-anonym anonymiser
```
À l'issue de l'anonymisation, le témoin d'anonymisation est mis à '1' dans la table
`_METADATA`
, ce qui empêchera de
lancer inutilement une nouvelle anonymisation mais surtout de regénérer un script de restauration à partir de la bdd
anonymisée.
### Lancement de la restauration
Si le script d'anonymisation
**et**
celui de restauration ont été générés, le module est en mesure d'exécuter le script
de restauration.
```
bash
php public/index.php unicaen-db-anonym anonymiser
```
À l'issue de la restauration, le témoin d'anonymisation est mis à '0' dans la table
`_METADATA`
, ce qui empêchera de
lancer inutilement une nouvelle restauration.
Remarques importantes
---------------------
-
Les scripts d'anonymisation/restauration ne visent que les enregistrements qui existaient dans la bdd cible au moment
de leur génération. Si les données de cette bdd évoluent dans le temps (par exemple à l'issue d'un import de données
périodique ou au fil de l'utilisation de l'appli pointant sur cette bdd), ces scripts n'impacteront pas les nouveaux
enregistrements apparus (au mieux) ou planteront sur les enregistrements disparus (au pire).
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment