<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Identità on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/identit%C3%A0/</link>
        <description>Recent content in Identità on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 30 Jun 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/identit%C3%A0/index.xml" rel="self" type="application/rss+xml" /><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>
