<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Logging on My personal blog</title>
        <link>https://www.matteobianchi.eu/tags/logging/</link>
        <description>Recent content in Logging on My personal blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 01 Sep 2026 09:00:00 +0200</lastBuildDate><atom:link href="https://www.matteobianchi.eu/tags/logging/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Logging e detection per DevSecOps</title>
        <link>https://www.matteobianchi.eu/p/logging-detection-pipeline/</link>
        <pubDate>Tue, 01 Sep 2026 09:00:00 +0200</pubDate>
        
        <guid>https://www.matteobianchi.eu/p/logging-detection-pipeline/</guid>
        <description>&lt;img src="https://www.matteobianchi.eu/p/logging-detection-pipeline/cover.png" alt="Featured image of post Logging e detection per DevSecOps" /&gt;&lt;h2 id=&#34;perché-conta&#34;&gt;Perché conta
&lt;/h2&gt;&lt;p&gt;Il &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/vulnerability-management-triage/&#34; &gt;vulnerability management&lt;/a&gt; ordina ciò che
sappiamo; la &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/runtime-security-falco/&#34; &gt;runtime security&lt;/a&gt; rileva comportamenti
anomali. Ma entrambi dipendono dal &lt;em&gt;vedere&lt;/em&gt;. Senza log, un attacco riuscito è invisibile: non sai che
è successo, non sai cosa è stato toccato, non puoi rispondere. Il logging è la memoria del sistema, e
la detection è ciò che la rende utile. Estende il tema del &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/siem-log-correlation/&#34; &gt;SIEM e della correlazione dei
log&lt;/a&gt; al mondo DevSecOps: pipeline, cluster, runtime.&lt;/p&gt;
&lt;h2 id=&#34;quali-segnali-dove&#34;&gt;Quali segnali, dove
&lt;/h2&gt;&lt;pre class=&#34;mermaid&#34;&gt;
  flowchart TD
    PIPE[Pipeline CI/CD:&amp;lt;br/&amp;gt;chi ha deployato cosa,&amp;lt;br/&amp;gt;accesso ai segreti] --&amp;gt; AGG[Aggregazione&amp;lt;br/&amp;gt;centrale]
    K8S[Audit log K8s:&amp;lt;br/&amp;gt;chiamate all&amp;#39;API,&amp;lt;br/&amp;gt;exec nei pod, RBAC] --&amp;gt; AGG
    RUN[Runtime / Falco:&amp;lt;br/&amp;gt;processi, rete, file] --&amp;gt; AGG
    APP[App:&amp;lt;br/&amp;gt;auth, errori,&amp;lt;br/&amp;gt;accessi ai dati] --&amp;gt; AGG
    AGG --&amp;gt; DET[Detection&amp;lt;br/&amp;gt;+ correlazione]
    DET --&amp;gt; ALERT[Allerte azionabili]
    style DET fill:#fde2e4,stroke:#e63946
&lt;/pre&gt;

&lt;p&gt;I quattro flussi che contano in DevSecOps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Audit log di Kubernetes&lt;/strong&gt;: ogni chiamata all&amp;rsquo;API — chi ha creato cosa, chi ha letto quali
secret, chi ha fatto &lt;code&gt;exec&lt;/code&gt; in un pod. È la fonte primaria per investigare una compromissione del
cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log della pipeline&lt;/strong&gt;: chi ha innescato quale deploy, chi ha acceduto a quali segreti, quali
eccezioni ai gate sono state usate. La pipeline è un bersaglio: va osservata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eventi di runtime&lt;/strong&gt; (Falco/eBPF): i comportamenti anomali dei container.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Log applicativi&lt;/strong&gt;: autenticazioni, errori, accessi ai dati sensibili.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;a-prova-di-manomissione&#34;&gt;A prova di manomissione
&lt;/h2&gt;&lt;p&gt;Un attaccante esperto, dopo essere entrato, cancella le proprie tracce. Se i log vivono dove gira il
carico, può alterarli. Perciò i log di sicurezza vanno &lt;strong&gt;spediti fuori&lt;/strong&gt; verso un deposito append-only
e ad accesso ristretto, a cui il carico compromesso non può scrivere né cancellare. È il principio di
non-ripudio dello STRIDE: i log servono proprio quando qualcuno vuole poter dire &amp;ldquo;non sono stato io&amp;rdquo;.&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;/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;Log sul nodo compromesso        → l&amp;#39;attaccante li cancella → cieco
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line hl&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Log spediti a store append-only → immutabili → hai la timeline dell&amp;#39;attacco
&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;h2 id=&#34;dal-data-lake-alla-detection&#34;&gt;Dal data lake alla detection
&lt;/h2&gt;&lt;p&gt;Raccogliere tutto e non guardarlo è il fallimento più comune: un data lake costoso che serve solo
dopo, per l&amp;rsquo;autopsia. Il valore sta nella &lt;strong&gt;detection&lt;/strong&gt;: regole che trasformano i log in allerte
&lt;em&gt;mentre&lt;/em&gt; l&amp;rsquo;attacco accade.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Basata su regole&lt;/strong&gt;: pattern di tecniche note, idealmente mappati su &lt;strong&gt;MITRE ATT&amp;amp;CK&lt;/strong&gt; (&amp;ldquo;accesso a
un secret seguito da connessione in uscita insolita&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Basata su anomalie&lt;/strong&gt;: deviazioni dal comportamento normale appreso.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlazione&lt;/strong&gt;: unire segnali deboli di fonti diverse in un segnale forte — un fallimento di auth
&lt;em&gt;più&lt;/em&gt; un exec nel pod &lt;em&gt;più&lt;/em&gt; una connessione a un IP sconosciuto raccontano una storia che ogni
singolo evento non racconta.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;meno-rumore-più-segnale&#34;&gt;Meno rumore, più segnale
&lt;/h2&gt;&lt;p&gt;Vale qui la legge della &lt;a class=&#34;link&#34; href=&#34;https://www.matteobianchi.eu/p/runtime-security-falco/&#34; &gt;runtime security&lt;/a&gt;: le allerte
inutili addestrano il team a ignorarle. Una detection va &lt;em&gt;tarata&lt;/em&gt; — soppressione del noto, soglie
sensate, arricchimento con il contesto (quale servizio, quale ambiente, quale owner) — così ogni
allerta che arriva merita di essere guardata. Una detection ignorata è peggio di nessuna, perché dà
l&amp;rsquo;illusione di vedere.&lt;/p&gt;


&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Domanda:&lt;/strong&gt; con l&#39;observability che già abbiamo per il debugging (metriche, log, tracce), perché serve un flusso di logging separato &#34;di sicurezza&#34;? Non sono gli stessi dati?&lt;/summary&gt;
&lt;p&gt;Si sovrappongono in parte, ma hanno requisiti così diversi su tre assi che trattarli come un flusso
solo compromette entrambi gli scopi. Primo asse, l&#39;integrità e la fiducia. L&#39;observability per il
debugging è ottimizzata per comodità e costo: i log vivono vicino ai carichi, sono scrivibili, spesso con
ritenzione breve e accesso ampio perché servono agli sviluppatori per lavorare. I log di sicurezza hanno
il requisito opposto: devono essere a prova di manomissione, perché il loro utente avversario è proprio
chi ha compromesso il sistema e vuole cancellare le tracce. Un log di debug che l&#39;attaccante può alterare
è inutile come prova; un log di sicurezza deve vivere in uno store append-only che il carico compromesso
non può toccare. Secondo asse, il contenuto. L&#39;observability cattura ciò che serve a capire &lt;em&gt;perché il
sistema è lento o rotto&lt;/em&gt;: latenze, code, stack trace. La detection ha bisogno di eventi che il
debugging spesso non raccoglie affatto — chi ha letto quale secret, chi ha fatto exec in quale pod, quali
RBAC sono cambiati, quali eccezioni ai gate sono state usate — e che vanno registrati anche quando tutto
&#34;funziona&#34;, perché un attacco riuscito spesso non rompe nulla. Terzo asse, la ritenzione e la conformità.
Un incidente si scopre in media mesi dopo: i log di sicurezza devono sopravvivere molto più a lungo dei
log operativi, spesso per obblighi normativi, con garanzie di conservazione che l&#39;observability non ha.
Detto questo, non significa costruire due infrastrutture che si ignorano: i dati di observability sono
una &lt;em&gt;fonte&lt;/em&gt; preziosa per la detection (un picco anomalo di errori può essere un attacco), e molte
piattaforme uniscono i pipe di raccolta. Il punto è che i log di sicurezza aggiungono requisiti —
immutabilità, eventi di audit specifici, ritenzione lunga, accesso ristretto — che l&#39;observability da
sola non soddisfa. Puoi condividere la raccolta, non puoi condividere le garanzie: un data lake di debug
riusato come fonte di prova forense ti lascia scoperto esattamente quando l&#39;attaccante ha fatto il suo
lavoro.&lt;/p&gt;
&lt;/details&gt;


&lt;h2 id=&#34;conclusione&#34;&gt;Conclusione
&lt;/h2&gt;&lt;p&gt;Non puoi rispondere a ciò che non vedi: audit log del cluster, log della pipeline, eventi di runtime e
log applicativi, spediti fuori in uno store a prova di manomissione, trasformati in detection
correlate e tarate contro il rumore. Il logging è la memoria, la detection è l&amp;rsquo;allarme. Ma un allarme
senza una procedura di risposta è solo un suono nel vuoto. Cosa fare &lt;em&gt;quando&lt;/em&gt; la detection scatta è la
risposta agli incidenti, prossimo capitolo.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
