Anonymisation de données avec HR Access

26 Juin 2010

 

Éléments juridiques

La mise en oeuvre d’un traitement de données à caractère personnel sans avoir pris les mesures utiles pour préserver la sécurité des données est punie de 5 ans d’emprisonnement et de 300 000 euros d’amende (art. 226-17 du Code pénal).
La communication d’informations à caractère personnel à des personnes non autorisées est punie d’une peine de 5 ans d’emprisonnement et de 300 000 euros d’amende (art. 226-22 du Code pénal).
Il faut assurer la sécurité des données en adoptant des mesures de sécurité physique (sécurité des locaux) et logiques (sécurité des systèmes d’information) adaptées à la nature des données et aux risques présentés par le traitement (CNIL).
seules les personnes autorisées peuvent accéder aux données personnelles contenues dans un fichier. Il peut s’agir des destinataires explicitement désignés pour en obtenir la communication ou de "tiers autorisés" (CNIL)
Les transferts internationaux de données ne peuvent avoir lieu que vers des pays accordant une protection adéquate ou si les destinataires entourent de garanties suffisantes les données transférées (CNIL).

Concepts


L’anonymisation est un procédé permettant de rendre anonyme des données à caractère personnel. Le mécanisme est réversible / irréversible s'il permet ou non de remonter aux données originelles. Il est inversible si une procédure exceptionnelle permet de les retrouver (déchiffrement).

Un identifiant est qualifié de nominatif s’il permet de déterminer le nom de la personne concernée (ex : jacques.martin@webmail.com). Dans le cas contraire, il est considéré comme anonyme.

Des données sont indirectement nominatives si elles permettent d’identifier une personne bien qu'elles ne soient pas accompagnées d’une identité : toute forme de numéro ou d’immatriculation, (matricule, adresse IP, n° de sécurité sociale, numéro fiscal, n° de carte de crédit, téléphone, voiture, adresse - et aussi : photo, voix, empreintes digitales…). "Indirectement" car il faut pouvoir rapprocher l’information d’une table de conversion ou de connaissances complémentaires pour faire le lien avec une personne.

La chaînabilité est la capacité à fusionner ou croiser des informations à partir de différentes sources.

Une attaque par inférence permet de lever l'anonymité d'un identifiant.

Une inférence peut être :
* déductive : logique simple (ex : une responsabilité hiérarchique peut permettre de retrouver un identifiant),
* inductive : logique complexe (ex : un statut cadre associé à une affectation peut permettre de retrouver un identifiant)
* abduction : hypothèses plus ou moins plausibles mais in fine correctes (ex: l'attribution d'une voiture de fonction puissante, un niveau de salaire élevé peut permettre de retrouver un identifiant)
* adduction : à partir d’observations externes (ex: une date et lieu de naissance, d'embauche, congés, formation peut permettre de retrouver un identifiant)

 

Techniques d'anonymisation

D'un point de vue architectural, le mécanisme d'anonymisation se doit de transformer les "données réelles" sur l'environnement source avant leur transfert sur une cible "anonymisée".

Diverses techniques sont utilisables pour anonymiser un jeu de données :
* La suppression, pour les données n’ayant que peu d’importance applicative,
* Le masquage (par mise à zéro, écrasement par des XXX) pour dissimuler des champs,
* La concaténation (remplacement la combinaison de champs figurant dans la source),
* Le chiffrement pour crypter des données sensibles,
* La translation (à partir d'une table de correspondance),
* Le vieillissement (remplacement des dates sensibles),
* La génération de données fictives (aléatoires ou à partir d'une bibliothèque),
* L’obfuscation (ajout d’éléments factices).

Les outils de « chiffrement » ne sont pas toujours pertinents car :
* Les données chiffrées sont « non-fonctionnelles » (problème des longueurs de champs, cohérence des historiques, intégrité référencielle …),
* Les mécanismes sont conçus pour être déchiffrés,
* Les données chiffrées ne sont pas lisibles par des utilisateurs humains.

Dans le cas de l’anonymisation de données servant de clef unique (ex : un matricule) le mécanisme devra de plus éviter les « collisions » (clefs en double).

 

Anonymisation de données dans le cadre de HR Access


Mettre en place une anonymisation des données n’a de sens que si l’on a pris soin de :
* Délimiter l'ensemble des environnements « à données réelles » (sans anonymisation).
* Enregistrer et responsabiliser les personnes habilitées à accéder à ces données réelles (hors le cadre normal des utilisateurs gestionnaires),   
* Fiabiliser, tracer les accès aux données réelles quelles que soient les interfaces (client OS, client SGBD, client HR : gestion des mots de passe, des profils, des droits d’accès),

Prendre en compte aussi :
* le cas des fichiers gérés en cache par les différents mécanismes du système d'information ou transitant sur le réseau,
* le cas des exports de base, des bandes de sauvegarde, des copies locales ou sur des sites externalisés,
* le cas des éditions de masse, courriers, sorties papier.

Logiquement, les données réelles ne devraient être présentes que sur des environnements de type "production". Les données des autres environnements étant anonymes ou factices, soit qu’elles sont issues de l’anonymisation de données réelles, soit qu’elles ont été créées de toute pièce.

Anonymiser les données d'un progiciel de RH est en soi une gageure.
Hors le cas de la création de données factices, je distinguerai 3 niveaux d’anonymisation :

  • Anonymisation de l’identité civile
- Les éléments personnels sont traités (nom, prénom de l'employé, de son conjoint, de ses enfants, téléphones, mails, adresses, comptes bancaires …).
- Le matricule reste inchangé,

Le dossier anonymisé ne donne plus accès à des coordonnées strictement personnelles, mais conserve toutes ses propriétés de gestion administrative, paie et formation.

Avec cette option on évite de toucher au matricule car il sert de clef fonctionnelle (ZY, YS, ZX), il est référencé à de multiples endroits, notamment dans les archives, le PRDB, la formation. Il est utilisable pour communiquer entre tiers (MOE/MOA/Intégrateur).   

Avec la présence en clair du matricule originel et un accès relativement facile à l’annuaire de l’entreprise, on ne peut pas considérer que les données soient strictement anonymisées.
  • Anonymisation du matricule
- En plus des éléments précédents, le matricule est traité

Si un dossier reste atypique par ses données de gestion (ex : affectation, carrière, diplôme) on ne peut pas considérer que les données soient strictement anonymisées.

Les mécanismes de renumérotation de NUDOSS se basent sur le matricule pour retrouver le lien entre dossiers ZY et YS (archives de paie ou de rappel). On trouvera le même type de lien pour les contrôles de correspondance entre ZY et le PRDB, la formation … Ceci implique un mécanisme permettant d’attribuer un « matricule anonyme » de la même manière quel que soit l’environnement cible (~ table de transcodification).

Pour le cas de « Debug » sur des dossiers, il peut s’avérer utile de permettre la mise en correspondance avec les matricules originels. Il faut alors prévoir un moyen pour rendre lisible cette table de correspondance à certaines personnes de la MOE/MOA tout en préservant cette confidentialité. Un risque étant qu’une personne non autorisée reconstruise au fil du temps cette table de correspondance.

  • Anonymisation des données de gestion
- Les données de gestion sont à traiter (carrière, affectation, formations, diplomes, …).

C’est envisageable pour des données sans conséquences fonctionnelles (historique militaire, mensurations, diplôme …).
C’est sans doute nécessaire pour des données particulières (fonctions de représentation du personnel).

Si cette option est prise pour les informations de gestion principales (carrière, affectation, formations), cela va fortement impacter l’intégrité fonctionnelle des données. Je pense que cette option n’est alors pas envisageable si l’on souhaite retrouver sur la cible des dossiers fonctionnels.


Mise en place d'un outil d'anonymisation avec HR Access


Les mécanismes utilisés seront les suivants :
* Export des données sur l'environnement source par la chaîne NOY
* Anonymisation des données sur l'environnement source par la chaîne NRO
* Transfert du fichier sur l'environnement cible
* préparation du chargement des données anonymisées sur l'environnement cible par la chaîne NOZ
* mise a jour complémentaires sur la cible (ex : séquences d'attribution des NUDOSS, rubrique NUGEST du PRDB)

1 - Création des objets


  • Traitement WW ANONZY de type "BRE". Alimenter dans ce traitement les règles de transformation des données. Exemple :
  -------------------------------------------------------------- AA
  010    N      ANONYMISATION ZY                    10    BL                               
  -------------------------------------------------------------- AD
  010    N      ZY05-NOMPAT                         20    IT    UT-CDSTDO="ZY"             
  020    *      Meme nom pour tous                        AN    UT-CDINFO="05"             
  030    M      "AUNYME"           E-ZY05-NOMPAT                                           
  040    M      "AUNYME"           E-ZY05-N05TRI                                           
  -------------------------------------------------------------- AP
  010    N      ZY06-PRENOM                         20    IT    UT-CDSTDO="ZY"             
  020    *      Meme prenom pour tous                     AN    UT-CDINFO="06"             
  030    M      "ANNE"             E-ZY06-PRENOM                                           

  • Processus utilitaire YIYZY (qualification UT). Y rattacher toutes les informations utilisées par les dossiers (une information non rattachée en consultable et saisissable ne sera pas exportée), Réduire les "nombres d'occurrence" attribués aux informations si la génération sort en erreur.
  • Processus de migration YXYZY (qualification RI). Y rattacher toutes les informations utilisées par les dossiers (une information non rattachée en consultable et saisissable ne sera pas reprise), Réduire les "nombres d'occurrence" attribués aux informations si la génération sort en erreur. Y rattacher le traitement de BRE. Donner comme "radical utilisateur 1" au processus son propre radical (YXYZY).

2 - Générez les processus


3 - Test

  • Exportez un dossier par NOY avec le processus utilitaire YIYZY (création de fichiers PSBBCG00.C00 et PSBBCG01.C00 a renommer PSBBCG00 et PSBBCG01).
  • Anonymisez les données avec la NRO de YXYZY (création d'un fichier PSBBRDND).
  • Transférez PSBBRDND et renommez le PSBBCG00.C00. Créez PSBBCG01.C00 à vide.
  • Préparez l'import par exécution de NOZ avec votre processus utilitaire YIYZY (création de fichiers PSBBCL*).
  • Importez avec BQL et/ou votre utilitaire SGBD de load.

4 - Annexe

Dans le cadre d'une anonymisation de l’identité civile dans ZY et ZX, il est nécessaire de traiter les données suivantes (liste issue d'un dictionnaire HRv7.1 à revoir et compléter en fonction du site et des spécificités mises en place) :
  • ZY05:N05TRI NOMPAT
  • ZY06:PRENOM PRENO2
  • ZY07:N07TRI NOMUSE QUALIT
  • ZY0F:CDPOST ZONADA ZONADB ZONADC ZONADD ZONADE
  • ZY0H:NUMTEL ZY0I:AGEFIN BANFIN CPIBAN CPTFIN LIBBAN LIBBEN QUALIT
  • ZY10:DATNAI SEXEMP
  • ZY3B:IDJB00
  • ZY3Y:NMPRES
  • ZYCJ:NOMPAT PRENOJ
  • ZYE5:NOMPAR PREENF
  • ZYFF:SSANNE SSCLEF SSCOMM SSDEPT SSMOIS SSNORD SSSEXE
et :
  • ZX00:NOMSAL NUGEST
  • ZX30:CODSEX DATNAI LIBSEX
  • ZX31:N07TRI NOMUSE QUALIT
  • ZX32:N05TRI NOMPAT
  • ZX33:PRENOM PRENO2
  • ZX34:GROUPE
  • ZX39:CDPOST ZONADA ZONADB ZONADC ZONADD ZONADE
  • ZX3A:IDJB00
  • ZX3P:BENEFI CODBAN CODGUI CPIBAN LIBBAN NUMCOM QUALIT
  • ZX3Y:NMPRES

1 commentaire:

  1. Merci, très intéressant.

    J'ai fait un script d'anonymisation post-NOY mais j'ai un awk horrible pour décoder et anonymiser le fichier produit, la solution à base de NRO est bien plus simple à maintenir.

    Dommage qu'il n'y ait pas la gestion du numéro de lancement, ce serait bien l'éditeur fasse évoluer cette chaîne d'autant plus qu'avec les règles RGPD c'est quelque chose d'encore plus important aujourd'hui.

    Pour la mise en place je pense mettre en place une randomisation des champs dans le traitement BRE. En TBPBR2 on initialisera la fonction RANDOM soit avec clef unique fixe (nudoss d'origine) et/ou variable (horodatage d'extraction.

    RépondreSupprimer