<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>KMS on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/kms/</link>
        <description>Recent content in KMS on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 28 Jul 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/kms/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Crittografia dei dati nel cloud</title>
        <link>https://www.matteobianchi.eu/p/crittografia-dati-cloud/</link>
        <pubDate>Tue, 28 Jul 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/crittografia-dati-cloud/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/crittografia-dati-cloud/cover.png" alt="Featured image of post Crittografia dei dati nel cloud" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;La cifratura è l&amp;rsquo;ultima rete di sicurezza: quando l&amp;rsquo;identità, la rete e la configurazione hanno
fallito e un attaccante mette le mani sui dati, la cifratura decide se trova informazioni o solo
rumore. Nel cloud è quasi sempre disponibile, spesso attiva di default, e costa poco o nulla in
prestazioni grazie all&amp;rsquo;accelerazione hardware. La domanda non è più &amp;ldquo;cifrare sì o no&amp;rdquo;, ma &lt;strong&gt;dove, come,
e soprattutto chi tiene le chiavi&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;i-due-fronti-a-riposo-e-in-transito&#34;&gt;I due fronti: a riposo e in transito
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    subgraph REST[&amp;#34;A riposo (at rest)&amp;#34;]
        DB[(Disco / DB / storage)]
        DB -.cifrato con.-&amp;gt; K1[Chiave dal KMS]
    end
    subgraph TRANSIT[&amp;#34;In transito (in transit)&amp;#34;]
        C[Client] --&amp;gt;|TLS| S[Servizio]
    end
    style K1 fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A riposo&lt;/strong&gt;: dischi, database, storage a oggetti, backup, snapshot. Si appoggia alla
&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/gestione-segreti-e-kms/&#34; &gt;crittografia a busta del KMS&lt;/a&gt; vista prima: i dati sono
cifrati con chiavi dati, le chiavi dati con la master.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In transito&lt;/strong&gt;: ogni byte che viaggia in rete, protetto da &lt;strong&gt;TLS&lt;/strong&gt;. Vale non solo verso Internet ma
anche &lt;em&gt;dentro&lt;/em&gt; la tua rete cloud: tra servizi, verso il database, tra microservizi. &amp;ldquo;Rete privata&amp;rdquo;
non significa &amp;ldquo;rete fidata&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;chi-tiene-le-chiavi-il-vero-controllo&#34;&gt;Chi tiene le chiavi: il vero controllo
&lt;/h2&gt;&lt;p&gt;Chi controlla la chiave controlla i dati. Le opzioni, dalla più comoda alla più controllata:&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;lnt&#34;&gt;2
&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;lnt&#34;&gt;4
&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;Chiavi gestite dal provider   → comode, zero gestione, il provider può tecnicamente accedervi
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Chiavi gestite da te nel KMS  → tu decidi rotazione, revoca e policy d&amp;#39;uso (raccomandato)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BYOK (bring your own key)     → importi la tua chiave nel KMS del provider
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;HYOK / external key           → la chiave resta fuori dal cloud, sotto il tuo controllo totale
&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;Per la maggior parte dei casi, &lt;strong&gt;chiavi tue gestite nel KMS del provider&lt;/strong&gt; è il giusto equilibrio:
controlli policy, rotazione e revoca (revocare la chiave rende i dati illeggibili all&amp;rsquo;istante, un
&amp;ldquo;interruttore d&amp;rsquo;emergenza&amp;rdquo; potente), senza l&amp;rsquo;onere operativo di custodire hardware. BYOK e chiavi
esterne servono a requisiti di compliance o sovranità del dato più stringenti.&lt;/p&gt;
&lt;h2 id=&#34;la-cifratura-non-sostituisce-il-controllo-daccesso&#34;&gt;La cifratura non sostituisce il controllo d&amp;rsquo;accesso
&lt;/h2&gt;&lt;p&gt;Un equivoco frequente: &amp;ldquo;i dati sono cifrati, quindi sono al sicuro&amp;rdquo;. La cifratura a riposo protegge
contro chi ruba il &lt;em&gt;supporto fisico&lt;/em&gt; o un backup — non contro chi ha i permessi IAM per leggere i dati
&lt;em&gt;attraverso il servizio&lt;/em&gt;, perché per lui la decifratura è trasparente. Un bucket cifrato ma pubblico
resta un data breach. La cifratura è &lt;em&gt;complementare&lt;/em&gt; al controllo d&amp;rsquo;accesso, non un suo sostituto.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se il provider offre la cifratura a riposo attiva di default e gestisce lui le chiavi, perché dovrei complicarmi la vita con chiavi mie nel KMS? I dati sono già cifrati.&lt;/summary&gt;
&lt;p&gt;Perché &#34;cifrati con chiavi del provider&#34; e &#34;cifrati con chiavi tue&#34; proteggono da minacce diverse, e
la differenza conta proprio nei casi che ti tengono sveglio la notte. Con le chiavi gestite dal provider
ottieni la protezione base — se qualcuno ruba un disco fisico dal data center, trova rumore — ed è già
meglio di niente. Ma non ottieni tre cose. Primo, il &lt;em&gt;controllo della revoca&lt;/em&gt;: con una chiave tua
puoi, in caso di incidente o sospetto, revocarla e rendere i dati immediatamente illeggibili a chiunque,
incluse applicazioni compromesse che avevano i permessi — è un interruttore d&#39;emergenza che le chiavi del
provider non ti danno. Secondo, la &lt;em&gt;separazione dei poteri&lt;/em&gt;: con chiavi tue, l&#39;accesso ai dati
richiede sia il permesso sul servizio sia il permesso sulla chiave KMS, due controlli IAM distinti che
puoi affidare a ruoli diversi — così nessuna singola identità, da sola, decifra tutto. Terzo, la
&lt;em&gt;garanzia verso terzi e la compliance&lt;/em&gt;: molti requisiti normativi e contrattuali chiedono che il
cliente, non il provider, controlli le chiavi; con chiavi tue hai log d&#39;uso delle chiavi, policy
esplicite e la possibilità di dimostrare chi può decifrare cosa. Sul &#34;complicarmi la vita&#34;: gestire una
chiave nel KMS del provider è questione di pochi clic o poche righe di IaC — non stai custodendo hardware,
stai solo spostando la proprietà logica della chiave dal provider a te. Il costo è minimo, il controllo
che guadagni è sostanziale. Le chiavi del provider vanno bene per dati a basso rischio; per tutto ciò che
conta, le chiavi tue sono lo standard ragionevole.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Cifrare a riposo e in transito è la rete di sicurezza finale, ma il controllo vero sta nelle chiavi:
gestirle tu nel KMS dà revoca, separazione dei poteri e compliance, mentre la cifratura resta
complementare — mai sostitutiva — del controllo d&amp;rsquo;accesso. Il servizio dove questi principi si
scontrano più spesso con la realtà degli incidenti è lo storage a oggetti, i famigerati bucket. È il
prossimo capitolo, &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/sicurezza-storage-oggetti/&#34; &gt;sicurezza dello storage a oggetti&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gestione dei segreti e KMS</title>
        <link>https://www.matteobianchi.eu/p/gestione-segreti-e-kms/</link>
        <pubDate>Tue, 21 Jul 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/gestione-segreti-e-kms/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/gestione-segreti-e-kms/cover.png" alt="Featured image of post Gestione dei segreti e KMS" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;&lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/identita-dei-workload/&#34; &gt;identità dei workload&lt;/a&gt; elimina le chiavi del cloud, ma
restano i segreti che il cloud non gestisce per te: la password del database, il token dell&amp;rsquo;API di
pagamento, la chiave di un partner, un certificato privato. Metterli in chiaro nel codice, in un file
&lt;code&gt;.env&lt;/code&gt; committato, o in una variabile d&amp;rsquo;ambiente leggibile da chiunque ispezioni il processo, è un
errore classico e devastante. Servono due strumenti distinti ma collegati: un &lt;strong&gt;secrets manager&lt;/strong&gt; per
custodire i segreti, e un &lt;strong&gt;KMS&lt;/strong&gt; per gestire le chiavi che li cifrano.&lt;/p&gt;
&lt;h2 id=&#34;secrets-manager-la-cassaforte&#34;&gt;Secrets manager: la cassaforte
&lt;/h2&gt;&lt;p&gt;Un secrets manager (AWS Secrets Manager, Azure Key Vault, GCP Secret Manager, HashiCorp Vault)
conserva i segreti &lt;strong&gt;cifrati a riposo&lt;/strong&gt;, li espone solo a identità autorizzate via IAM, ne tiene le
&lt;strong&gt;versioni&lt;/strong&gt; e può &lt;strong&gt;ruotarli&lt;/strong&gt; automaticamente.&lt;/p&gt;
&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    APP[Applicazione] --&amp;gt;|&amp;#34;chiede il segreto&amp;lt;br/&amp;gt;(autenticata via IAM)&amp;#34;| SM[Secrets Manager]
    SM --&amp;gt;|&amp;#34;segreto decifrato&amp;lt;br/&amp;gt;in memoria, a richiesta&amp;#34;| APP
    SM -.cifra/decifra con.-&amp;gt; KMS[(KMS)]
    style SM fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Il valore non sta più nel codice: l&amp;rsquo;applicazione lo chiede a runtime, autenticandosi con la sua
identità di workload. Così il segreto si cambia senza ridistribuire l&amp;rsquo;app, e ogni accesso è tracciato.&lt;/p&gt;
&lt;h2 id=&#34;kms-e-la-crittografia-a-busta&#34;&gt;KMS e la crittografia a busta
&lt;/h2&gt;&lt;p&gt;Il KMS (Key Management Service) non conserva i tuoi dati: gestisce le &lt;strong&gt;chiavi&lt;/strong&gt;. Il meccanismo
centrale è la &lt;strong&gt;crittografia a busta (envelope encryption)&lt;/strong&gt;: invece di cifrare gigabyte di dati con la
chiave master (che non lascia mai il KMS), si genera una &lt;strong&gt;chiave dati&lt;/strong&gt; usa-e-getta, con questa si
cifrano i dati, e si conserva solo la chiave dati a sua volta cifrata dalla master.&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;span class=&#34;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&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;1. KMS genera una Data Key  → in chiaro (DK) + cifrata dalla master (DK_enc)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Cifri i dati con DK      → poi CANCELLI DK dalla memoria
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. Salvi insieme ai dati:   DK_enc  (la chiave dati cifrata)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. Per decifrare: mandi DK_enc al KMS → ti ridà DK → decifri → scarti DK
&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;Formalmente, con dati $D$, chiave dati $K$ e chiave master $M$:&lt;/p&gt;
&lt;p&gt;$$ C = \text{Enc}&lt;em&gt;K(D), \qquad K&lt;/em&gt;{enc} = \text{Enc}_M(K) $$&lt;/p&gt;
&lt;p&gt;si archivia la coppia $(C, K_{enc})$ e la master $M$ resta sempre dentro il KMS. Il vantaggio: la
chiave master, la più preziosa, non esce mai e non tocca mai i dati; ruotarla o revocarla ha effetto
immediato; e i permessi d&amp;rsquo;uso delle chiavi passano per l&amp;rsquo;IAM, quindi puoi dire &lt;em&gt;chi&lt;/em&gt; può decifrare
&lt;em&gt;cosa&lt;/em&gt; senza dare a nessuno la chiave in mano.&lt;/p&gt;
&lt;h2 id=&#34;rotazione-il-segreto-che-cambia&#34;&gt;Rotazione: il segreto che cambia
&lt;/h2&gt;&lt;p&gt;Un segreto che non cambia mai è un segreto che, se trapela, resta valido per sempre. La &lt;strong&gt;rotazione&lt;/strong&gt;
periodica — automatica dove possibile — limita la finestra d&amp;rsquo;esposizione. I secrets manager moderni
ruotano le credenziali di database generando la nuova, aggiornandola sul database e nel segreto in modo
coordinato, senza downtime.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; se l&#39;applicazione deve comunque leggere il segreto in chiaro per usarlo, e un attaccante che compromette l&#39;app può leggerlo dalla memoria, a cosa serve tutta l&#39;infrastruttura di secrets manager e KMS?&lt;/summary&gt;
&lt;p&gt;Serve a moltissimo, perché cambia completamente la &lt;em&gt;superficie&lt;/em&gt; e la &lt;em&gt;durata&lt;/em&gt;
dell&#39;esposizione, anche se è vero che nessun sistema può nascondere un segreto all&#39;applicazione che lo
deve usare. Senza secrets manager, il segreto è esposto &lt;em&gt;ovunque e sempre&lt;/em&gt;: nel codice sorgente
(quindi in Git, nella cronologia, in ogni clone, in ogni fork), nei file di configurazione, nelle
immagini dei container, nei backup, nei log di deploy. Un attaccante non ha bisogno di compromettere
l&#39;app in esecuzione: gli basta trovare il repository, un backup o un&#39;immagine. Con il secrets manager, il
segreto esiste in chiaro solo &lt;em&gt;in memoria, nel processo vivo, per il tempo d&#39;uso&lt;/em&gt;: per rubarlo
devi compromettere quel processo specifico in quel momento, che è enormemente più difficile che trovare
una stringa in un file. In più ottieni tre cose che il segreto in chiaro non dà: &lt;em&gt;tracciamento&lt;/em&gt;
(sai chi e quando ha letto il segreto, quindi un accesso anomalo si vede), &lt;em&gt;rotazione&lt;/em&gt; (se
sospetti una fuga, cambi il segreto in un punto solo e tutte le app lo prendono nuovo, senza
ridistribuire nulla), e &lt;em&gt;controllo d&#39;accesso&lt;/em&gt; (solo le identità autorizzate via IAM lo leggono,
non &#34;chiunque abbia accesso al filesystem&#34;). Sul KMS il discorso è ancora più netto: la chiave master
non entra &lt;em&gt;mai&lt;/em&gt; nella memoria dell&#39;applicazione — l&#39;app manda al KMS la chiave dati cifrata e
riceve quella in chiaro, ma la master resta nel modulo hardware del provider, irraggiungibile anche se
l&#39;app è completamente compromessa. La sicurezza perfetta non esiste; ridurre l&#39;esposizione da &#34;sempre, in
mille posti&#34; a &#34;solo in memoria, nel momento d&#39;uso, tracciata e revocabile&#34; è esattamente il lavoro che
conta.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;I segreti inevitabili vanno in un secrets manager — cifrati, versionati, ruotabili, serviti a runtime
all&amp;rsquo;identità autorizzata — e il KMS gestisce le chiavi con la crittografia a busta, tenendo la master
sempre al sicuro. Questo meccanismo di cifratura non riguarda solo i segreti: è la base per proteggere
&lt;em&gt;tutti&lt;/em&gt; i dati a riposo e in transito. È il tema della &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/crittografia-dati-cloud/&#34; &gt;crittografia dei dati nel
cloud&lt;/a&gt;, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
