<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Governance on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/governance/</link>
        <description>Recent content in Governance on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 15 Sep 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/governance/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Compliance as code: la prova continua</title>
        <link>https://www.matteobianchi.eu/p/compliance-as-code/</link>
        <pubDate>Tue, 15 Sep 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/compliance-as-code/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/compliance-as-code/cover.png" alt="Featured image of post Compliance as code: la prova continua" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Dopo l&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/incident-response-devsecops/&#34; &gt;incident response&lt;/a&gt;, un altro tipo di
pressione della fase &lt;em&gt;operate&lt;/em&gt;: dimostrare a un revisore, un cliente o un regolatore che i controlli
esistono e funzionano. La compliance tradizionale lo fa a mano — screenshot, fogli di calcolo,
interviste — con un difetto fatale: fotografa un &lt;em&gt;istante&lt;/em&gt;. È vera il giorno dell&amp;rsquo;audit e magari falsa
il giorno dopo, quando qualcuno cambia una configurazione. La &lt;strong&gt;compliance as code&lt;/strong&gt; la rende
&lt;em&gt;continua&lt;/em&gt;: i controlli sono codice che si verifica sempre e produce evidenze da solo.&lt;/p&gt;
&lt;h2 id=&#34;point-in-time-contro-continuo&#34;&gt;Point-in-time contro continuo
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart TD
    subgraph T[Tradizionale]
        A1[Audit annuale] --&amp;gt; A2[Screenshot,&amp;lt;br/&amp;gt;fogli Excel] --&amp;gt; A3[&amp;#34;Conforme&amp;lt;br/&amp;gt;...oggi&amp;#34;]
        A3 --&amp;gt; A4[Drift silenzioso&amp;lt;br/&amp;gt;fino al prossimo audit]
    end
    subgraph C[As code]
        B1[Controlli come codice] --&amp;gt; B2[Verifica continua&amp;lt;br/&amp;gt;in pipeline + runtime]
        B2 --&amp;gt; B3[Evidenze generate&amp;lt;br/&amp;gt;automaticamente]
        B3 --&amp;gt; B2
    end
    style A4 fill:#fde2e4,stroke:#e63946
    style B3 fill:#e8f0fe,stroke:#4361ee
&lt;/pre&gt;

&lt;p&gt;Il problema del modello tradizionale non è la fatica, è la &lt;em&gt;finestra&lt;/em&gt;: tra due audit l&amp;rsquo;infrastruttura
deriva e nessuno lo sa. La compliance as code chiude la finestra verificando in continuo e segnalando
la deviazione quando avviene, non un anno dopo.&lt;/p&gt;
&lt;h2 id=&#34;i-controlli-ci-sono-già&#34;&gt;I controlli ci sono già
&lt;/h2&gt;&lt;p&gt;La buona notizia: gran parte dei controlli richiesti dai framework (ISO 27001, SOC 2, PCI DSS) sono
proprio quelli costruiti in questa serie. Non serve un lavoro parallelo, serve &lt;em&gt;mappare&lt;/em&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Requisito del framework           →  Controllo tecnico già in pipeline
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;gestione delle vulnerabilità&amp;#34;    →  SCA + vulnerability management + gate
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;controllo degli accessi&amp;#34;         →  RBAC + least privilege + identità workload
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;integrità del software&amp;#34;          →  firma Sigstore + provenienza SLSA + SBOM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;logging e monitoraggio&amp;#34;          →  audit log a prova di manomissione + detection
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ogni controllo tecnico diventa l&amp;rsquo;evidenza di un requisito. L&amp;rsquo;audit smette di essere &amp;ldquo;trova le prove&amp;rdquo; e
diventa &amp;ldquo;interroga il sistema che le produce già&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;generare-evidenze-non-raccoglierle&#34;&gt;Generare evidenze, non raccoglierle
&lt;/h2&gt;&lt;p&gt;Il salto di qualità è l&amp;rsquo;evidenza &lt;em&gt;automatica&lt;/em&gt;. Ogni volta che la pipeline firma un&amp;rsquo;immagine, verifica
una policy, blocca un gate o ruota un segreto, genera un record datato e verificabile. Questi record
&lt;em&gt;sono&lt;/em&gt; l&amp;rsquo;evidenza di conformità, prodotta come effetto collaterale del lavoro normale — non raccolta a
mano in vista dell&amp;rsquo;ispezione. Standard emergenti come &lt;strong&gt;OSCAL&lt;/strong&gt; permettono di esprimere i controlli e
la loro verifica in forma leggibile dalle macchine, così l&amp;rsquo;audit può essere in parte automatizzato.&lt;/p&gt;
&lt;h2 id=&#34;policy-as-code-di-nuovo&#34;&gt;Policy as code, di nuovo
&lt;/h2&gt;&lt;p&gt;La compliance as code è, nella pratica, &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/policy-as-code-pipeline/&#34; &gt;policy as code&lt;/a&gt;
applicata ai requisiti normativi: la regola &amp;ldquo;ogni immagine in produzione deve essere firmata&amp;rdquo; è &lt;em&gt;allo
stesso tempo&lt;/em&gt; un controllo di sicurezza e un&amp;rsquo;evidenza di conformità al requisito di integrità del
software. Un solo meccanismo serve due scopi, ed è verificato di continuo invece che attestato una
volta l&amp;rsquo;anno.&lt;/p&gt;
&lt;h2 id=&#34;il-limite-onesto-la-mappatura-resta-umana&#34;&gt;Il limite onesto: la mappatura resta umana
&lt;/h2&gt;&lt;p&gt;Lo strumento verifica i controlli; decidere &lt;em&gt;quali&lt;/em&gt; controlli soddisfano &lt;em&gt;quale&lt;/em&gt; requisito, e se la
copertura è sufficiente, resta un giudizio umano — spesso negoziato con l&amp;rsquo;auditor. La compliance as
code non elimina il revisore: gli dà evidenze migliori e continue, e sposta la conversazione da &amp;ldquo;mi
fai vedere uno screenshot?&amp;rdquo; a &amp;ldquo;interroghiamo insieme il sistema&amp;rdquo;. Riduce la fatica e il teatro, non la
responsabilità.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se trasformo la compliance in codice automatico, non rischio il &#34;teatro della conformità&#34; inverso — controlli che passano verde ma non riflettono la sicurezza reale, solo spuntati per far felice l&#39;auditor?&lt;/summary&gt;
&lt;p&gt;È il rischio giusto da tenere d&#39;occhio, perché esiste in entrambi i mondi e la compliance as code lo
sposta ma non lo elimina da sola. Il &#34;teatro della conformità&#34; — controlli spuntati che non significano
sicurezza reale — nasce quando la conformità diventa il fine invece del mezzo, e questo può succedere con
gli screenshot come con il codice. La versione as code ha però due difese che il modello manuale non ha,
e un rischio specifico da gestire. Prima difesa: la verifica continua rende molto più difficile il
teatro &lt;em&gt;temporale&lt;/em&gt;. Con gli screenshot &#34;conforme il giorno dell&#39;audit, derivato il giorno dopo&#34; è
la norma; con la verifica continua un controllo che smette di essere vero si accende rosso subito, quindi
il verde significa almeno &#34;vero adesso e ieri e l&#39;altroieri&#34;, non &#34;vero il 15 marzo alle 10&#34;. Seconda
difesa: se il controllo di conformità &lt;em&gt;è&lt;/em&gt; lo stesso controllo di sicurezza operativo — la policy
&#34;solo immagini firmate&#34; che blocca davvero i deploy — allora passarlo per finta significa disattivare la
sicurezza vera, non solo ingannare l&#39;auditor; il costo di barare diventa reale. È esattamente per questo
che vale la pena far coincidere i due, invece di avere controlli di sicurezza &#34;veri&#34; e controlli di
compliance &#34;per l&#39;audit&#34; separati. Il rischio specifico da gestire è il disallineamento tra ciò che il
controllo &lt;em&gt;misura&lt;/em&gt; e ciò che il requisito &lt;em&gt;intende&lt;/em&gt;: un check può essere verde perché misura
la cosa sbagliata o una versione svuotata del requisito — &#34;esiste una policy di password&#34; (verde) mentre
la policy permette &#34;1234&#34;. Qui la compliance as code non ti salva da sola: serve che la mappatura
requisito→controllo sia fatta con onestà e rivista, che i controlli misurino la sostanza e non la forma,
e che qualcuno — interno o auditor — sfidi periodicamente &#34;questo verde dimostra davvero ciò che il
requisito vuole?&#34;. In altre parole, l&#39;automazione elimina il teatro della &lt;em&gt;raccolta&lt;/em&gt; di prove e
della finestra temporale, ma la qualità del &lt;em&gt;significato&lt;/em&gt; dei controlli resta un giudizio umano da
presidiare. Il modo per non cadere nel teatro inverso è ancorare ogni controllo a un rischio reale che ti
interessa ridurre, non a una casella da spuntare: se il controllo esiste perché previene un attacco che
temi, il suo verde vale; se esiste solo perché un documento lo chiede, sei già nel teatro, codice o
screenshot che sia.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;La compliance as code rende la conformità continua invece che istantanea: i controlli sono codice
verificato sempre, le evidenze si generano da sole come effetto del lavoro normale, e gran parte dei
requisiti è già coperta dai controlli della pipeline. È policy as code applicata ai framework, con la
mappatura che resta umana. Tutto questo — pipeline, runtime, operate, conformità — va governato e
&lt;em&gt;misurato&lt;/em&gt; per sapere se funziona e migliora. Le metriche DevSecOps sono il prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Il Secure SDLC: un controllo per ogni fase</title>
        <link>https://www.matteobianchi.eu/p/secure-sdlc/</link>
        <pubDate>Tue, 24 Mar 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/secure-sdlc/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/secure-sdlc/cover.png" alt="Featured image of post Il Secure SDLC: un controllo per ogni fase" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Nel capitolo precedente abbiamo stabilito il &lt;em&gt;perché&lt;/em&gt; dello &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/cos-e-devsecops/&#34; &gt;shift left&lt;/a&gt;.
Ora il &lt;em&gt;dove&lt;/em&gt;: quali attività di sicurezza appartengono a quale fase. Senza una cornice, ogni team
reinventa un insieme casuale di controlli, dimentica interi domini (la gestione dei segreti, la
supply chain) e non sa dire se sta migliorando. Il &lt;strong&gt;Secure SDLC&lt;/strong&gt; è quella cornice.&lt;/p&gt;
&lt;h2 id=&#34;le-fasi-e-i-loro-controlli&#34;&gt;Le fasi e i loro controlli
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    REQ[Requisiti&amp;lt;br/&amp;gt;abuse case,&amp;lt;br/&amp;gt;requisiti di sicurezza] --&amp;gt; DES[Design&amp;lt;br/&amp;gt;threat modeling]
    DES --&amp;gt; DEV[Sviluppo&amp;lt;br/&amp;gt;SAST, SCA,&amp;lt;br/&amp;gt;secret scanning]
    DEV --&amp;gt; TST[Test&amp;lt;br/&amp;gt;DAST, fuzzing,&amp;lt;br/&amp;gt;security gate]
    TST --&amp;gt; REL[Rilascio&amp;lt;br/&amp;gt;SBOM, firma,&amp;lt;br/&amp;gt;hardening]
    REL --&amp;gt; OPS[Operate&amp;lt;br/&amp;gt;runtime, patch,&amp;lt;br/&amp;gt;detection, IR]
    style DES fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Ogni fase ha un controllo &lt;em&gt;naturale&lt;/em&gt;: il momento in cui quel tipo di difetto è più economico da
prevenire. Mettere il threat modeling nel design evita di scrivere codice su un&amp;rsquo;architettura
sbagliata; mettere il SAST nello sviluppo cattura i bug mentre il contesto è fresco nella mente di
chi li ha scritti.&lt;/p&gt;
&lt;h2 id=&#34;due-framework-da-conoscere&#34;&gt;Due framework da conoscere
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NIST SSDF (SP 800-218)&lt;/strong&gt;: descrive &lt;em&gt;pratiche&lt;/em&gt; in quattro gruppi — preparare l&amp;rsquo;organizzazione,
proteggere il software, produrre software ben protetto, rispondere alle vulnerabilità. È
prescrittivo sul &lt;em&gt;cosa&lt;/em&gt;, agnostico sul &lt;em&gt;come&lt;/em&gt;. Ottimo come checklist di copertura.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OWASP SAMM&lt;/strong&gt;: un &lt;em&gt;modello di maturità&lt;/em&gt;. Non chiede solo &amp;ldquo;lo fai?&amp;rdquo; ma &amp;ldquo;a che livello?&amp;rdquo; (1, 2, 3)
su quindici pratiche. Serve a misurare dove sei e dove andare, non a fare tutto subito.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;maturità-non-perfezione&#34;&gt;Maturità, non perfezione
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;errore classico è voler implementare ogni controllo al massimo livello dal primo giorno. Risultato:
pipeline lentissime, team in rivolta, controlli disattivati. La maturità è un percorso:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Livello 1  controllo implementato, anche solo su progetti pilota   ← comincia qui
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Livello 2  applicato in modo coerente, con processo definito
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Livello 3  misurato, ottimizzato, automatizzato ovunque
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si sceglie &lt;em&gt;per rischio&lt;/em&gt;: i servizi esposti a internet e che toccano dati sensibili salgono di
livello prima di un tool interno letto da tre persone. Una cornice serve a prioritizzare, non a
pretendere uniformità.&lt;/p&gt;
&lt;h2 id=&#34;il-sdlc-incontra-il-cicd&#34;&gt;Il SDLC incontra il CI/CD
&lt;/h2&gt;&lt;p&gt;Il Secure SDLC è il &lt;em&gt;cosa&lt;/em&gt;; la pipeline CI/CD è il &lt;em&gt;dove lo automatizzi&lt;/em&gt;. Ogni controllo della
catena ha una collocazione naturale nella pipeline: il secret scanning come hook di pre-commit, il
SAST sulla pull request, il DAST in staging, la firma dell&amp;rsquo;artefatto al rilascio. I capitoli
successivi riempiono ogni casella; questa è la mappa che impedisce di dimenticarne una.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; i framework come SSDF e SAMM non sono solo burocrazia che rallenta un team agile?&lt;/summary&gt;
&lt;p&gt;Diventano burocrazia solo se usati male — come moduli da compilare per un auditor invece che come
checklist per non dimenticare domini interi. Usati bene fanno l&#39;opposto di rallentare: evitano la
retromarcia costosa. Il team agile che salta il threat modeling e scopre a sei mesi dal lancio che
l&#39;architettura di multi-tenancy perde dati tra clienti non è stato veloce, è stato veloce verso un muro.
Il valore di una cornice non è la cerimonia, è la &lt;em&gt;copertura&lt;/em&gt;: senza, è statisticamente certo che
dimenticherai qualcosa — di solito la gestione dei segreti o la supply chain, i due domini che nessuno
&#34;sente&#34; come proprio finché non esplodono. Il modo agile di usare questi framework è prenderli come menu,
non come contratto: scegli i controlli proporzionati al rischio del servizio, li automatizzi nella
pipeline così non pesano sul lavoro quotidiano, e sali di maturità quando il rischio lo giustifica. La
cornice è leggera; è l&#39;incidente che evita a essere pesante.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Il Secure SDLC mappa un controllo a ogni fase, e i modelli di maturità trasformano &amp;ldquo;fai tutto&amp;rdquo; in un
percorso guidato dal rischio. È la mappa; il resto della serie sono le tappe. La prima, e quella con
il miglior rapporto costo/beneficio, vive nel design: ragionare da attaccante &lt;em&gt;prima&lt;/em&gt; di scrivere
codice. È il threat modeling, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
