Les règles de gouvernance des données, lorsqu’elles sont écrites dans un document Word ou un wiki, finissent souvent oubliées et obsolètes. “Policy as Code” est l’approche qui traite ces règles comme du code : on les écrit dans un format structuré (YAML, Rego), on les versionne dans Git, et surtout, on les valide automatiquement dans la CI/CD. Un changement qui viole une règle de qualité ou d’accès ne peut tout simplement pas être déployé. Cela transforme la gouvernance d’un processus manuel et réactif en un filet de sécurité automatisé et proactif.
de la règle floue au test bloquant
L’objectif est de passer d’un document qui peut être ignoré à un test automatisé qui ne peut pas l’être.
les domaines d’application
“Policy as Code” s’applique à plusieurs domaines critiques de la gouvernance des données.
comment ça marche en pratique
étape 1: encoder la politique
La politique est définie dans un fichier lisible par l’homme et la machine, comme le YAML. Ce fichier est la source de vérité.
# policies/datasets/ventes_orders.yml
policy:
dataset: ventes.orders_v
owner: "@team-sales"
access:
read_roles: ["bi", "finance_analyst"]
quality:
freshness_max_hours: 6
tests:
- "amount_eur >= 0"
- "country_code in ('FR', 'DE', 'ES')"
retention:
retention_days: 365
anonymization_policy: "anonymize_user_data_v1"
étape 2: valider dans la ci
À chaque pull request qui modifie un produit de données, la CI exécute un validateur qui compare les changements au fichier de politique.
étape 3: gérer les exceptions
Aucune règle n’est absolue. Une exception doit être possible, mais elle doit être explicite, motivée et temporaire.
# policies/exceptions/temp_finance_access.yml
exception:
policy_id: "ventes_orders.yml#access"
granted_to_role: "finance_controller"
reason: "audit trimestriel q3 2024"
expiration_date: "2024-10-31"
pièges et parades
-
Symptôme: Les politiques sont si complexes que personne ne comprend pourquoi un build échoue.
- Cause: Des règles obscures et des messages d’erreur cryptiques.
- Correctif: Les politiques doivent rester simples. Les messages d’erreur du validateur doivent être clairs et indiquer exactement quelle règle a été violée et comment la corriger.
-
Symptôme: Le nombre d’exceptions explose et devient la norme.
- Cause: Les politiques sont trop rigides et les exceptions n’ont pas de date de fin.
- Correctif: Chaque exception doit avoir une date d’expiration et faire l’objet d’une revue périodique.
-
Symptôme: Les équipes contournent le système car il est trop lent.
- Cause: La validation dans la CI prend trop de temps.
- Correctif: Le validateur de politique doit être extrêmement rapide (quelques secondes). Il ne doit pas exécuter de longues requêtes, mais simplement comparer des métadonnées et des schémas.
faq
-
Quels outils utiliser pour implémenter “policy as code” ? Pour commencer, des scripts Python simples et des tests
dbtpeuvent suffire. Pour des besoins plus avancés, des outils comme Open Policy Agent (OPA) sont le standard de l’industrie. Ils fournissent un langage (Rego) spécifiquement conçu pour écrire des politiques. -
Cela ne rend-il pas les choses trop rigides ? Au contraire. En rendant les règles explicites et testables, on clarifie le cadre. Cela permet aux développeurs d’innover en toute confiance à l’intérieur de ce cadre, sans avoir à demander la permission à chaque étape. La rigidité apparente de l’automatisation crée en réalité plus de flexibilité et de vitesse.