<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Storage on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/storage/</link>
        <description>Recent content in Storage on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 04 Aug 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/storage/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Sicurezza dello storage a oggetti</title>
        <link>https://www.matteobianchi.eu/p/sicurezza-storage-oggetti/</link>
        <pubDate>Tue, 04 Aug 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/sicurezza-storage-oggetti/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/sicurezza-storage-oggetti/cover.png" alt="Featured image of post Sicurezza dello storage a oggetti" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Se c&amp;rsquo;è un&amp;rsquo;immagine simbolo degli incidenti cloud, è il &lt;strong&gt;bucket pubblico per sbaglio&lt;/strong&gt;: milioni di
record di clienti, backup di database, documenti interni, tutti raggiungibili da chiunque conosca (o
indovini) l&amp;rsquo;URL. Lo storage a oggetti è il servizio cloud più usato e più semplice — e proprio la sua
semplicità lo rende facile da esporre. Un singolo flag sbagliato, una policy copiata male, e dati
privati diventano pubblici senza alcun avviso.&lt;/p&gt;
&lt;h2 id=&#34;il-controllo-daccesso-a-strati&#34;&gt;Il controllo d&amp;rsquo;accesso a strati
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart TD
    REQ[Richiesta a un oggetto] --&amp;gt; BPA{Blocco accesso&amp;lt;br/&amp;gt;pubblico attivo?}
    BPA --&amp;gt;|sì| DENY[Negato se l&amp;#39;accesso&amp;lt;br/&amp;gt;sarebbe pubblico]
    BPA --&amp;gt;|no| POL{Policy del bucket&amp;lt;br/&amp;gt;+ ACL + IAM}
    POL --&amp;gt;|consente| OK[Accesso]
    POL --&amp;gt;|nega| DENY
    style BPA fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;L&amp;rsquo;accesso a un oggetto è deciso dalla combinazione di più livelli: le &lt;strong&gt;policy IAM&lt;/strong&gt; del richiedente,
le &lt;strong&gt;policy del bucket&lt;/strong&gt;, le vecchie &lt;strong&gt;ACL&lt;/strong&gt; per-oggetto, e — sopra tutto — il &lt;strong&gt;blocco dell&amp;rsquo;accesso
pubblico&lt;/strong&gt;. Quest&amp;rsquo;ultimo è un interruttore a monte che &lt;em&gt;impedisce&lt;/em&gt; qualsiasi configurazione di rendere
pubblico il bucket, anche se una policy o un&amp;rsquo;ACL provasse a farlo. Va attivato &lt;strong&gt;a livello di account&lt;/strong&gt;,
così nessun nuovo bucket possa sfuggire.&lt;/p&gt;
&lt;h2 id=&#34;le-regole-che-evitano-il-95-dei-disastri&#34;&gt;Le regole che evitano il 95% dei disastri
&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;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&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 hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;1. Blocco accesso pubblico ATTIVO a livello di account (default per tutto)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2. Niente ACL: disabilitale, usa solo policy (più chiare e verificabili)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;3. Cifratura a riposo forzata (anche via policy che rifiuta upload non cifrati)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;4. Versionamento + MFA delete sui bucket critici (anti-ransomware, anti-errore)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;5. Accesso solo via endpoint privati dove possibile, non via Internet
&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 punto 1 da solo elimina quasi tutti i breach da bucket pubblico. Il punto 4 protegge da
cancellazioni accidentali e da ransomware che cifra o elimina i dati: con il versionamento, le versioni
precedenti restano recuperabili.&lt;/p&gt;
&lt;h2 id=&#34;accessi-temporanei-invece-di-permessi-pubblici&#34;&gt;Accessi temporanei invece di permessi pubblici
&lt;/h2&gt;&lt;p&gt;Spesso un bucket viene reso pubblico &amp;ldquo;perché serve condividere un file&amp;rdquo;. Non serve: esistono le &lt;strong&gt;URL
firmate (presigned URL)&lt;/strong&gt;, link temporanei che concedono accesso a &lt;em&gt;un&lt;/em&gt; oggetto per &lt;em&gt;un tempo limitato&lt;/em&gt;,
senza aprire nulla al mondo. È il modo corretto di far scaricare un file a un utente esterno senza
esporre il bucket.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; i provider ormai fanno i bucket privati di default e avvisano se qualcosa è pubblico. Il problema del bucket pubblico non è ormai risolto, rendendo superflue tutte queste precauzioni?&lt;/summary&gt;
&lt;p&gt;È molto meno frequente di prima, ma &#34;risolto&#34; è un&#39;illusione pericolosa, perché i default proteggono
solo lo scenario più ovvio e lasciano scoperti tutti gli altri che causano i breach di oggi. Il private
di default protegge il bucket &lt;em&gt;nuovo creato senza pensarci&lt;/em&gt; — ma non protegge dai casi reali:
qualcuno che &lt;em&gt;deliberatamente&lt;/em&gt; rende pubblico un bucket &#34;per far funzionare una cosa&#34; e poi
dimentica; una policy del bucket scritta larga che concede accesso a &#34;tutti gli utenti autenticati del
cloud&#34; (che non significa i tuoi utenti, significa &lt;em&gt;chiunque&lt;/em&gt; abbia un account su quel cloud —
un classico frainteso); un accesso cross-account configurato male; dati sensibili messi in un bucket
pensato per contenuti pubblici; o il blocco accesso pubblico disattivato a livello di account da chi
voleva pubblicare un sito statico e ha abbassato la guardia per tutti. Inoltre gli avvisi del provider
dipendono dal fatto che qualcuno li legga e li capisca: in un&#39;organizzazione con centinaia di bucket,
l&#39;avviso si perde nel rumore. Le precauzioni che restano indispensabili sono proprio quelle che i default
non coprono: il blocco a livello di &lt;em&gt;account&lt;/em&gt; (così nessuno possa rendere pubblico un singolo
bucket nemmeno volendo, senza un&#39;azione esplicita e tracciata), la disabilitazione delle ACL, le policy
scritte strette e verificate con gli strumenti di analisi, e le URL firmate al posto dell&#39;accesso
pubblico quando serve condividere. Il default è il pavimento, non il soffitto: alza il soffitto tu.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Lo storage a oggetti è potente e insidioso: il blocco dell&amp;rsquo;accesso pubblico a livello di account,
l&amp;rsquo;abbandono delle ACL, la cifratura forzata, il versionamento e le URL firmate eliminano quasi tutti i
disastri. Finora abbiamo protetto identità e dati; ora il discorso si sposta sulla rete, che nel cloud
si disegna da zero. È il prossimo capitolo, &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/rete-virtuale-vpc/&#34; &gt;la rete virtuale: VPC e
subnet&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
