<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>automation &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/automation/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:23:31 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>automation &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Expériences avec la Crypto Policy as Code</title>
		<link>https://www.smalsresearch.be/experiences-avec-la-crypto-policy-as-code/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Tue, 02 Dec 2025 15:52:26 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=24600</guid>

					<description><![CDATA[La politique de cryptographie en tant que code ou Crypto Policy as Code (CPaC) est un principe très récent qui permet de respecter automatiquement les recommandations en matière de cryptographie. Cet article vise à concrétiser nos idées concernant la CPaC. Une représentation des politiques cryptographiques en JSON est proposée et utilisée à titre de base pour quelques expériences.]]></description>
										<content:encoded><![CDATA[
<p><em>Dit artikel is ook beschikbaar&nbsp;in het&nbsp;<a href="/experimenten-met-crypto-policy-as-code/">Nederlands</a>.</em></p>



<p>La politique de cryptographie en tant que code ou <a href="/vers-une-observation-automatique-des-recommandations-cryptographiques/">Crypto Policy as Code (CPaC)</a> est un principe très récent qui permet de respecter automatiquement les recommandations en matière de cryptographie. Cet article vise à concrétiser nos idées concernant la CPaC. Une représentation des politiques cryptographiques en JSON est proposée et utilisée à titre de base pour quelques expériences. L&#8217;objectif est de rendre le potentiel de la CPaC plus tangible et plus compréhensible, et ainsi d&#8217;inspirer certains lecteurs.</p>



<h1 class="wp-block-heading">« Everything as Code »</h1>



<p>L&#8217;approche <em>Everything as Code</em> (tout en tant que code) vise à exprimer tous les composants d&#8217;un système informatique (infrastructure, réseau, sécurité, pipelines de déploiement&#8230;) sous forme de code. Elle autorise un haut degré d&#8217;<strong>automatisation</strong> des processus et de la gestion. Elle nous offre un meilleur <strong>aperçu</strong> et nous permet de mieux <strong>anticiper</strong> et d&#8217;intervenir en cas de besoin. Il en résulte également une <strong>cohérence </strong>et une <strong>évolutivité</strong> accrues grâce à une moindre intervention humaine. Il nous semble non seulement utile, mais aussi nécessaire à terme d&#8217;adopter cette approche dans le cadre de la gouvernance cryptographique.&nbsp;</p>



<p>Lorsque Smals Research a débuté l’étude du CPaC début 2025, il n’existait pratiquement aucune information à ce sujet. Depuis, le CPaC semble également avoir attiré l’attention de plusieurs entreprises, notamment <a href="https://garantir.io/cryptographic-policy-enforcement-at-scale-automating-compliance-without-slowing-down-devops/">Garantir</a>.</p>



<p>Un premier aspect de la CPaC est l&#8217;expression des actifs cryptographiques (algorithmes, clés, certificats, hardware, bibliothèques&#8230;) sous forme de code. Cela permet de gérer et d&#8217;interroger automatiquement l&#8217;inventaire des actifs cryptographiques d&#8217;une organisation. Un tel inventaire est systématiquement recommandé dans le contexte de l&#8217;état de préparation quantique et de l&#8217;agilité cryptographique.</p>



<p>Le modèle <a href="https://cyclonedx.org/capabilities/cbom/">CBOM</a> (<em>Cryptography Bill of Materials</em> ou nomenclature de cryptographie) permet d&#8217;exprimer les actifs cryptographiques d&#8217;une organisation en code JSON. Bien qu&#8217;il soit encore très récent, nous pensons qu&#8217;il sera largement adopté dans les années futures. Nous prévoyons qu&#8217;à l&#8217;avenir, les services <em>cloud</em>, les bibliothèques, les systèmes d&#8217;exploitation et le hardware, entre autres, seront fournis avec une description de la cryptographie appliquée et supportée, exprimée selon le modèle CBOM. Une organisation pourra ensuite importer ces descriptions dans son inventaire cryptographique.</p>



<p>Eu égard à cette perspective, nous intégrons autant que possible nos propositions de CPaC dans le modèle CBOM. L&#8217;illustration ci-dessous est le résultat d&#8217;une analyse statique du code et montre dans le code CBOM que <a href="https://fr.wikipedia.org/wiki/Chiffrement_RSA">RSA-2048</a>&nbsp;est utilisé à trois endroits dans une application.&nbsp;&nbsp;</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/image-1.png"><img fetchpriority="high" decoding="async" width="1024" height="512" src="/wp-content/uploads/2025/11/image-1-1024x512.png" alt="" class="wp-image-24307" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-1024x512.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-300x150.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-768x384.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-1536x768.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1.png 1864w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<h1 class="wp-block-heading">« Crypto Policy as Code »</h1>



<p>Smals dispose d&#8217;une politique cryptographique qui indique quels algorithmes et paramètres cryptographiques sont recommandés, lesquels sont sûrs bien que non recommandés, lesquels doivent être progressivement supprimés et lesquels ne sont pas sûrs. Actuellement, ces recommandations sont exprimées de manière classique, que seuls les humains peuvent facilement comprendre. Nous nous sommes demandé comment exprimer ces recommandations sous forme de code.</p>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/11/image.png"><img decoding="async" width="300" height="283" src="/wp-content/uploads/2025/11/image-300x283.png" alt="" class="wp-image-24306" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/image-300x283.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image.png 613w" sizes="(max-width: 300px) 100vw, 300px" /></a></figure>



<p></p>



<p>Penchons-nous sur <em>AES-128-GCM</em>.&nbsp;<a href="https://fr.wikipedia.org/wiki/Advanced_Encryption_Standard"><em>AES</em></a>&nbsp;est le chiffre de bloc&nbsp;; il chiffre ou déchiffre des blocs de 128 bits. Le nombre <em>128</em> dans AES-128-GCM fait référence à la longueur en bits de la clé utilisée. Grâce au mode <a href="https://fr.wikipedia.org/wiki/Galois/Counter_Mode">GCM</a>, il est également possible de chiffrer et déchiffrer de plus grandes quantités de données.</p>



<p>Dans la partie gauche de l&#8217;illustration ci-dessous, la description de l&#8217;AES-128-GCM est présentée selon le modèle CBOM. On y trouve notamment des informations sur le niveau de sécurité classique et le niveau de sécurité quantique. Dans la partie droite de l&#8217;illustration se trouve notre proposition de formulation des recommandations sous forme de code. Nous maximisons ainsi la compatibilité avec CBOM&nbsp;; la structure, la nomenclature et les clés d&#8217;identification sont conservées. Dans le même temps, nous évitons la duplication des données que nous trouvons déjà dans la description CBOM.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/AES-128-GCM-ascode.png"><img decoding="async" width="1024" height="571" src="/wp-content/uploads/2025/11/AES-128-GCM-ascode-1024x571.png" alt="" class="wp-image-24310" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-1024x571.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-300x167.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-768x428.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-1536x856.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode.png 1721w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Les recommandations se trouvent dans le bloc <em>recommendation</em>. Il contient au minimum le niveau de recommandation <em>recommended</em>, <em>secure</em>, <em>phase-out</em> ou <em>insecure</em>.<em>&nbsp;</em>En outre, ce bloc peut contenir des informations supplémentaires facultatives, telles que&nbsp;:</p>



<ul class="wp-block-list">
<li>la date à laquelle le mécanisme cryptographique doit disparaître progressivement ;</li>



<li>la date de la dernière révision de la recommandation ;</li>



<li>les conditions d&#8217;utilisation correcte du mécanisme cryptographique ;</li>



<li>les remarques, par exemple sur les raisons pour lesquelles le mécanisme cryptographique n&#8217;est plus considéré comme sûr.</li>
</ul>



<p>À titre expérimental, l&#8217;équipe Smals Research a déjà exprimé certaines recommandations cryptographiques sous forme de code, notamment les fonctions de hachage cryptographiques, le&nbsp;<a href="https://fr.wikipedia.org/wiki/Cryptographie_sym%C3%A9trique">chiffrement symétrique</a>,&nbsp;les <a href="https://fr.wikipedia.org/wiki/Code_d%27authentification_de_message">message authentication codes</a>&nbsp;(MAC),&nbsp;les <a href="https://fr.wikipedia.org/wiki/Fonction_de_d%C3%A9rivation_de_cl%C3%A9">key derivation functions</a>&nbsp;(KDF) et <a href="https://fr.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>. Ces recommandations cryptographiques sont relativement simples et compatibles avec CBOM. De plus, un schéma JSON a été défini afin de valider l&#8217;exactitude de la syntaxe et de la structure de nos recommandations.</p>



<h1 class="wp-block-heading">Dérogations sous forme de code</h1>



<p>Idéalement, chaque partie qui sollicite nos services, notamment les hôpitaux, les pharmaciens et les CPAS, doit mettre à jour son logiciel en temps utile afin qu&#8217;il prenne en charge la cryptographie la plus récente et la plus sûre. Dans la pratique cependant, cette opération n&#8217;est pas toujours exécutée aussi rapidement et une dérogation à la politique cryptographique doit être autorisée exceptionnellement afin de ne pas compromettre les services essentiels aux citoyens.</p>



<p>L&#8217;illustration ci-dessous montre un exemple fictif d&#8217;une telle dérogation (<em>deviation</em>), où la structure proposée par Smals Research est suivie. Elle se compose de quatre blocs&nbsp;:</p>



<ul class="wp-block-list">
<li><strong>Scope.</strong> La dérogation peut s&#8217;appliquer à un service entier ou à certains modules spécifiques de celui-ci.</li>



<li><strong>Approval.</strong> Nous trouvons ici la référence à l&#8217;approbation par le management, ainsi que la justification et la durée de la dérogation. </li>



<li><strong>Assessment. </strong>Il s&#8217;agit de l&#8217;évaluation du risque. Une dérogation ne peut être approuvée qu&#8217;après une estimation préalable du risque, telle que décrite dans cette section.</li>



<li><strong>Allow. </strong>Cette section énumère les algorithmes ou suites cryptographiques autorisés. La structure de ce bloc provient directement du modèle CBOM.</li>
</ul>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/devascode-1.png"><img loading="lazy" decoding="async" width="1024" height="565" src="/wp-content/uploads/2025/11/devascode-1-1024x565.png" alt="" class="wp-image-24313" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-1024x565.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-300x165.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-768x424.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1.png 1436w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<h1 class="wp-block-heading">Scripts expérimentaux</h1>



<p>L&#8217;équipe Smals Research a rédigé plusieurs scripts afin d&#8217;illustrer la puissance de la CPaC. Les recommandations sous forme de code, les dérogations sous forme de code et/ou les descriptions CBOM constituent l&#8217;input.</p>



<h2 class="wp-block-heading">Script 1&nbsp;: configuration TLS</h2>



<p><a href="https://fr.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>&nbsp;(Transport Layer Security) est un protocole populaire de communication sécurisée entre deux parties. Avant d&#8217;échanger des données, les parties conviennent de la suite cryptographique (combinaison d&#8217;algorithmes) qu&#8217;elles utiliseront à cette fin.&nbsp;<a href="https://www.openssl.org/">OpenSSL</a>&nbsp;est un client TLS populaire.</p>



<p>Notre premier script génère la configuration OpenSSL relative à la cryptographie sur la base de la politique en tant que code et, le cas échéant, d’une déviation en tant que code. Le code produit, dont vous trouverez un exemple ci-dessous, peut ensuite être intégré dans <a href="https://man.openbsd.org/openssl.cnf.5"><em>openssl.cnf</em></a>, qui est le fichier de configuration openSSL. La dernière ligne de notre exemple contient la liste des suites cryptographiques&nbsp;; la dernière provient d’une dérogation, les autres sont sécurisées selon la politique cryptographique. L’ordre est important ici&nbsp;; la dérogation a la priorité la plus faible.</p>



<pre class="wp-block-code"><code><strong>&#91;default_conf]</strong>
ssl_conf = ssl_section

<strong>&#91;ssl_section]</strong>
system_default = system_default_section

<strong>&#91;system_default_section]</strong>
MinProtocol = TLSv1.3
CipherString = # Sets the ciphersuite list for TLSv1.2 and below to value. This list will be combined with any configured TLSv1.3 ciphersuites.
Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_8_SHA256</code></pre>


<p>À terme, cela pourrait servir de base pour maintenir à jour de manière coordonnée la configuration cryptographique pour le TLS de milliers de machines. Bien évidemment, cela nécessite la mise en place des procédures pour éviter les erreurs.</p>
<p>Nous proposons que la politique et les déviations en tant que code soient gérées par un service central. La politique peut être accessible à l’ensemble de l’organisation, tandis que les déviations doivent être protégées par un contrôle d’accès strict.</p>
<h2>Script 2&nbsp;: génération d&#8217;un PDF</h2>
<p>Pour la plupart des gens, un PDF bien structuré reste plus lisible qu’un fichier JSON. À partir de fichiers JSON, il n’est pas sorcier de générer de tels documents. C’est ce que réalisent nos deux scripts suivants.</p>
<p>Un PDF généré à titre expérimental contenant des recommandations de chiffrement symétrique peut être téléchargé <a href="/wp-content/uploads/2025/11/recommendation_symmetric-encryption.pdf">ici</a>. Il est parti du principe<em> policy as code</em>, mais il est fait également appel à CBOM pour enrichir le PDF ; les niveaux de sécurité classique et quantique en sont extraits.</p>
<p>Un deuxième fichier PDF généré à titre expérimental peut être téléchargé <a href="/wp-content/uploads/2025/11/recommendations_tls.pdf">ici</a>. Il contient des recommandations pour les suites cryptographiques TLS, complétées par des informations supplémentaires issues de la politique de cryptographie en tant que code. Un exemple de ce type d’informations est la date limite à laquelle une suite cryptographique peut être utilisée. Si un tel document était partagé avec les partenaires, cela leur permettrait d’anticiper en temps utile.</p>
<h2><strong>Script 3&nbsp;: OPA policy verification</strong></h2>
<p>CPaC est un concept puissant. Les scripts précédents nous permettaient de générer des fichiers PDF et des configurations TLS. CPaC nous permet également de valider les artefacts existants, en vérifiant si un chiffrement sûr est utilisé.</p>
<p><a href="https://www.openpolicyagent.org/">OPA</a> signifie Open Policy Agent. Il s&#8217;agit d&#8217;un moteur de politiques open source qui permet de séparer la logique applicative et les politiques. OPA permet aux organisations de centraliser leurs politiques et de les appliquer en temps réel. Différents services (Kubernetes, pipelines CI/CD, API gateways&#8230;) envoient des requêtes (<em>queries</em>) au format JSON au moteur de politiques afin de savoir si une action demandée par un client est autorisée. Sur la base d&#8217;une politique exprimée dans le langage <a href="https://www.openpolicyagent.org/docs/policy-language">Rego</a>, le moteur de politiques indique au service si la requête doit recevoir une réponse positive ou négative. Par exemple, le moteur de politiques peut recevoir la requête d&#8217;une application demandant si une personne âgée de 15 ans est autorisée à utiliser l&#8217;application, alors que la politique stipule que l&#8217;âge minimum est de 18 ans. Le moteur de règles peut également être interrogé pour déterminer si une configuration réseau est conforme à la politique OPA. Par exemple, il peut exiger que les ports Telnet ne soient jamais ouverts.</p>


<figure class="wp-block-image aligncenter size-full is-resized"><a href="/wp-content/uploads/2025/11/opa.png"><img loading="lazy" decoding="async" width="884" height="612" src="/wp-content/uploads/2025/11/opa.png" alt="" class="wp-image-24319" style="width:500px" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/opa.png 884w, https://www.smalsresearch.be/wp-content/uploads/2025/11/opa-300x208.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/opa-768x532.png 768w" sizes="auto, (max-width: 884px) 100vw, 884px" /></a></figure>



<p>Les services peuvent également poser des questions au moteur OPA concernant la <a href="https://www.openpolicyagent.org/docs/policy-reference/builtins/crypto">cryptographie</a>&nbsp;: la valeur donnée est-elle la valeur de hachage correcte (également appelée <em>fingerprint</em> ou <em>digest</em>) d’une charge utile donnée&nbsp;? Une valeur est-elle le MAC correct pour une donnée d’entrée et une clé donnés&nbsp;? Un certificat est-il signé par une autorité de confiance&nbsp;? Un certificat utilise-t-il une courbe elliptique sécurisée&nbsp;? …</p>



<p>Vous trouverez ci-dessous un exemple d’une telle requête et la politique correspondante. La politique stipule que la valeur de hachage de la charge utile est calculée à l’aide de la fonction de hachage (non sécurisée) <a href="https://fr.wikipedia.org/wiki/MD5">MD5</a>.</p>



<pre class="wp-block-code"><code><strong>Input by service to policy engine</strong>
{
  "payload": {
    "user": "alice",
    "action": "read",
    "resource": "/api/users"
  },
  "expected_digest": "ea99819f665c10c744cbbf8da651c37a"
}</code></pre>



<pre class="wp-block-code"><code><strong>OPA Policy (in Rego) applied by the policy engine</strong> 
package crypto_digest_verification
payload_json&nbsp;:= json.marshal(input.payload)
computed_digest&nbsp;:= crypto.<strong>md5</strong>(payload_json)
digest_valid&nbsp;:= computed_digest == input.expected_digest</code></pre>



<p>Une organisation souhaitant mettre en place CPaC devra vérifier que ses politiques OPA existantes sont conformes à la dernière version de la politique cryptographique. Notre script final vérifie donc si la cryptographie utilisée dans la politique OPA est conforme à notre politique cryptographique centrale. En entrée est la <em>crypto policy as code</em> et une politique OPA. En sortie on obtient soit un message indiquant que la politique OPA est conforme, soit, comme dans le cas ci-dessus, un avertissement précisant également quel algorithme non sécurisé a été utilisé. À long terme, nous souhaitons également pouvoir déduire directement de notre CPaC les politiques OPA relatives à la cryptographie.</p>



<h1 class="wp-block-heading">Conclusions</h1>



<p>Cet article met en lumière le potentiel d&#8217;une approche <em>everything as code</em> pour stimuler la maturité cryptographique d&#8217;une organisation. À l&#8217;aide d&#8217;un certain nombre de scripts relativement simples, nous montrons comment une politique cryptographique centralisée, exprimée sous forme de code, peut soutenir une organisation dans divers domaines, de l&#8217;automatisation des processus à la création de documentation, en passant par la vérification de l&#8217;utilisation de la cryptographie appropriée, par exemple dans les politiques OPA.</p>



<p>À terme, nous souhaitons permettre l&#8217;accès aux informations sous forme de code via des API REST. Ainsi, les informations les plus récentes seront affichées clairement sur des tableaux de bord interactifs pour les utilisateurs autorisés. Les systèmes et applications pourront également accéder aux informations en temps réel via cette API REST. Idéalement, nous travaillerons avec une politique et un inventaire unifiés sous forme de code, la cryptographie n&#8217;étant qu&#8217;un aspect de ce système.</p>



<p>Dans un monde idéal, une politique de cryptographie en tant que code &nbsp;pourrait être proposée par une organisation nationale ou européenne faisant autorité et pourrait être utilisée tant par le secteur public que par le secteur privé. Pour l’instant, cela reste une utopie. Au cours des prochaines années, nous pouvons nous attendre à une forte évolution dans ce domaine.</p>



<p><strong>N&#8217;hésitez pas à nous contacter si vous souhaitez échanger vos idées avec nous à ce sujet&nbsp;!</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Experimenten met Crypto Policy as Code</title>
		<link>https://www.smalsresearch.be/experimenten-met-crypto-policy-as-code/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Mon, 17 Nov 2025 06:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=24304</guid>

					<description><![CDATA[Crypto Policy as Code (CPaC), is een erg jong principe dat ons in staat stelt aanbevelingen met betrekking tot cryptografie op een automatische wijze na te leven. Dit artikel maakt onze ideeën rond CPaC meer concreet. Een representatie van cryptografische policies in JSON wordt voorgesteld en gebruikt als basis voor enkele experimenten.]]></description>
										<content:encoded><![CDATA[
<p><em>Cet article est aussi disponible&nbsp;en&nbsp;<a href="/experiences-avec-la-crypto-policy-as-code/">français</a>.</em></p>



<p><a href="/naar-automatische-naleving-van-cryptografische-aanbevelingen/">Crypto Policy as Code (CPaC)</a>&nbsp;is een erg jong principe dat ons in staat stelt aanbevelingen met betrekking tot cryptografie op een automatische wijze na te leven.&nbsp;Dit artikel maakt onze ideeën rond CPaC meer concreet. Een representatie van cryptografische policies in JSON wordt voorgesteld en gebruikt als basis voor enkele experimenten. Het doel is om het potentieel van CPaC tastbaarder en inzichtelijker te maken, en zo enkele lezers te inspireren.</p>



<h1 class="wp-block-heading">Everything as Code</h1>



<p>Everything as Code wil alle componenten in een IT systeem (infrastructuur, netwerk, veiligheid, deployment pipelines, &#8230;) uitdrukken als code. Het laat een hoge graad van <strong>automatisering</strong> toe van processen en beheer. Het geeft ons meer <strong>inzicht</strong> en laat ons toe beter te <strong>anticiperen</strong> en in te grijpen indien nodig. Bovendien resulteert het in een verhoogde <strong>consistentie</strong> en <strong>schaalbaarheid</strong> dankzij de verminderde menselijke interventie. Het lijkt ons niet enkel nuttig maar op termijn ook noodzakelijk om dit principe te omarmen in het kader van <em>cryptographic governance</em>.&nbsp;</p>



<p>Het concept <em>crypto policy as code</em> is vrij nieuw. Toen Smals Research begin 2025 de studie startte was hier vrijwel niets over te vinden. Ondertussen blijkt het ook op de radar te staan van onder meer het bedrijf <a href="https://garantir.io/cryptographic-policy-enforcement-at-scale-automating-compliance-without-slowing-down-devops/">Garantir</a>.</p>



<p>Een eerste aspect richting CPaC is het uitdrukken van de cryptografische assets (algoritmes, sleutels, certificaten, hardware, libraries, &#8230;) als code. Dit laat toe om om de inventaris met de cryptografische assets van een organisatie geautomatiseerd te beheren en te bevragen. Een dergelijke inventaris wordt systematisch aangeraden in de context van quantum readiness en crypto agility.</p>



<p><a href="https://cyclonedx.org/capabilities/cbom/">CBOM</a> (Cryptograhy Bill of Materials) is een model om de cryptografische assets in een organisatie uit te drukken in JSON code. CBOM is vandaag nog erg nieuw, maar zal volgens onze inschatting in de komende jaren een brede adoptie kennen. We verwachten dat onder meer cloud diensten, libraries, besturingssystemen en hardware in de toekomst geleverd zullen worden samen met een beschrijving van de gebruikte en ondersteunde cryptografie, uitgedrukt volgens het CBOM model. Die beschrijvingen kan een organisatie vervolgens in zijn crypto inventaris importeren.</p>



<p>Omwille van deze verwachting enten we onze CPaC voorstellen zoveel als mogelijk op CBOM. Onderstaande figuur is het resultaat van een statische scan van code en toont in CBOM code dat <a href="https://nl.wikipedia.org/wiki/RSA_(cryptografie)">RSA-2048</a> op drie locaties in een toepassing gebruikt wordt.&nbsp;</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/image-1.png"><img loading="lazy" decoding="async" width="1024" height="512" src="/wp-content/uploads/2025/11/image-1-1024x512.png" alt="" class="wp-image-24307" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-1024x512.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-300x150.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-768x384.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1-1536x768.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image-1.png 1864w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<h2 class="wp-block-heading">Crypto Policy as Code</h2>



<p>Smals beschikt over een cryptografische policy, die aangeeft welke cryptografische algoritmes en parameters aanbevolen zijn, welke veilig zijn, hoewel niet aanbevolen, welke uitgefaseerd dienen te worden en welke onveilig zijn. Momenteel wordt dit nog uitgedrukt op een klassieke manier die enkel door mensen vlot te interpreteren is. We stelden ons de vraag hoe dit als code uitgedrukt zou kunnen worden.</p>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2025/11/image.png"><img loading="lazy" decoding="async" width="300" height="283" src="/wp-content/uploads/2025/11/image-300x283.png" alt="" class="wp-image-24306" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/image-300x283.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/image.png 613w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>Laat ons even kijken naar <em>AES-128-GCM</em>. <em><a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a></em> is het blokcijfer; het encrypteert of decrypteert blokken van 128 bits. Het getal <em>128</em> in AES-128-GCM verwijst naar de bitlengte van de sleutel die daarbij gebruikt wordt. Dankzij de modus <a href="https://en.wikipedia.org/wiki/Galois/Counter_Mode"><em>GCM</em></a> kunnen ook grotere hoeveelheden data geëncrypteerd en gedecrypteerd worden.</p>



<p>Links op onderstaande figuur wordt de beschrijving van AES-128-GCM getoond volgens het CBOM model. We vinden er informatie over onder meer het klassieke en kwantum veiligheidsniveau. Ons daarop entend, toont de figuur rechts ons voorstel om de aanbevelingen te formuleren als code. We maximaliseren daarbij de compatibiliteit met CBOM; de structuur, naamgeving en identificatielsleutels worden behouden. Tegelijkertijd vermijden we duplicatie van data die we reeds in de CBOM beschrijving vinden.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/AES-128-GCM-ascode.png"><img loading="lazy" decoding="async" width="1024" height="571" src="/wp-content/uploads/2025/11/AES-128-GCM-ascode-1024x571.png" alt="" class="wp-image-24310" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-1024x571.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-300x167.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-768x428.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode-1536x856.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2025/11/AES-128-GCM-ascode.png 1721w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>De aanbevelingen zitten vervat in het <em>recommendation</em>&nbsp;blok. Het bevat minimum het aanbevelingsniveau: <em>recommended</em>, <em>secure</em>, <em>phase-out </em>of <em>insecure. </em>Daarnaast kan dit blok extra, optionele, informatie bevatten, zoals:</p>



<ul class="wp-block-list">
<li>de uiterste datum waarop het cryptografische mechanisme uitgefaseerd dient te worden,</li>



<li>de datum dat de aanbeveling laatst gereviseerd werd,</li>



<li>voorwaarden voor correct gebruikt van het cryptografische mechanisme</li>



<li>opmerkingen, vb. waarom het cryptografisch mechanisme niet langer als veilig beschouwd wordt.</li>
</ul>



<p>Bij wijze van experiment heeft Smals Research reeds enkele cryptografische aanbevelingen uitgedrukt als code; met name cryptografische hashfuncties, <a href="https://en.wikipedia.org/wiki/Symmetric-key_algorithm">symmetrische vercijfering</a>, <a href="https://en.wikipedia.org/wiki/Message_authentication_code">message authentication codes</a> (MACs), <a href="https://en.wikipedia.org/wiki/Key_derivation_function">key derivation functions</a> (KDFs) en <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>. Deze cryptografische aanbevelingen zijn relatief eenvoudig en compatibel met CBOM. Bovendien werd een JSON schema gedefineerd om de correctheid van de syntax en structuur van onze aanbevelingen te valideren.&nbsp;</p>



<h1 class="wp-block-heading">Afwijkingen als code</h1>



<p>Idealiter doet elke partij die op onze diensten beroep doet, waaronder ziekenhuizen, apothekers en OCMW’s, tijdig de update van hun software zodat die de meest recente en veiligste cryptografie ondersteunen. In de praktijk gebeurt dit niet steeds even snel en moet uitzonderlijk een afwijking van de crypto policy toegestaan worden, zodat de cruciale dienstverlening aan de burgers niet in het gedrang komt.</p>



<p>De onderstaande figuur toont een fictief voorbeeld van een dergelijke afwijking (deviation), waarbij de door Smals Research voorgestelde structuur gevolgd wordt. Het bestaat uit vier blokken:</p>



<ul class="wp-block-list">
<li><strong>Scope.</strong> De afwijking kan van toepassing zijn op een volledige dienst, of op specifieke modules ervan.</li>



<li><strong>Approval.</strong> Hier vinden we de referentie naar de goedkeuring door het management, alsook de rechtvaardiging en het tijdsvenster van de afwijking. </li>



<li><strong>Assessment. </strong>Dit is de beoordeling van het risico. Een afwijking kan enkel goedgekeurd worden mits een voorafgaande inschatting van het risico, wat beschreven wordt in deze sectie.</li>



<li><strong>Allow. </strong>Deze sectie geeft een opsomming van de toegestane algoritmes of cipher suites. De structuur van dit blok komt rechtstreeks uit het CBOM model.</li>
</ul>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2025/11/devascode-1.png"><img loading="lazy" decoding="async" width="1024" height="565" src="/wp-content/uploads/2025/11/devascode-1-1024x565.png" alt="" class="wp-image-24313" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-1024x565.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-300x165.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1-768x424.png 768w, https://www.smalsresearch.be/wp-content/uploads/2025/11/devascode-1.png 1436w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<h1 class="wp-block-heading">Experimentele scripts</h1>



<p>Smals Research schreef een aantal scripts om de kracht van CPaC te illusteren. De aanbevelingen als code, afwijkingen als code en/of CBOM beschrijvingen vormen daarbij de invoer.</p>



<h2 class="wp-block-heading"><strong>Script 1: TLS configuratie</strong></h2>



<p><a href="https://nl.wikipedia.org/wiki/Transport_Layer_Security">TLS</a> (Transport Layer Security) is een een populair protocol voor veilige communicatie tussen twee partijen. Alvorens data met elkaar uit te wisselen, spreken de partijen samen af welke cipher suite (combinatie van algoritmes) ze daarbij zullen gebruiken. <a href="https://www.openssl.org/">OpenSSL</a> is een populaire TLS client.</p>



<p>Ons eerste script genereert op basis van de <em>crypto policy as code</em> en eventueel een <em>deviation as code</em> de OpenSSL configuratie m.b.t. cryptografie. De uitvoer, waarvan een voorbeeld hieronder, kan vervolgens geïntegreerd worden in <a href="https://man.openbsd.org/openssl.cnf.5"><em>openssl.cnf</em></a>, wat het openSSL configuratiebestand is. De laatste lijn in ons voorbeeld bevat de lijst met cipher suites; de laatste komt uit een afwijking, de anderen zijn veilig volgens de crypto policy. De volgorde is hier van belang; de afwijking krijgt de laagste prioriteit.</p>



<pre class="wp-block-code"><code><strong>&#91;default_conf]</strong>
ssl_conf = ssl_section

<strong>&#91;ssl_section]</strong>
system_default = system_default_section

<strong>&#91;system_default_section]</strong>
MinProtocol = TLSv1.3
CipherString = # Sets the ciphersuite list for TLSv1.2 and below to value. This list will be combined with any configured TLSv1.3 ciphersuites.
Ciphersuites = TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_8_SHA256</code></pre>



<p>Dit kan op termijn de basis vormen om op een gecoördineerde wijze de crypto configuratie voor TLS van duizenden machines geactualiseerd te houden. Uiteraard vereist dit de nodige procedures om fouten tegen te gaan.</p>



<p>Ons voorstel is om zowel de policy as code als de deviations as code door een centrale service te laten beheren. Daarbij kan de policy as code toegankelijk zijn binnen de gehele organisatie, terwijl de deviations as code beschermd dienen te worden door strikte toegangscontrole.</p>



<h2 class="wp-block-heading"><strong>Script 2: PDF generatie</strong></h2>



<p>Voor de meeste mensen is een goed gestructureerde PDF nog steeds leesbaarder dan JSON. Vertrekkende van JSON bestanden is het geen heksenkunst om dergelijke documenten te genereren. Dit is wat onze volgende twee scripts realiseren.</p>



<p>Een experimenteel gegenereerde PDF met aanbevelingen voor symmetrische vercijfering is <a href="/wp-content/uploads/2025/11/recommendation_symmetric-encryption.pdf">hier</a> te downloaden. Er wordt vertrokken van policy as code, maar er wordt eveneens beroep gedaan op CBOM om de PDF verder te verrijken; zowel het klassieke als kwantumveiligheidsniveau zijn daaruit geëxtraheerd.</p>



<p>Een tweede experimenteel gegenereerde PDF bestand is <a href="/wp-content/uploads/2025/11/recommendations_tls.pdf">hier</a> te downloaden. Het bevat aanbevelingen voor TLS cipher suites, aangevuld met bijkomende informatie uit de crypto policy as code. Een voorbeeld van dergelijke informatie is de uiterlijke datum tot wanneer een cipher suite gebruikt mag worden. Indien een dergelijk document met partners gedeeld werd, zou dit hen toelaten tijdig te anticiperen.</p>



<h2 class="wp-block-heading"><strong>Script 3. OPA policy verification</strong></h2>



<p>CPaC is een krachtig concept. Voorgaande scripts lieten ons toe om PDF bestanden en TLS configuraties te <em>genereren</em>. CPaC laat ook toe om bestaande artefacten te <em>valideren; </em>om na te gaan of veilige cryptografie gebruikt wordt.&nbsp; &nbsp;</p>



<p><a href="https://www.openpolicyagent.org/">OPA</a> staat voor Open Policy Agent. Het is een open source policy engine, wat toelaat een scheiding te maken tussen applicatie logica en policy. OPA stelt organisaties in staat policies te centraliseren en in real time af te dwingen. Verschillende services (Kubernetes, CI/CD pipelines, API gateways, …), sturen vragen (queries) in JSON formaat naar de policy engine om te weten of, bijvoorbeeld, een door een client gevraagde actie toegelaten is. Op basis van een policy, uitgedrukt in de taal <a href="https://www.openpolicyagent.org/docs/policy-language">Rego</a>, laat de policy engine aan de service weten of de vraag positief of negatief beantwoord dient te worden. Zo kan de policy engine de vraag krijgen van een toepassing of iemand van 15 jaar de toepassing mag gebruiken, terwijl de policy bepaalt dat de minumleeftijd 18 jaar is. Of er kan gevraagd worden aan de policy engine of een netwerkconfiguratie in overeenstemming is met de OPA policy. Deze kan bijvoorbeeld eisen dat <a href="https://en.wikipedia.org/wiki/Telnet">Telnet</a> poorten nooit open mogen staan.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><a href="/wp-content/uploads/2025/11/opa.png"><img loading="lazy" decoding="async" width="884" height="612" src="/wp-content/uploads/2025/11/opa.png" alt="" class="wp-image-24319" style="width:500px" srcset="https://www.smalsresearch.be/wp-content/uploads/2025/11/opa.png 884w, https://www.smalsresearch.be/wp-content/uploads/2025/11/opa-300x208.png 300w, https://www.smalsresearch.be/wp-content/uploads/2025/11/opa-768x532.png 768w" sizes="auto, (max-width: 884px) 100vw, 884px" /></a></figure>



<p>Services kunnen de OPA engine ook vragen stellen m.b.t. <a href="https://www.openpolicyagent.org/docs/policy-reference/builtins/crypto">cryptografie</a>: is de gegeven waarde de correcte hashwaarde (ook wel <em>fingerprint</em> of <em>digest</em>) van een gegeven payload? Is een waarde de correcte message authentication code (MAC) voor een gegeven input en sleutel? Is een certificaat ondertekend door een vertrouwde autoriteit? Gebruikt een certificaat een veilige elliptische kromme? …</p>



<p>In ons voorbeeld wordt een JSON bestand bestaande uit een payload en een verwachte hashwaarde (expected_digest) naar de policy engine gestuurd. De OPA policy bepaalt dat de policy engine de hash van de payload opnieuw berekent en dat het resultaat moet overeenkomen met de ontvangen verwachte hashwaarde. De vierde lijn van de OPA policy hieronder bepaalt dat de hashfunctie die daarbij gebruikt dient te worden het (onveilige) <a href="https://en.wikipedia.org/wiki/MD5">MD5</a> is.&nbsp;&nbsp;</p>



<pre class="wp-block-code"><code><strong>Input by service to policy engine</strong>
{
  "payload": {
    "user": "alice",
    "action": "read",
    "resource": "/api/users"
  },
  "expected_digest": "ea99819f665c10c744cbbf8da651c37a"
}</code></pre>



<pre class="wp-block-code"><code><strong>OPA Policy (in Rego) applied by the policy engine</strong> 
package crypto_digest_verification
payload_json&nbsp;:= json.marshal(input.payload)
computed_digest&nbsp;:= crypto.<strong>md5</strong>(payload_json)
digest_valid&nbsp;:= computed_digest == input.expected_digest</code></pre>



<p>Een organisatie die CPaC wil introduceren zal moeten nagaan of de bestaande OPA policies compliant zijn met de meest recente versie van de cryptografische policy. Ons laatste script gaat daarom na of de cryptografie die in de OPA policy gebruikt wordt, in overeenstemming is met onze centrale crypto policy (CPaC). De invoer is de crypto policy as code (CPaC) en een OPA policy. De output is ofwel een bericht dat de OPA policy compliant is, ofwel &#8211; zoals in bovenstaand geval &#8211; een waarschuwing, die ook aangeeft welk onveilig algoritme gebruikt werd. Op termijn willen we ook OPA policies m.b.t. cryptografie direct kunnen afleiden uit onze CPaC.<span style="font-size: revert; color: initial;">&nbsp;&nbsp;</span></p>



<h1 class="wp-block-heading">Conclusies</h1>



<p>Dit artikel werpt een licht op het potentieel van een everything as code benadering om de cryptografische maturiteit van een organisatie een boost te geven. Met behulp van een aantal relatief eenvoudige scripts tonen we aan hoe een centraal beheerde crypto policy, uitgedrukt als code, een organisatie op diverse vlakken kan ondersteunen, gaande van het automatiseren van processen, het creëren van documentatie en het nagaan of de correcte cryptografie gebruikt wordt, zoals in OPA policies. </p>



<p>Op termijn evolueren we hopelijk naar een ontsluiting van de <em>as code</em> informatie via REST API&#8217;s. Op basis daarvan wordt de meest actule informatie overzichtelijk in interactieve dashboards aan geautoriseerde gebruikers getoond. Ook systemen en toepassingen kunnen in real-time informatie bekomen via deze REST API. Idealiter wordt gewerkt met een <span style="font-size: revert; color: initial;">eengemaakte policy as code en een eengemaakte inventaris as code, waarin cryptografie slechts één van de aspecten is.&nbsp;</span></p>



<p>In een ideale wereld wordt de crypto policy as code aangeboden door een nationale of Europese gezaghebbende organisatie en kunnen zowel de publieke als private sector hier gebruik van maken. Dit is voorlopig nog toekomstmuziek. In de komende jaren mogen we ons wellicht aan een sterke evolutie verwachten in dit domein.</p>



<p><strong>Aarzel niet ons te contacteren indien u hierover met ons van gedachten wilt wisselen!</strong></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Governance volgens Mattheus</title>
		<link>https://www.smalsresearch.be/governance-volgens-mattheus/</link>
					<comments>https://www.smalsresearch.be/governance-volgens-mattheus/#comments</comments>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Tue, 14 Dec 2021 07:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[data governance]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[standards]]></category>
		<guid isPermaLink="false">/?p=16627</guid>

					<description><![CDATA[Automatisering, zelfs digitalisering, is niet zomaar vrijblijvend, en al zeker niet bij overheden. Governance, vrij vertaald als deugdelijk bestuur, is een vaag begrip, maar het belang ervan illustreren we in dit artikel aan de hand van enkele voorbeelden.]]></description>
										<content:encoded><![CDATA[
<p>Wie zich interesseert in bestuurskunde, is ongetwijfeld vertrouwd met het <a href="https://nl.wikipedia.org/wiki/Mattheuseffect">Mattheus-effect</a>. Het stelt dat de voordelen van systemen zoals sociale zekerheid onevenredig toestromen naar de hogere (midden)klasse, die ze eigenlijk het minst nodig heeft. Het treedt bijvoorbeeld op wanneer je, om een voordeel toegekend te krijgen (premie, subsidie, uitkering, belastingaftrek,&#8230;), eerst en vooral moet weten dat het voordeel bestaat, en daarna eerst tijd en moeite moet kunnen steken in een foutloze aanvraag bij de juiste dienst. Het effect is goed gedocumenteerd en wordt <a href="https://www.uantwerpen.be/nl/onderzoeksgroep/csb/">al decennia bestudeerd</a>.</p>



<p>Automatisering is een belangrijk wapen om het Mattheus-effect tegen te gaan. Het <a href="https://www.ksz-bcss.fgov.be/nl/project/geharmoniseerde-sociale-statuten-gss">automatisch toekennen van bepaalde voordelen</a> aan de hand van objectieve criteria zorgt idealiter voor een gelijke behandeling van alle burgers ongeacht stand en rang. Daarnaast zorgt automatisering ook voor tijdswinst, minder papier, en lagere kosten op lange termijn. <a href="https://www.smals.be/nl/content/activiteitenverslag-2020">Veel projecten waar Smals bij betrokken is, dragen daar aanzienlijk toe bij</a>: ze besparen de overheid, burgers en bedrijven jaarlijks miljarden euro&#8217;s, om niet te zeggen tonnen papier, inkt en postzegels.</p>



<p>We schreven al uitvoerig over de talloze <a href="https://www.fast.ai/2019/01/29/five-scary-things/">randvoorwaarden </a>die opduiken als men Artificiële Intelligentie correct wil inzetten (<a href="/enkele-valkuilen-in-ai/">[1]</a>, <a href="/ai-en-desinformatie/">[2]</a>, <a href="/5-vragen-om-te-stellen-voor-de-start-van-een-ai-project/">[3]</a>, <a href="/lintelligence-artificielle-dans-le-secteur-public/">[4]</a>, <a href="/lethique-dans-lintelligence-artificielle/">[5]</a>, <a href="/ia-lethique-en-pratique/">[6]</a>), maar ook een gewone procesautomatisering, zelfs digitalisering, is niet zomaar vrijblijvend, en al zeker niet bij overheden. <a href="https://law.stanford.edu/2021/11/05/ai-and-the-corrosive-effect-of-using-carless-definition/">Automatisering is niet gelijk aan artificiële intelligentie</a>, maar men geeft nog steeds een deel van de controle uit handen aan een machine. Naast winsten in snelheid en kostprijs, kan dat ook <a href="https://www.youtube.com/watch?v=zUQgthIs7pM">allerlei beperkingen</a> introduceren. Door de schaalvergroting loopt het, als het fout loopt, ook ineens heel erg fout. Reden genoeg om reeds vanaf de planningsfase nauwgezet aandacht te besteden aan de bredere effecten van een automatiseringsproject.</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:35% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="240" height="300" src="/wp-content/uploads/2021/12/ASM_AR17_Corporate-Governance_2-240x300.jpg" alt="" class="wp-image-16754 size-medium" srcset="https://www.smalsresearch.be/wp-content/uploads/2021/12/ASM_AR17_Corporate-Governance_2-240x300.jpg 240w, https://www.smalsresearch.be/wp-content/uploads/2021/12/ASM_AR17_Corporate-Governance_2.jpg 327w" sizes="auto, (max-width: 240px) 100vw, 240px" /></figure><div class="wp-block-media-text__content">
<p>Wil een geautomatiseerd proces goed werken, dan is het belangrijk dat het actief en &#8220;als een goede huisvader&#8221; wordt beheerd. Permanente monitoring is nodig zodat problemen snel gedetecteerd en opgelost kunnen worden. Manueel ingrijpen moet mogelijk blijven, het moet duidelijk zijn wie waarvoor verantwoordelijk is, en alles moet mee evoluer<span data-mce-type="bookmark" id="mce_1_start" data-mce-style="overflow:hidden;line-height:0px" style="overflow:hidden;line-height:0px"><span data-mce-type="bookmark" id="mce_1_start" data-mce-style="overflow:hidden;line-height:0px" style="overflow:hidden;line-height:0px">en wanneer nodig. In het Engels wordt dat al eens aangeduid met (corporate) &#8220;<a href="https://nl.wikipedia.org/wiki/Governance">governance</a>&#8220;, vrij vertaald &#8220;deugdelijk bestuur&#8221;. Het is een vaag begrip, maar in dit artikel hoop ik het belang ervan te kunnen illustreren aan de hand van enkele spraakmakende voorbeelden uit het buitenland.</span></span></p>



<p class="has-small-font-size">(<em>afbeelding: &#8220;corporate governance&#8221;, (c) Asmi-corporatereporting.com, 2017, Licensed CC BY-SA 4.0 <a href="https://creativecommons.org/licenses/by-sa/4.0">https://creativecommons.org/licenses/by-sa/4.0</a>, via Wikimedia Commons)</em></p>


</div></div>



<p></p>



<h2 class="wp-block-heading">Wat kan er zoal misgaan?</h2>



<h3 class="wp-block-heading">Frankrijk</h3>



<p>De Franse <em>Caisse des Allocations Familiale (CAF)</em> nam in 2021 een nieuw systeem in gebruik voor de berekening van huisvestingstoelagen. <a href="https://www.mediapart.fr/journal/france/190621/la-reforme-des-apl-vire-au-cauchemar-pour-les-allocataires-et-ses-agents/prolonger">Helaas was het systeem niet volledig compatibel</a> met een ander systeem voor de registratie van sommige arbeidsprestaties, nodig om de hoogte van die uitkering te bepalen. Als gevolg kregen <a href="https://demarchesadministratives.fr/actualites/caf-les-allocataires-exasperes-apres-des-bugs-en-serie">minstens 120.000 mensen een foutieve schuldvordering</a> in de bus, automatisch aangemaakt, voor zogezegd teveel ontvangen uitkeringen. De toevloed aan reacties, en alle correcties die vaak manueel aangebracht moesten worden, zorgden voor <a href="https://www.ouest-france.fr/societe/logement/pagaille-dans-les-aides-au-logement-la-caf-explique-d-ou-viennent-les-bugs-00345f00-bed9-11eb-a219-8f747c6d3d1b">veel extra werklast</a> bij de dienst die al met veel vertragingen te kampen had, wat op zijn beurt aanleiding gaf tot <a href="https://www.dossierfamilial.com/actualites/social-sante/reforme-des-apl-retards-de-versements-pourquoi-ca-grince-a-la-caf-893503">stakingen</a>. Negen maanden later <a href="https://www.ouest-france.fr/societe/logement/pagaille-dans-les-aides-au-logement-la-caf-explique-d-ou-viennent-les-bugs-00345f00-bed9-11eb-a219-8f747c6d3d1b">wachtten nog steeds 32.000 mensen op de correctie</a> van hun dossier.</p>



<h3 class="wp-block-heading">Verenigd Koninkrijk</h3>



<p>Het Verenigd Koninkrijk heeft geen rijksregister zoals België. Mensen moeten hun identiteit <a href="https://www.gov.uk/government/publications/introducing-govuk-verify/introducing-govuk-verify">op een andere manier bewijzen</a>: met een rijbewijs, bankrekening, telefooncontract of een internationaal paspoort. Dat zorgt al voor een eerste probleem, omdat net de meest kwetsbaren die het meeste belang hebben bij die diensten, <a href="https://publications.parliament.uk/pa/cm201719/cmselect/cmpubacc/1748/1748.pdf">door hun kleinere administratieve/digitale voetafdruk niet geauthenticeerd</a> geraken. Daarnaast is <a href="https://www.bbc.com/news/uk-48887753">identiteitsfraude</a> een groot probleem.</p>



<p><a href="https://www.gov.uk/universal-credit">Universal Credit</a> is een geautomatiseerd sociaal vangnet voor de laagste inkomens, dat bestaat uit de fusie van 6 aparte uitkeringen. Hun doel om de zaken te vereenvoudigen hebben ze echter ook doorgetrokken in de berekeningswijze: die neemt enkel het inkomen van een vorige maand in rekening. Dat zorgt voor grote <a href="https://www.hrw.org/report/2020/09/29/automated-hardship/how-tech-driven-overhaul-uks-social-security-system-worsens">problemen bij mensen die onregelmatig betaald krijgen</a>, of wanneer loon plots vervroegd uitbetaald wordt omwille van feestdagen: zij hebben in sommige maanden plots een hoger inkomen, in andere maanden geen, en krijgen daardoor heel erg fluctuerende uitkeringen. Het perverse effect daarvan is dat <a href="https://barrowcadbury.org.uk/wp-content/uploads/2023/11/CPAG-Rough-justice-2018.pdf">twee mensen met dezelfde job, gezinssamenstelling en jaarinkomen, toch verschillende uitkeringen kunnen krijgen</a>, enkel en alleen omdat hun salaris op een ander moment wordt uitbetaald.</p>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:33% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="300" height="76" src="/wp-content/uploads/2021/12/640px-Universal_Credit.svg_-300x76.png" alt="" class="wp-image-16757 size-medium" srcset="https://www.smalsresearch.be/wp-content/uploads/2021/12/640px-Universal_Credit.svg_-300x76.png 300w, https://www.smalsresearch.be/wp-content/uploads/2021/12/640px-Universal_Credit.svg_.png 640w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure><div class="wp-block-media-text__content">
<p>Een <a href="https://www.theguardian.com/uk-news/2019/jan/11/four-single-mothers-win-high-court-benefits-battle-against-dwp-universal-credit">rechtszaak</a> daar<span data-mce-type="bookmark" id="mce_1_start" data-mce-style="overflow:hidden;line-height:0px" style="overflow:hidden;line-height:0px">over werd door de Bri<span data-mce-type="bookmark" id="mce_1_start" data-mce-style="overflow:hidden;line-height:0px" style="overflow:hidden;line-height:0px">tse overheid verloren. Het maken van de opgedragen aanpassingen zal de <a href="https://www.theguardian.com/society/2020/jul/10/cost-of-rolling-out-universal-credit-rises-by-14bn-say-auditors">kost van het geplaagde systeem</a>, nu reeds lopend in de miljarden pond, alleen nog maar verder doen toenemen. Let wel dat het probleem hier niet zozeer bij de automatisering ligt, wel bij het ontwerp: de regering had expliciet besloten tot deze berekeningswijze, omdat ze gemakkelijker en efficiënter te implementeren was.</span></span></p>



<p class="has-small-font-size"><em>(afbeelding: Wordmark for Universal Credit, (c) UK Government, licensed under the&nbsp;<a href="https://nationalarchives.gov.uk/doc/open-government-licence/version/1/">Open Government Licence version 1.0</a>&nbsp;(OGL v1.0).</em><span data-mce-type="bookmark" id="mce_1_start" data-mce-style="overflow:hidden;line-height:0px" style="overflow:hidden;line-height:0px"></span></p>
</div></div>



<h3 class="wp-block-heading">Australië</h3>



<p>In Australië deed de <a href="https://theconversation.com/robodebt-was-a-fiasco-with-a-cost-we-have-yet-to-fully-appreciate-150169">RoboDebt </a>affaire veel stof opwaaien. Frauduleus betaalde uitkeringen terugvorderen deden ze al langer, maar in 2015 maakten ze een cruciale verandering: het verifiëren van een &#8220;match&#8221; tussen de databanken sociale zekerheid (DHS) en financiën (ATO), werd geautomatiseerd. Dat nam effectief een stap van menselijke controle in de ketting weg. Het hoofddoel was om elke &#8220;match&#8221; op te volgen, daar waar ze vroeger slechts de meest flagrante inbreuken konden najagen omwille van het manuele werk. Dat leidde in het eerste jaar al tot een 40 keer hoger volume.</p>



<p>Helaas was niet elke &#8220;match&#8221; ook terecht. De uitkeringen werden immers in perioden van 14 dagen toegekend, terwijl de belastingdienst gegevens had per fiscaal jaar. Bij gebrek aan inkomstengegevens per 14 dagen werd een gemiddelde van het jaarinkomen toegepast, maar net zoals in het voorbeeld van UK, leidde dat tot ongewenste neveneffecten, en moesten burgers plots schulden gaan terugbetalen die ze nooit gemaakt hadden. In 2019 werd het systeem door de rechtbank onwettelijk verklaard, en in 2021 moest de overheid een <a href="https://en.wikipedia.org/wiki/Robodebt_scheme">schikking ter waarde van $1.8 miljard Australische dollar</a> treffen met de bijna 500.000 gedupeerden. Ook hier lag de fout bij de wetgever, die niet voldoende had nagedacht over de aannames en mogelijke neveneffecten bij het opstellen van de berekeningswijze van het systeem.</p>



<h3 class="wp-block-heading">USA</h3>



<p>In de Verenigde Staten doken problemen op bij de automatisering van <a href="https://interrai.org/">RAI</a>. Dit <em>Resident Assessment Instrument</em> is een lange vragenlijst voor zwaar zorgbehoevenden. Aan de hand van het resultaat wordt o.a. berekend op hoeveel thuiszorg iemand een beroep mag doen. Ook in België wordt een variant ervan gebruikt die <a href="https://www.belrai-kennisportaal.be/over-belrai">BelRAI</a> heet. Het automatiseren daarvan moet heel omzichtig gebeuren. Als bijvoorbeeld de vraag of iemand voetproblemen heeft beantwoord wordt met &#8220;nee&#8221;, kan dat zijn omdat die gezond is, maar even goed omdat die geamputeerde voeten heeft &#8211; en die laatste behoeft uiteraard meer zorg.  </p>



<p>In Arkansas liep het <a href="https://www.theverge.com/2018/3/21/17144260/healthcare-medicaid-algorithm-arkansas-cerebral-palsy">fout bij onderaannemers die een verkeerde versie van de vragenlijst hadden gebruikt</a>, en daarnaast bepaalde ziektebeelden, zoals hersenverlamming, niet correct hadden verwerkt. Pas tijdens de rechtszaak werd duidelijk waar de fouten precies lagen, o.a. doordat de rechter verplichtte om de resultaten eens manueel na te rekenen. Het systeem bleek dermate complex, en de code werd zodanig afgeschermd, dat ook de bevoegde ambtenaren niet in staat waren geweest om de fout te ontdekken. Zo was het voor eindgebruikers nooit duidelijk waarom de evaluatie tot een bepaald resultaat leidde, wat het op zijn beurt erg moeilijk maakte een evaluatie aan te vechten of te overreden. Het gebruik van RAI op zich werd door de rechtbank wel als wettig beschouwd.</p>



<h3 class="wp-block-heading">India</h3>



<div class="wp-block-media-text alignwide is-stacked-on-mobile" style="grid-template-columns:33% auto"><figure class="wp-block-media-text__media"><img loading="lazy" decoding="async" width="400" height="244" src="/wp-content/uploads/2021/12/A_sample_of_Aadhaar_card.jpg" alt="" class="wp-image-16759 size-full" srcset="https://www.smalsresearch.be/wp-content/uploads/2021/12/A_sample_of_Aadhaar_card.jpg 400w, https://www.smalsresearch.be/wp-content/uploads/2021/12/A_sample_of_Aadhaar_card-300x183.jpg 300w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure><div class="wp-block-media-text__content">
<p>India heeft hetzelfde probleem als het Verenigd Koninkrijk, nl. dat het lange tijd geen eengemaakt burgerregister had en dat andere systemen (rijbewijzen, stembiljetten, geboorteaktes) onderling incompatibel zijn. Het bijhouden van gegevens op kaartjes en papieren is er ook geen sinecure voor de armeren en ongeletterden onder hun bevolking. In een ambitieus programma om iedere Indiër een sociaal identiteitsnummer te geven (zoals onze vroegere <a href="https://nl.wikipedia.org/wiki/SIS-kaart">SIS-kaart</a>), startte India het <a href="https://en.wikipedia.org/wiki/Aadhaar">Aadhaar</a> project, dat ook biometrische authenticatie op basis van de vingerafdruk omvat. </p>



<p class="has-small-font-size"><em>(afbeelding: <a href="https://commons.wikimedia.org/wiki/File:A_sample_of_Aadhaar_card.jpg">&#8220;A sample of Aadhaar card&#8221;</a>, by <a href="https://commons.wikimedia.org/wiki/User:PageImp">Pagelmp</a>, licensed under the&nbsp;<a href="https://en.wikipedia.org/wiki/en:Creative_Commons">Creative Commons</a>&nbsp;<a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Attribution-Share Alike 4.0 International</a>&nbsp;license. Source Wikimedia Commons.)</em></p>
</div></div>



<p>De praktijk blijkt echter weerbarstiger. Er zijn technologische vereisten om het te kunnen toepassen: een vingerafdruklezer en een stabiele internetverbinding. Bovendien zijn de vingerafdrukken niet altijd meer herkenbaar bij wie een leven lang handenarbeid heeft verricht. Ook fouten bij de manuele data-entry, wat tijd en geld kost om te laten corrigeren, zorgen voor problemen. Er <a href="https://scroll.in/topic/38792/identity-project">duiken dan ook veel rapporten op</a> van grote aantallen kwetsbaren die de toegang tot sociale diensten, onderwijs, vergunningen, kindergeld of voedselrantsoenen wordt ontzegd omdat ze <a href="https://scroll.in/article/868836/aadhaar-in-the-worlds-biggest-biometric-id-experiment-many-have-fallen-through-the-gaps">door de mazen van het Aadhaar-systeem</a> vallen.</p>



<h3 class="wp-block-heading">Nederland</h3>



<p>In Nederland viel de regering over de <a href="https://www.vrt.be/vrtnws/nl/2021/10/21/toeslagenaffaire-nederland-1-115-kinderen-weggehaald-bij-gedupe/">toeslagenaffaire</a>. Vele duizenden gezinnen kwamen in grote problemen door onterechte beschuldigingen van subsidiefraude. De affaire is complex, maar aan de basis ligt de opsporingsdienst voor belastingfraude die zich danig heeft vergaloppeerd. Het probleem lag hier o.a. bij een <a href="https://www.trouw.nl/politiek/hoe-de-belastingdienst-lage-inkomens-profileerde-in-de-jacht-op-fraude~bbb66add/?utm_source=link&amp;utm_medium=app&amp;utm_campaign=shared%20content&amp;utm_content=free">gebrekkige training en validatie van een machine-learning model</a>, dat een risicoclassificatie moest geven aan dossiers en daarbij zonder veel nadenken steunde op parameters zoals nationaliteit, die erg gevoelig zijn voor discriminatie. Daarnaast was de inhoud van verschillende onderliggende databanken, o.a. de <a href="https://nl.wikipedia.org/wiki/Fraude_Signalerings_Voorziening">Fraude Signalerings Voorziening</a>, onoordeelkundig verzameld: <a href="https://www.taxence.nl/nieuws/onderzoek-pwc-fsv-lijst-bracht-duizenden-burgers-in-problemen/">een telefoontje naar de belastingdienst kon voldoende</a> zijn om erin opgenomen te zijn als potentieel fraudeur. De opsporingsdienst vertrouwde echter quasi blindelings op de gegevens en risicoscores, en gebruikte ze als rechtvaardiging om drastisch te werk te gaan bij terugvorderingen, weigeringen van afbetalingsplannen, enz. Daarbij ontbrak het aan een richtinggevend kader van bovenaf, interne monitoring of audit, en mogelijkheden tot aantekenen van beroep. De databank werd op basis van <a href="https://www.belastingdienst.nl/wps/wcm/connect/nl/contact/content/het-systeem-fraude-signalering-voorziening-fsv">inbreuken op de privacywetgeving</a> stopgezet en de belastingdienst kreeg <a href="https://tweakers.net/nieuws/190452/belastingdienst-krijgt-2-komma-75-miljoen-euro-avg-boete-voor-rol-in-toeslagenaffaire.html">een stevige boete</a>. </p>



<h2 class="wp-block-heading">Conclusie</h2>



<p>De bovenstaande verhalen hebben meestal 1 ding gemeen: alles gaat goed totdat op een bepaald moment ergens een bocht teveel wordt afgesneden zonder dat er tijdig wordt ingegrepen. Dat moet ons niet tegenhouden om te automatiseren, want er zijn ook duidelijke voordelen: voor de overheid qua <a href="/rpa-betaalbot-bij-hvw/">schaalbaarheid</a>, voor de burger o.a. door <a href="https://financien.belgium.be/nl/particulieren/belastingaangifte/aangifte/voorstel-van-vereenvoudigde-aangifte">vermindering van administratie</a>. Met dit artikel willen we vooral aandacht vestigen op de noodzaak om daarbij voldoende te investeren in planning en opvolging, om een goede grip te houden. Dat omvat ook een <a href="https://www.cs.princeton.edu/~arvindn/talks/MIT-STS-AI-snakeoil.pdf">realistische blik</a>, aandacht voor <em><a href="https://www.interaction-design.org/literature/topics/ux-design">user experience</a></em> en duidelijke adoptie van <a href="https://oecd.ai/en/dashboards/ai-principles">waarden en principes</a> (transparantie, <em>accountability</em>, &#8230;). </p>



<p>Het grote verschil tussen een ambtenaar in persoon en een geautomatiseerd systeem, is dat <a href="https://ali-alkhatib.com/papers/chi/street-level_algorithms/street-level_algorithms.pdf">een ambtenaar aanpassingen kan maken en verfijningen kan toebrengen nog <em>voordat </em>een beslissing genomen wordt, terwijl een algoritme enkel maar gecorrigeerd kan worden <em>nadat </em>het al een beslissing heeft gemaakt</a>. Dat laatste veroorzaakt frustratie en een nood aan ingrijpen achteraf. Er is een risico dat bepaalde doelgroepen onevenredig het slachtoffer zijn van zulke fouten. Ook kan bij de gebruikers van geautomatiseerde systemen, een zekere verblinding, laksheid, of neiging tot het afschuiven van verantwoordelijkheid ontstaan: &#8220;de computer zegt het dus het zal wel zo zijn&#8221;. Er moeten dus toegankelijke procedures zijn om beroep aan te tekenen tegen een beslissing en correcties moeten eenvoudig doorgevoerd kunnen worden.</p>



<p>Daarnaast blijft het altijd mogelijk dat programmeurs de regels onvolledig of foutief inbrengen in een programma, of dat ze andere interpretaties en aannames hanteren dan de regelgevers. Er is dus nood aan een zekere <a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1012360">waakzaamheid, transparantie en inspraak</a> in het hele implementatieproces, zeg maar &#8220;<a href="https://en.wikipedia.org/wiki/Project_governance">project governance</a>&#8220;. Ook de uitvoerende ambtenaren moeten blijven begrijpen wat er gebeurt en waarom. Daarbij hoort ook een goede methode om feedback te verwerken die vanop de werkvloer aangebracht wordt. </p>



<p>Er bestaat vooralsnog geen vaste manier om <em>compliance </em>of <em>governance </em>ontegensprekelijk te garanderen. Het zijn nog steeds vage begrippen, en ook nogal wat wetgeving blijft vaag: zo staat het woord &#8220;redelijk&#8221; maar liefst 38 keer in de <a href="https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:32016R0679">GDPR</a>, en het woord &#8220;passend&#8221; zelfs 125 keer, zonder verdere specificatie van wat we daar nu concreet onder moeten verstaan. In de VS worden basisregels voor bedrijfsbeheer opgelegd door de <a href="https://en.wikipedia.org/wiki/Sarbanes%E2%80%93Oxley_Act">Sarbanes-Oxley Act</a>. In België bestaan er de <a href="https://www.corporategovernancecommittee.be/nl">Code Lippens</a> voor beursgenoteerde, en <a href="https://www.codebuysse.com/nl/default.aspx">Code Buysse</a> voor niet-beursgenoteerde ondernemingen. Ondertussen wordt in Europa verder gewerkt aan o.a. een <a href="https://www.consilium.europa.eu/en/press/press-releases/2021/11/30/promoting-data-sharing-presidency-reaches-deal-with-parliament-on-data-governance-act/">Data Governance Act</a> om een kader te scheppen voor verantwoord (her)gebruik van gegevens. </p>



<p><a href="https://docs.microsoft.com/en-us/compliance/regulatory/offering-home">Deze en andere regulatorische raamwerken</a> zijn misschien niet perfect sluitend. Ze adopteren, eventueel <a href="https://www.iso.org/certification.html">certifiëren</a>, en regelmatig eraan toetsen, zorgt op korte termijn wel voor extra <em>overhead</em> en kosten, maar het legt de lat ook hoger en kan zo op lange termijn veel zorgen voorkomen. Het is ook meestal goede reclame. Uit alle aangehaalde voorbeelden blijkt natuurlijk ook dat daarvoor de nodige wil moet bestaan bij, en middelen ter beschikking gesteld moeten worden door, de bevoegde beleidsmakers.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/governance-volgens-mattheus/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Intéressant&#160;: AutoIt</title>
		<link>https://www.smalsresearch.be/a-decouvrir-autoit/</link>
		
		<dc:creator><![CDATA[Jean-Pierre Latour]]></dc:creator>
		<pubDate>Mon, 11 Feb 2013 09:00:00 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Productivity]]></category>
		<guid isPermaLink="false">/?p=5065</guid>

					<description><![CDATA[Confronté à la nécessité de mettre en place un dispositif de monitoring pour un projet de développement Web très interactif, je me suis évidemment d&#8217;abord intéressé aux solutions classiques telles que PingDom en SAAS ou la solution bien connue Selenium. PingDom est évidemment intéressant, sinon même devenu incontournable, pour monitorer la présence d&#8217;un site Web. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="/wp-content/uploads/2013/01/autoit_10_wall_thumb.jpg"><img loading="lazy" decoding="async" class="alignleft size-full wp-image-5096" title="autoit_10_wall_thumb" alt="" src="/wp-content/uploads/2013/01/autoit_10_wall_thumb.jpg" width="128" height="96" /></a></p>
<p>Confronté à la nécessité de mettre en place un dispositif de monitoring pour un projet de développement Web très interactif, je me suis évidemment d&#8217;abord intéressé aux solutions classiques telles que PingDom en SAAS ou la solution bien connue Selenium.</p>
<p>PingDom est évidemment intéressant, sinon même devenu incontournable, pour monitorer la présence d&#8217;un site Web.<br />
Il a donc été utilisé pour monitorer quelques urls racines. La page publique est particulièrement utile pour informer les utilisateurs du statut du site.</p>
<p>Selenium a très vite montré ses limites dès lors que le code html du site devient un peu compliqué&nbsp;: difficultés d&#8217;enregistrement des scripts ou adaptations manuelles nombreuses deviennent nécessaires.</p>
<p>Selenium ayant déçu, la question s&#8217;est donc posée du bien fondé d&#8217;un développement spécifique pour balayer régulièrement des parties du site (selon des scénarios multiples) en prenant  des logs sur&nbsp;:<br />
&#8211; les temps de réponse par lien activé ;<br />
&#8211; les erreurs éventuelles (lien vers un site tiers devenu inopérant par exemple, ou erreur sur une action relative à un contrôle).</p>
<p>Le principe d&#8217;un développement spécifique retenu il fallait choisir un outil, le plus productif possible et capable de répondre à la volonté de <em>vraiment traduire l&#8217;expérience utilisateur (entendez par là qui permette de mesurer le temps de réponse du rendu dans le browser et pas seulement de réaliser des gets de pages web vers le file system)</em>. Autre contrainte&nbsp;: permettre à un non-informaticien d&#8217;établir les fichiers d&#8217;instructions (fichiers des liens à visiter et contrôles de formulaires à activer).</p>
<p>Mes recherches m&#8217;ont conduit à opter pour l&#8217;open source AutoIt, découvert à l&#8217;adresse <cite>www.<b>autoit</b>script.com/site/<b>autoit</b>/</cite></p>
<p>Cet outil est en fait un langage et un framework d&#8217;automatisation sous Windows. Sa syntaxe est celle du VBA (Visual Basic for Application) avec des variables non typées de  type  Variant.</p>
<p>De nombreux éditeurs peuvent être utilisés, dont l&#8217;open source Scite qui a fait l&#8217;objet d&#8217;une déclinaison spécifique pour AutoIt (Scite4AutoIt).</p>
<p>La richesse fonctionnelle de l&#8217;outil est impressionnante (plusieurs centaines de fonctions). De nombreuses librairies UDF (User Defined Library) sont disponibles, dont celle relative à la manipulation d&#8217;Internet Explorer, élément  qui m&#8217;a fait retenir l&#8217;outil pour le besoin de monitoring de sites Web.</p>
<p>Les différents forums (En, Us, Fr, De et autres) sont très actifs et riches en conseils, UDFs et codes exemples.</p>
<p>Il nous a ainsi été possible de trouver des librairies pour interfacer le robot avec SQLite (&#8220;mini&#8221; base de données relationnelle livrée sous la forme d&#8217;une dll), Excel (pour construire les graphiques nécessaires),  PowerPoint (pour y stocker des copies écrans),  Skype (pour éventuellement envoyer des sms), Word, les protocoles FTP et SMTP, &#8230; Des UDFs existent dans les forums pour  interagir avec SQL Server, MySQL, &#8230; De nombreux petits &#8220;utilitaires&#8221; sont aussi disponibles, par exemple pour prendre des images de parties d&#8217;écran qui seront ensuite utilisée pour localiser les zones correspondantes et y simuler un clic souris (option utile lorsque les autres approches échouent).</p>
<p>Le développement principal consiste en un robot de monitoring finalement générique et donc entièrement paramétrable, permettant non seulement d&#8217;activer des liens mais aussi d&#8217;agir sur des contrôles (radiobox, checkbox, listbox, &#8230;). Une syntaxe ad hoc (et simple) a été developpée à cet effet, utilisée dans les fichiers de commandes.</p>
<p>Une seconde partie est destinée à exploiter la prise de logs effectuée par le robot (chargement dans une db [SQLite], détermination des dépassements, calculs de moyenne, graphiques). La visualisation des données et la gestion de la db sont effectués à l&#8217;aide de l&#8217;outil gratuit SQLite Expert Personal. Les échanges de SQLite vers Excel, la construction des graphiques dans Excel et leur envoi vers un serveur FTP sont pilotés par les scripts AutoIt.</p>
<p>Le projet impliquant des équipes offshore, le dispositif suivant a été développé. Les développeurs peuvent poster un gmail avec un mot clé. Un script déclenché à intervalles réguliers, détecte via un feed atom l&#8217;arrivée de ce mail, simule un login avec une carte eID, parcourt les écrans voulus, en prend des copies sous la forme de slides PowerPoint et retourne le .ppt en attachment dans un mail. La motivation  à l&#8217;origine de ce développement&nbsp;: les développeurs offshore n&#8217;ont pas accès à une carte eID belge. Ceci pourrait être envisagé dans l&#8217;environnement d&#8217;acceptation (finalement supprimé une fois l&#8217;intégration avec la plate-forme eHealth implémentée et testée) mais est de toutes façons exclu pour les ultimes tests dans l&#8217;environnement de production (question de droits d&#8217;accès à des données personnelles strictement confidentielles).<br />
Le dispositif mis en place leur permet donc de procéder à de premiers tests sans attendre la disponibilité de &#8220;l&#8217;autre côté de la planète&#8221;.</p>
<p>Fort de ce succès nous envisageons aussi utiliser l&#8217;outil pour automatiser des opérations d&#8217;établissement de rapports s&#8217;appuyant sur des sources multiples (fichiers Excel, bases de données, écrans Web, &#8230;) dans un cadre plus général que celui du projet mentionné ici.</p>
<p>Hormis quelques limites dans la gestion des erreurs sur quelques composants COM dans de rares cas de figure (mais qui n&#8217;ont jamais empêché un fonctionnement correct &#8211; donc l&#8217;obtention du résultat voulu), la fiabilité de l&#8217;outil n&#8217;a pas été prise en défaut et de façon générale toutes les librairies utilisées se sont avérées efficaces.</p>
<p>Un outil à découvrir pour qui estime pouvoir exploiter des gisements de productivité en termes de Windows automation et Web automation.</p>
<p>Comparé à des équivalents  commerciaux, AutoIt s&#8217;est révélé une alternative parfaitement crédible vu sa qualité, sa richesse fonctionnelle, sa facilité d&#8217;apprentissage  et le dynamisme de ses forums.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
