La mise en conformité avec le règlement général sur la protection des données (RGPD) peut imposer d'ajouter dans les applications une fonction d'anonymisation de certaines données.


Lorsque les données sont dans une table HFSQL sans journalisation, le processus ne nécessite pas d'action particulière. La donnée devant devenir anonyme, pourra simplement être remplacée par d'autres caractères ou mise à vide. Un traditionnel HModifie ou une requête Update suffit.


En revanche lorsque la journalisation est active, en parallèle du fichier de données un journal va stocker l'intégralité des actions faites sur les enregistrements :

  • fonctions utilisées
  • valeurs de toutes les colonnes/rubriques avant une modification...


Rappelons que la fonction HHistoriqueModification permet à tout moment en une ligne de code de connaître l'historique des valeurs des colonnes/rubriques d'un enregistrement. On peut ainsi instantanément répondre aux demandes de suivi : qui a modifié quoi, quand, quels sont les changements, depuis quelle application...


Dans ce cas le processus d'anonymisation doit donc pour être complet également aller supprimer du journal, les informations qui ne doivent plus être lisibles. L'opération reste simple car :

  • le journal d'un fichier est également un fichier HFSQL d'une base de données dédiée de HFSQL client/serveur. Ce fichier journal contient des rubriques liées à la journalisation, mais reprend également l'intégralité des rubriques du fichier dont il est le journal,
  • la fonction WLangage HDéclareExterne permet de lire un fichier HFSQL quelconque, du moment que les droits d'accès nécessaires sont attribués à l'utilisateur connecté.


Si par exemple l'application travaille sur une table journalée Client d'une base de données GestionClient, le moteur HFSQL client/serveur aura dans sa base dédiée aux journaux une table \GestionClient\ClientJNL.


Ainsi le code suivant permettra d'accéder aux données d'un journal pour remplacer d'anciennes données :

 

// Connexion à la base des journaux

CnxJournaux est une Connexion
CnxJournaux..Provider = hAccèsHFClientServeur
CnxJournaux..Utilisateur = "Utilisateur"
CnxJournaux..MotDePasse = "MotPasse"
CnxJournaux..Serveur = "GB:4924"
CnxJournaux..BaseDeDonnées = "__JNL" // Base dédiée des journaux
CnxJournaux..Cryptage = hCryptRC5_16
HOuvreConnexion(CnxJournaux)

// Déclaration d'une source de données pour accès journal

JNL est une Source de Données
HPasse(JNL, "MotDePasse") // Mot de passe journal = mot de passe fichier de données
HDéclareExterne(".\GestionClient\ClientJNL.fic", JNL, CnxJournaux)

// Parcours du journal en filtrant sur un identifiant automatique

// il serait aussi possible d'utiliser la rubrique Record_Number

// du journal afin de filtrer suivant le numéro d'enregistrement du fichier

POUR TOUT JNL AVEC "IDClient = "+nIDCLient
JNL.DATA = Remplace(JNL.DATA, "Enreg", "XXX")
HModifie(JNL)
FIN

HAnnuleDéclaration(JNL)
HFermeConnexion(CnxJournaux)

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée