Outiller un audit de base de données

Chez OCTO nous réalisons beaucoup d’audits d’applications et ceux-ci comportent de plus en plus souvent un volet sur la base de données. Les motivations des audits sont diverses : le modèle de données est-il conforme à l’état de l’art ou à un standard d’entreprise ? Représente-t-il des risques pour l’application (performances, intégrité) ? Sera-t-il capable de supporter le lancement d’une telle fonctionnalité, triplant le nombre d’utilisateurs et la volumétrie ? Dans 10 ans et après 10 générations de prestataires, sera-t-il toujours lisible ? Comment mesurer la qualité des procédures stockées ?

Toutes ces questions font appel à l’expertise de l’auditeur. Néanmoins, devant un modèle monolithique de centaines de tables et de procédures stockées, il est évident qu’un outillage adéquat permet de gagner beaucoup de temps.

Cette idée a fait son chemin dans la tête de l’un d’entre nous (Désiré) : d’un outil personnel écrit en Java est né YODA[1], ou Yin OCTO Database Analyzer. Aujourd’hui YODA est fait par des OCTOs (5 contributeurs à ce jour), pour des OCTOs amenés à réaliser des audits de bases de données. Les utilisateurs sont aussi contributeurs, soit par l’ajout de fonctionnalités, soit par des retours du front sur l’outil : prise en main, stabilité, couverture fonctionnelle, idées d’amélioration, qualité de la doc.

Mais que permet de faire YODA exactement ? Il permet tout d’abord d’aspirer un modèle de données entier (structure) via une connexion à la base à auditer, ou en interprétant des ordres DDL (CREATE TABLE, CREATE PROCEDURE, …) stockés dans des scripts SQL.

Une fois cette étape de collecte faite, plus besoin de connexion à la base : les informations sont maintenues dans une petite base de données locale, sur laquelle la phase d’exploitation peut s’appuyer. Celle-ci produit un rapport d’appréciation sur la base d’origine, en faisant passer le méta-modèle collecté dans une série d’analyseurs. Le rapport rassemble :

  • des métriques factuelles sur le modèle (nombre de tables, de colonnes, de lignes, d’index, …) ou sur le code des procédures stockées (nombre de lignes, taux de commentaires, complexité cyclomatique, …) ;
  • des vérifications de règles données en amont (respect des conventions de nommage de l’entreprise, …) ;
  • des soupçons d’anti-patterns (clefs étrangères non indexées, tables sans clefs primaires, absences de forme normale, …) — ce sont plus des faits saillants portés à l’attention de l’auditeur, charge à lui de confirmer les alertes avec son expertise, le contexte et sa connaissance de l’architecture de l’application.

Ces analyseurs sont pour la plupart indépendants du moteur SGBD cible. Nous avons beaucoup d’autres idées en stock, des analyseurs combinant données, informations sur le modèle et code SQL, pour une approche globale de l’audit de base de données. Le code de YODA est conçu de telle sorte que l’ajout d’un analyseur soit le plus simple possible.

Comme toutes nos applications internes, le modèle de diffusion de YODA à l’intérieur d’OCTO est très proche de l’open source. A notre connaissance l’outil a très peu d’équivalents ailleurs et justement aucun en open source. Un jour l’ouvrir à l’extérieur d’OCTO, pourquoi ne pas ?

Et vous, outillez-vous vos audits de bases de données ? Avec quoi ?

[1] Georges, si tu nous lis : YODA est le nom interne de notre projet

4 commentaires sur “Outiller un audit de base de données”

  • Bonjour, y a t-il une chance pour que YODA soit distribué en dehors de la galaxie OCTO?
  • Vraiment pas possible d'en avoir une version pour tester ?
  • hello Thomas, intéressant sur l'aspect structure, envisages tu dans un avenir proche des fonctions d'analyse sur les valeurs ? Je prends quelques exemples. - Tout d'abord la similarité. Imagine que je gère le SI de plusieurs entreprises régionales qui ont la même activité, je voudrais mesurer la similarité des valeurs saisies par elles pour un même objet métier. Par exemple, ont-elles des segmentation client comparables ? - Ensuite des controles de cohérence inter-tables. Malheureusement comme partout, mes données sont dupliquées et je voudrais pouvoir vérifier par exemple que pour mon produit X ses caractéristiques sont bien les mêmes partout où c'est dupliqué. - bon après, il y a les classique comme vérifier que l'on a les bons patterns sur les données saisies (en dehors des format des attributs). En tous cas félicitations à toi, à Désiré et à toute l'équipe. @+ Laurent
  • Bonjour à tous, et merci pour ces marques d'intérêt ! J'ai évoqué une ouverture vers l'extérieur car c'est un des futurs possibles de YODA, mais ce n'est pas encore à l'ordre du jour... on commence tout juste à l'utiliser :) @Lolo La qualité des données est un aspect qui n'est pas du tout couvert, pour moi ça intervient plus dans des scénarios de suivi et de nettoyage itératif (par opposition à l'audit ponctuel). Pour le coup il y a du lourd chez les éditeurs :)
    1. Laisser un commentaire

      Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


      Ce formulaire est protégé par Google Recaptcha