<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>IAM on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/iam/</link>
        <description>Recent content in IAM on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 14 Jul 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/iam/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>L&#39;identità dei workload</title>
        <link>https://www.matteobianchi.eu/p/identita-dei-workload/</link>
        <pubDate>Tue, 14 Jul 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/identita-dei-workload/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/identita-dei-workload/cover.png" alt="Featured image of post L&#39;identità dei workload" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Un&amp;rsquo;applicazione nel cloud deve spesso leggere un database, scrivere su uno storage, chiamare un&amp;rsquo;altra
API. Per farlo le serve un&amp;rsquo;identità. La via sbagliata — e purtroppo comunissima — è creare un utente
IAM, generare una &lt;strong&gt;chiave statica&lt;/strong&gt; (access key / service account key) e incollarla in un file di
configurazione o in una variabile d&amp;rsquo;ambiente. Quella chiave non scade mai, finisce nei log, nei
repository Git, nei backup, nelle immagini dei container: è la causa numero uno di credenziali cloud
rubate. Le &lt;strong&gt;identità di workload&lt;/strong&gt; esistono per non doverla mai creare.&lt;/p&gt;
&lt;h2 id=&#34;il-meccanismo-la-macchina-è-lidentità&#34;&gt;Il meccanismo: la macchina È l&amp;rsquo;identità
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    APP[Applicazione&amp;lt;br/&amp;gt;su una VM / container] --&amp;gt;|&amp;#34;chiede credenziali&amp;#34;| MD[Metadata service&amp;lt;br/&amp;gt;locale della piattaforma]
    MD --&amp;gt;|&amp;#34;credenziali temporanee&amp;lt;br/&amp;gt;a scadenza&amp;#34;| APP
    APP --&amp;gt;|&amp;#34;usa le credenziali&amp;#34;| API[API del cloud]
    ROLE[Ruolo assegnato&amp;lt;br/&amp;gt;alla macchina] -.definisce i permessi.-&amp;gt; MD
    style ROLE fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Invece di dare una chiave all&amp;rsquo;applicazione, si assegna un &lt;strong&gt;ruolo alla macchina&lt;/strong&gt; che la ospita (una
istanza, un container, una funzione). La piattaforma espone un &lt;em&gt;metadata service&lt;/em&gt; locale da cui
l&amp;rsquo;applicazione ottiene, a richiesta, credenziali &lt;strong&gt;temporanee&lt;/strong&gt; che scadono dopo minuti o ore e vengono
rinnovate in automatico. Nessun segreto a lunga vita esiste mai: se la macchina viene spenta, le
credenziali muoiono con lei.&lt;/p&gt;
&lt;h2 id=&#34;i-nomi-nei-tre-provider&#34;&gt;I nomi nei tre provider
&lt;/h2&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;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&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;/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 hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AWS   → IAM Role su EC2/ECS/Lambda (via Instance Metadata Service, usa IMDSv2!)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GCP   → service account allegato alla risorsa + metadata server
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Azure → Managed Identity (system- o user-assigned)
&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;Il concetto è identico: un&amp;rsquo;identità legata alla risorsa, credenziali effimere servite localmente. Su
AWS è importante forzare &lt;strong&gt;IMDSv2&lt;/strong&gt; (la versione del metadata service che richiede un token), perché la
v1 è stata sfruttata in attacchi SSRF per rubare credenziali dalle istanze.&lt;/p&gt;
&lt;h2 id=&#34;oltre-il-cloud-la-federazione&#34;&gt;Oltre il cloud: la federazione
&lt;/h2&gt;&lt;p&gt;E se il workload gira &lt;em&gt;fuori&lt;/em&gt; dal cloud — in una pipeline CI/CD su GitHub, in un cluster on-premise?
Qui entra la &lt;strong&gt;federazione (workload identity federation)&lt;/strong&gt;: il sistema esterno presenta un token
firmato OIDC che attesta la sua identità (&amp;ldquo;sono la pipeline X del repo Y&amp;rdquo;), e il cloud lo scambia con
credenziali temporanee, senza che nessuna chiave statica cambi mai di mano. È il modo moderno di far
parlare CI, Kubernetes esterni e altri cloud con il tuo ambiente, in sicurezza.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; una chiave statica in un file è semplicissima e funziona ovunque. Ruoli, metadata service, federazione OIDC: non sto aggiungendo pezzi fragili per risolvere un problema che una buona gestione dei segreti già coprirebbe?&lt;/summary&gt;
&lt;p&gt;No, e la distinzione è importante: la gestione dei segreti (che vedremo nel prossimo capitolo) riduce
il rischio di una chiave, ma l&#39;identità di workload lo &lt;em&gt;elimina alla radice&lt;/em&gt; — sono complementari,
non alternative. Una chiave statica, per quanto ben custodita in un vault, ha tre proprietà che nessuna
gestione può togliere: &lt;em&gt;esiste&lt;/em&gt;, quindi può essere letta; &lt;em&gt;non scade&lt;/em&gt;, quindi se trapela
resta valida finché qualcuno non se ne accorge e la revoca manualmente; e &lt;em&gt;deve viaggiare&lt;/em&gt; dal
vault all&#39;applicazione, moltiplicando i punti in cui può trapelare (log, dump di memoria, variabili
d&#39;ambiente ispezionabili, immagini di container). L&#39;identità di workload rende la chiave statica
&lt;em&gt;inesistente&lt;/em&gt;: l&#39;applicazione non possiede mai un segreto a lunga vita, ottiene credenziali che
scadono in minuti e si rinnovano da sole. Se un attaccante le ruba, ha una finestra brevissima, non un
accesso permanente; e la revoca è automatica allo spegnimento della macchina. Sui &#34;pezzi fragili&#34;: il
metadata service e la federazione OIDC non li costruisci tu, li fornisce la piattaforma, già
irrobustiti — l&#39;unica tua accortezza è usare la variante sicura (IMDSv2) e configurare bene le condizioni
della federazione. In cambio elimini l&#39;intera categoria di incidenti &#34;chiave statica trovata nel repo
Git&#34;, che è tra le più frequenti in assoluto. La chiave in un file è semplice come lasciare la porta
aperta è semplice: la complessità che eviti oggi la paghi come breach domani.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Le identità di workload eliminano le chiavi statiche: la macchina riceve un ruolo, ottiene credenziali
temporanee da un metadata service locale, e all&amp;rsquo;esterno la federazione OIDC scambia token firmati con
credenziali effimere. Nessun segreto a lunga vita da custodire. Ma qualche segreto — password di
database, chiavi di terze parti, certificati — resterà sempre inevitabile: come conservarlo è il tema
della &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/gestione-segreti-e-kms/&#34; &gt;gestione dei segreti e KMS&lt;/a&gt;, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Il principio del privilegio minimo</title>
        <link>https://www.matteobianchi.eu/p/principio-minimo-privilegio/</link>
        <pubDate>Tue, 07 Jul 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/principio-minimo-privilegio/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/principio-minimo-privilegio/cover.png" alt="Featured image of post Il principio del privilegio minimo" /&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/iam-identita-e-accessi/&#34; &gt;IAM&lt;/a&gt; ti dà il potere di concedere permessi con
precisione chirurgica. Il &lt;strong&gt;privilegio minimo&lt;/strong&gt; è la disciplina di usarlo bene: dare a ogni identità
&lt;em&gt;solo&lt;/em&gt; i permessi che le servono per il suo compito, e nulla di più. Non è un vezzo da puristi: è ciò
che trasforma una credenziale rubata da catastrofe a incidente contenuto. Se un&amp;rsquo;applicazione
compromessa può leggere un solo bucket, il danno finisce lì; se poteva fare &lt;code&gt;*&lt;/code&gt; su tutto, hai perso
l&amp;rsquo;intero account.&lt;/p&gt;
&lt;h2 id=&#34;il-raggio-desplosione&#34;&gt;Il raggio d&amp;rsquo;esplosione
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart TD
    C[Credenziale compromessa] --&amp;gt; Q{Quali permessi&amp;lt;br/&amp;gt;aveva?}
    Q --&amp;gt;|&amp;#34;Admin / wildcard *&amp;#34;| B[Raggio enorme:&amp;lt;br/&amp;gt;tutto l&amp;#39;account a rischio]
    Q --&amp;gt;|&amp;#34;Solo lo stretto necessario&amp;#34;| S[Raggio minimo:&amp;lt;br/&amp;gt;danno contenuto a una risorsa]
    style B fill:#fde2e4,stroke:#e63946
    style S fill:#d8f3dc,stroke:#2d6a4f
&lt;/pre&gt;

&lt;p&gt;La domanda che conta dopo ogni compromissione è &amp;ldquo;cosa poteva fare questa identità?&amp;rdquo;. Il privilegio
minimo è ciò che rende la risposta accettabile. Si chiama &lt;strong&gt;raggio d&amp;rsquo;esplosione (blast radius)&lt;/strong&gt;: ogni
permesso in più lo allarga.&lt;/p&gt;
&lt;h2 id=&#34;i-tre-antipattern-da-evitare&#34;&gt;I tre antipattern da evitare
&lt;/h2&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;hl&#34;&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&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;/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 hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;Action&amp;#34;: &amp;#34;*&amp;#34;             → può fare QUALSIASI cosa su quel servizio
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;#34;Resource&amp;#34;: &amp;#34;*&amp;#34;           → su QUALSIASI risorsa, non solo le sue
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ruolo admin &amp;#34;per comodità&amp;#34; → assegnato a un&amp;#39;app che ne usa il 2%
&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;I wildcard sono comodi mentre sviluppi e letali in produzione. Il pattern giusto è l&amp;rsquo;opposto:
&lt;strong&gt;partire da zero permessi e aggiungere solo ciò che fallisce&lt;/strong&gt; — far girare l&amp;rsquo;applicazione, guardare
quali chiamate API vengono negate, concedere &lt;em&gt;esattamente&lt;/em&gt; quelle. Gli strumenti di analisi degli
accessi dei provider (access analyzer, policy advisor) aiutano a scoprire i permessi concessi ma mai
usati, da rimuovere.&lt;/p&gt;
&lt;h2 id=&#34;temporaneo-batte-permanente&#34;&gt;Temporaneo batte permanente
&lt;/h2&gt;&lt;p&gt;Il privilegio minimo ha anche una dimensione &lt;em&gt;temporale&lt;/em&gt;. Permessi elevati che servono di rado (un
deploy, un&amp;rsquo;operazione d&amp;rsquo;emergenza) non vanno lasciati sempre attivi: meglio concederli &lt;strong&gt;just-in-time&lt;/strong&gt;,
a scadenza, con un ruolo assumibile solo quando serve e con tracciamento. Un permesso che esiste solo
per i dieci minuti in cui serve non può essere abusato il resto del tempo.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; partire da zero e aggiungere ogni permesso che fallisce è lentissimo e frustrante. In un team che deve consegnare, non è più pragmatico dare permessi larghi e stringere &#34;dopo&#34;?&lt;/summary&gt;
&lt;p&gt;È la trappola più comune e più costosa del cloud, perché quel &#34;dopo&#34; non arriva quasi mai —
e lo sanno bene anche gli attaccanti. Dare permessi larghi &#34;per ora&#34; crea tre problemi che si saldano.
Primo, &lt;em&gt;il dopo non viene&lt;/em&gt;: una volta che l&#39;app funziona con permessi larghi, nessuno torna a
stringerli, perché restringere rischia di rompere qualcosa in produzione e non dà alcun beneficio
visibile — è lavoro invisibile che si fa solo dopo un incidente. Secondo, &lt;em&gt;i permessi larghi
diventano invisibili&lt;/em&gt;: con decine di ruoli e wildcard sparsi, nessuno sa più chi può fare cosa, e
quando audit o incidente arrivano, scopri che mezza organizzazione aveva accesso admin &#34;temporaneo&#34; da
due anni. Terzo, &lt;em&gt;l&#39;abitudine si propaga&lt;/em&gt;: il ruolo largo copiato una volta viene riusato, e la
larghezza diventa lo standard di fatto. Il punto pragmatico vero è che partire stretti costa &lt;em&gt;meno&lt;/em&gt;
nel tempo, non di più: oggi gli strumenti generano la policy minima dai log di utilizzo quasi
automaticamente, parti da una policy di sviluppo permissiva &lt;em&gt;in ambiente di test&lt;/em&gt;, registri cosa
usa davvero, e promuovi in produzione la versione stretta già pronta. Così la velocità in sviluppo resta,
ma ciò che va in produzione è già minimo. La scorciatoia &#34;largo ora, stretto dopo&#34; non è pragmatismo: è
debito di sicurezza che si paga tutto insieme, con gli interessi, il giorno del breach.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Il privilegio minimo contiene il raggio d&amp;rsquo;esplosione di ogni credenziale compromessa: niente wildcard,
si parte da zero e si allarga solo sul necessario, si preferisce il temporaneo al permanente. Ma c&amp;rsquo;è
un&amp;rsquo;intera classe di identità che spesso riceve permessi troppo larghi e credenziali troppo durature:
le applicazioni e i server. Come darglieli in modo sicuro è il tema dell&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;, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>IAM: identità e accessi</title>
        <link>https://www.matteobianchi.eu/p/iam-identita-e-accessi/</link>
        <pubDate>Tue, 30 Jun 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/iam-identita-e-accessi/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/iam-identita-e-accessi/cover.png" alt="Featured image of post IAM: identità e accessi" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Nella rete tradizionale, se eri &amp;ldquo;dentro&amp;rdquo; il perimetro eri in gran parte fidato. Nel cloud quel
perimetro non esiste: ogni risorsa è un endpoint API raggiungibile da Internet, e l&amp;rsquo;unica cosa che
separa un attaccante dai tuoi dati è &lt;strong&gt;chi può chiamare quell&amp;rsquo;API&lt;/strong&gt;. Per questo si dice che nel cloud
&lt;strong&gt;l&amp;rsquo;identità è il nuovo perimetro&lt;/strong&gt;. L&amp;rsquo;IAM (Identity and Access Management) è il sistema che decide, a
ogni singola richiesta, se concederla o negarla.&lt;/p&gt;
&lt;h2 id=&#34;i-quattro-concetti-base&#34;&gt;I quattro concetti base
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart LR
    PR[&amp;#34;PRINCIPAL&amp;lt;br/&amp;gt;chi fa la richiesta&amp;lt;br/&amp;gt;(utente, ruolo, servizio)&amp;#34;] --&amp;gt;|chiede| AC[&amp;#34;AZIONE&amp;lt;br/&amp;gt;cosa vuole fare&amp;lt;br/&amp;gt;(es. leggi oggetto)&amp;#34;]
    AC --&amp;gt;|su| RS[&amp;#34;RISORSA&amp;lt;br/&amp;gt;su cosa&amp;lt;br/&amp;gt;(es. questo bucket)&amp;#34;]
    POL[&amp;#34;POLICY&amp;lt;br/&amp;gt;le regole&amp;#34;] -.valuta.-&amp;gt; DEC{Consenti&amp;lt;br/&amp;gt;o nega?}
    PR --&amp;gt; DEC
    AC --&amp;gt; DEC
    RS --&amp;gt; DEC
    style POL fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;Ogni richiesta è la tripla &lt;strong&gt;principal → azione → risorsa&lt;/strong&gt;, e le &lt;strong&gt;policy&lt;/strong&gt; sono le regole che la
valutano. Una policy è, in sostanza, un elenco di &amp;ldquo;questo principal può (o non può) fare queste azioni
su queste risorse, a queste condizioni&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;utenti-gruppi-ruoli&#34;&gt;Utenti, gruppi, ruoli
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Utente&lt;/strong&gt;: un&amp;rsquo;identità a lungo termine per una persona (o, storicamente, per un&amp;rsquo;app — da evitare).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gruppo&lt;/strong&gt;: un insieme di utenti a cui si assegnano permessi in blocco, per non ripeterli uno a uno.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ruolo&lt;/strong&gt;: un&amp;rsquo;identità &lt;em&gt;assumibile&lt;/em&gt; temporaneamente, senza credenziali permanenti. È lo strumento
chiave del cloud: una VM, una funzione o un utente &amp;ldquo;assume&amp;rdquo; un ruolo e ottiene credenziali a
scadenza. I ruoli evitano le chiavi statiche, il punto debole numero uno.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;il-modello-di-valutazione-nega-per-default&#34;&gt;Il modello di valutazione: nega per default
&lt;/h2&gt;&lt;p&gt;La regola d&amp;rsquo;oro di quasi tutti gli IAM cloud:&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. Si parte da: TUTTO NEGATO (deny implicito)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Un Allow esplicito concede il permesso
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. ...ma un Deny esplicito VINCE sempre su qualunque Allow
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. Risultato: accesso solo se c&amp;#39;è un Allow e NESSUN Deny applicabile
&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;Il &lt;em&gt;deny implicito&lt;/em&gt; significa che se nessuna policy concede un&amp;rsquo;azione, è negata. E un &lt;strong&gt;deny esplicito
batte qualsiasi allow&lt;/strong&gt;: utile per mettere guardrail che nessun permesso successivo può aggirare. Su
AWS si aggiungono i confini (permission boundaries) e le SCP a livello di organizzazione; su GCP
l&amp;rsquo;ereditarietà lungo la gerarchia; su Azure i ruoli RBAC con scope. I nomi cambiano, la logica
&amp;ldquo;nega-salvo-consenso-esplicito&amp;rdquo; no.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; l&#39;IAM con policy, ruoli, condizioni sembra enormemente più complicato di &#34;utente e password con dei permessi&#34;. Tutta questa complessità non è ingegneria eccessiva?&lt;/summary&gt;
&lt;p&gt;Sembra eccessiva solo finché non vedi cosa deve governare: non &#34;un utente che accede a un&#39;app&#34;, ma
&lt;em&gt;qualunque principal — persona, server, funzione, pipeline, servizio di un altro account — che chiama
una qualunque delle migliaia di API del provider su una qualunque delle tue risorse, da ovunque nel
mondo&lt;/em&gt;. &#34;Utente e password con dei permessi&#34; basta per un&#39;applicazione singola; non basta per un
sistema dove il chiamante è spesso una macchina, le risorse sono centinaia, e concedere un permesso di
troppo a un&#39;identità sbagliata espone dati a Internet. La complessità dell&#39;IAM non è gratuita: ogni
pezzo risolve un problema reale. I &lt;em&gt;ruoli&lt;/em&gt; esistono per eliminare le chiavi statiche, che sono la
causa principale di credenziali rubate. Le &lt;em&gt;condizioni&lt;/em&gt; (da quale IP, con quale MFA, verso quale
rete) esistono per restringere un permesso al contesto legittimo. Il &lt;em&gt;deny esplicito&lt;/em&gt; e i
guardrail d&#39;organizzazione esistono per porre limiti invalicabili che nemmeno un amministratore distratto
può allargare. Il &lt;em&gt;privilegio minimo&lt;/em&gt;, che vedremo nel prossimo capitolo, ha bisogno di questa
granularità per essere esprimibile. La vera scelta non è &#34;IAM semplice o complesso&#34;, ma &#34;controllo
granulare di chi-può-cosa, oppure permessi grossolani che per comodità finiscono sempre troppo larghi&#34;.
Nel cloud, dove un permesso troppo largo significa dati esposti, la granularità è il prezzo della
sicurezza — e, con buone pratiche (gruppi, ruoli, policy riusabili), si gestisce senza impazzire.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;L&amp;rsquo;IAM è il perimetro del cloud: valuta ogni richiesta come principal-azione-risorsa contro le policy,
partendo da tutto negato, con il deny esplicito che vince sempre. Utenti, gruppi e soprattutto ruoli
assumibili ne sono i mattoni. Avere questo modello chiaro è la premessa per la regola che rende l&amp;rsquo;IAM
davvero sicuro — concedere il meno possibile: il &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/principio-minimo-privilegio/&#34; &gt;principio del privilegio
minimo&lt;/a&gt;, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
