Agents IA & Automation

Proteggere gli agenti IA in produzione: identità e controllo degli accessi

14 min di lettura

Guida per proteggere gli agenti IA: gestione dell'identità, controllo degli accessi granulare, secrets management. Pratiche 2026 con Claude e MCP.

Sviluppatore che protegge un agente IA tramite una dashboard di controllo

I primi assistenti IA distribuiti in azienda avevano un ruolo relativamente passivo. Rispondevano a domande, riassumevano documenti o generavano contenuti. Il loro impatto si limitava alla produzione di informazioni.

Le architetture agentic cambiano completamente questa logica.

Oggi, un agente può aprire un ticket Jira, modificare un CRM, avviare un workflow CI/CD, inviare un'email, attivare un rimborso Stripe o concatenare diversi call API in modo autonomo.

Dal momento in cui un agente agisce su sistemi reali, una domanda diventa imprescindibile:

Chi agisce realmente?

Non è una questione di fornitore del modello, di framework o di protocollo. È una questione di architettura.


Una nuova categoria di identità

Per anni, le architetture di sicurezza si sono basate su due categorie di identità:

  • gli utenti umani;
  • le identità tecniche (applicazioni, servizi, microservizi).

Gli agenti IA non appartengono completamente a nessuna di queste categorie.

Ragionano, scelgono gli strumenti, adattano le loro azioni al contesto ed eseguono talvolta decine di operazioni successive.

Costituiscono una nuova categoria di identità che in questo articolo chiameremo identità agentic.

Definizione

Un'identità agentic è l'insieme delle informazioni che consentono di identificare un agente, di determinare per conto di chi agisce, di conoscere i limiti della sua autonomia e di ricostruire ciascuna delle sue decisioni.

Questa definizione servirà come filo conduttore per il resto dell'articolo.


Una chiave API non è un'identità

Le prime implementazioni di agenti seguono spesso questa architettura.

Applicazione
      │
      ▼
 Chiave API LLM
      │
      ▼
   Agente IA

Questa rappresentazione è conveniente.

È anche fuorviante.

La chiave API identifica la vostra applicazione presso il fornitore del modello.

Non identifica l'agente che agisce nel vostro sistema informativo.

Due agenti possono condividere la stessa chiave API mentre hanno responsabilità completamente diverse.

L'identità dell'agente appartiene quindi alla vostra architettura, non al fornitore del modello.


Il modello non realizza mai direttamente un'azione

Si sente spesso dire:

"Claude ha eliminato un ordine."

oppure

"GPT ha creato un rimborso."

In realtà, un modello linguistico emette solo una proposta.

La vostra infrastruttura decide poi:

  • se questa azione è autorizzata;
  • con quali permessi;
  • per quale utente;
  • su quali risorse.
Utente
      │
      ▼
Applicazione
      │
      ▼
Agent Runtime
      │
propone un'azione
      ▼
Policy Engine
      │
      ▼
Strumento business
      │
      ▼
Sistema di destinazione

Questa separazione tra ragionamento ed esecuzione costituisce uno dei principi fondamentali delle architetture agentic moderne.


La vera questione è la responsabilità

Un'azienda deve essere in grado di rispondere, settimane dopo un incidente:

  • Quale agente ha agito?
  • Per quale utente?
  • In quale tenant?
  • Quale politica ha autorizzato questa operazione?
  • Quale strumento è stato invocato?

Un log che indica solo:

"Il modello ha chiamato updateCustomer()"

fornisce praticamente nessun valore.

Un'architettura moderna deve consentire di ricostruire l'intera catena di decisione.


Un'identità è sempre contestuale

Lo stesso agente può operare:

  • per più utenti;
  • in più organizzazioni;
  • su più ambienti;
  • con permessi diversi a seconda dell'attività.

La sua identità non si riduce mai a un semplice identificatore.

Agente
 ├ identità
 ├ utente rappresentato
 ├ tenant
 ├ ambiente
 ├ sessione
 └ permessi temporanei

Il contesto fa parte integrante dell'identità.


Le architetture storiche non affrontano questa problematica

OAuth, OpenID Connect, Kubernetes Service Accounts o le identità dei workload rispondono principalmente a una domanda:

Quale componente richiede l'accesso a una risorsa?

Gli agenti IA aggiungono una dimensione supplementare:

Perché questa azione viene eseguita, per conto di chi e entro quali limiti?

È questa differenza che giustifica un nuovo livello di governance.


Prima di parlare di JWT o rbac

La maggior parte degli articoli inizia subito con le tecnologie:

  • JWT;
  • OAuth;
  • RBAC;
  • Vault;
  • rotazione dei segreti.

Tutte sono importanti.

Ma arrivano troppo presto.

Prima di scegliere una tecnologia, bisogna definire cos'è l'identità di un agente e quali informazioni deve portare.

Questo è precisamente l'obiettivo del capitolo successivo, che introduce un Agent Identity Reference Model indipendente dai fornitori, dai framework e dai modelli linguistici.

Da ricordare

I modelli evolveranno.

I framework cambieranno.

I protocolli appariranno e poi scompariranno.

D'altro canto, ogni architettura agentic dovrà sempre rispondere alla stessa domanda:

Chi agisce realmente, per conto di chi, con quali permessi e sotto quale controllo?

Definizione

Un Agent Identity Reference Model è un modello concettuale che descrive le informazioni minime che una piattaforma deve conoscere per identificare un agente, determinare in nome di chi agisce, decidere quali azioni può realizzare e assicurare la tracciabilità completa della sua attività.

Una volta che si considera un agente come una vera identità software, una nuova domanda appare immediatamente:

Di quali informazioni ha veramente bisogno una piattaforma per autorizzare un agente ad agire?

La maggior parte delle implementazioni risponde con un elenco di meccanismi tecnici: un JWT, una chiave API, alcuni permessi e talvolta un ruolo RBAC.

In realtà, questi meccanismi esprimono solo una parte dell'identità. Affinché un agente possa agire in modo sicuro, è necessario rispondere a diverse domande indipendenti.

Panoramica

LivelloDomandaEsempi di tecnologie
IdentityChi è questo agente?UUID, SPIFFE ID
AuthenticationPuò provare la sua identità?JWT, OAuth 2.0, mTLS
DelegationPer conto di chi agisce?OAuth, OIDC
AuthorizationCosa può fare?RBAC, ABAC, Cedar, OPA
SecretsCome accede alle risorse?Vault, AWS Secrets Manager
ObservabilitySi può spiegare ogni decisione?OpenTelemetry
RevocationSi può fermarlo immediatamente?Token revocation

I livelli sono indipendenti

Un errore frequente consiste nel mescolare diverse responsabilità.

Un JWT non decide i permessi. Un motore di politiche non prova l'identità. Un gestore di segreti non autorizza alcuna azione.

Ogni livello risponde a una responsabilità unica. Questa separazione consente di sostituire una tecnologia senza mettere in discussione l'architettura globale.

Schema del modello

                         Identity
                              │
            ┌─────────────────┴─────────────────┐
            │                                   │
    Authentication                    Delegation
            │                                   │
            └─────────────────┬─────────────────┘
                              ▼
                      Authorization
                              │
             ┌────────────────┴────────────────┐
             │                                 │
         Secret Access                 Observability
             │                                 │
             └────────────────┬────────────────┘
                              ▼
                         Revocation

Identity non è authentication

Questi due concetti sono spesso confusi.

L'identità descrive chi è l'agente.

L'autenticazione verifica che sia realmente chi dice di essere.

Essere autenticati non significa mai essere autorizzati.

I sei livelli

1. Identity

Ogni agente possiede un identificatore stabile, una versione, un proprietario e un ambiente di esecuzione.

agente:
  id: support-agent
  version: 2.3.1
  owner: customer-support
  environment: production

2. Authentication

L'autenticazione consente di provare questa identità mediante un JWT, OAuth, mTLS o un'identità di workload.

3. Delegation

Un agente agisce raramente per proprio conto. Agisce per un utente, un tenant o un processo di business.

4. Authorization

Le autorizzazioni moderne si basano sempre più su motori di politiche.

I principali modelli sono:

  • RBAC
  • ABAC
  • PBAC
  • ReBAC

Le architetture agentic generalmente privilegiano PBAC, capace di valutare il contesto di esecuzione.

Esempio Node.js:

const decision = await policyEngine.evaluate({
  identity,
  tool: "refundOrder",
  amount: 75,
  tenant: "acme",
});

if (!decision.allow) {
  throw new ForbiddenError(decision.reason);
}

await refundOrder();

5. Secrets

Il modello non manipola mai direttamente i segreti.

Esprime un'intenzione; l'applicazione recupera i segreti presso un gestore dedicato.

6. Observability

Ogni decisione deve essere tracciabile: identità, utente rappresentato, politica applicata, risultato e durata dell'esecuzione.

7. Revocation

Qualsiasi identità deve poter essere disabilitata immediatamente per prevenire qualsiasi nuova azione.

Da ricordare

I modelli cambiano.

I framework evolvono.

I protocolli appaiono e poi scompaiono.

D'altro canto, un'architettura dovrà sempre rispondere alle stesse domande:

  • Chi agisce?
  • Per conto di chi?
  • Cosa può fare?
  • Come si proteggono le risorse?
  • Come si spiegano le decisioni?
  • Come si ferma immediatamente questo agente?

Finché queste domande trovano una risposta, la vostra architettura rimane valida indipendentemente dal fornitore del modello o dal framework utilizzato.

L'Agent Identity Reference Model presentato nel capitolo precedente è volontariamente indipendente dalle tecnologie.

Risponde a una domanda di architettura:

Quali informazioni è necessario gestire per proteggere un agente?

Questo capitolo risponde a un'altra domanda:

Come implementare concretamente questo modello in un'applicazione moderna?

La buona notizia è che non è necessario inventare un nuovo stack di sicurezza. La maggior parte delle aziende possiede già i mattoni necessari.

Un'architettura di riferimento

                  Utente
                        │
                        ▼
              Identity Provider
                        │
                        ▼
             Applicazione business
                        │
                        ▼
                 Agent Runtime
        ┌───────────────┼────────────────┐
        ▼               ▼                ▼
 Policy Engine    Secret Manager    Observability
        │
        ▼
    Tool Gateway
        │
   ┌────┼───────────────┐
   ▼    ▼               ▼
 CRM PostgreSQL      Stripe

Il modello linguistico non è volontariamente il centro dello schema.

Produce proposte.

Il runtime applica le politiche di sicurezza.

Il runtime diventa il punto di controllo

Ogni chiamata di strumento deve essere trattata come una decisione di sicurezza.

Prima di eseguire un'azione, il runtime deve rispondere a diverse domande:

  • Chi è l'agente?
  • Per quale utente agisce?
  • Quale tenant è interessato?
  • Questa azione è autorizzata?
  • I limiti di sicurezza sono rispettati?

In altre parole, il runtime diventa un Policy Enforcement Point (PEP).

Un middleware node.js piuttosto che logica dispersa

Una buona pratica consiste nel centralizzare i controlli.

export async function authorizeTool(ctx, toolName) {

  const decision = await policyEngine.evaluate({
    identity: ctx.identity,
    tool: toolName,
    tenant: ctx.tenant,
    delegatedUser: ctx.user.id
  });

  if (!decision.allow) {
    throw new ForbiddenError(decision.reason);
  }

  return decision;
}

Poi ogni strumento utilizza questo middleware.

server.registerTool({
  name: "refundOrder",

  async execute(args, ctx) {

    await authorizeTool(ctx, "refundOrder");

    return refundService.execute(args);
  }
});

In questo modo, le regole di sicurezza restano indipendenti dal modello e dal prompt.

Un JWT trasporta un'identità, non decide nulla

Un JWT può contenere informazioni utili:

{
  "agent":"support-agent",
  "tenant":"acme",
  "delegatedUser":"user-482",
  "scope":["orders.read","orders.update"]
}

Ma un JWT non risponde mai alla domanda:

Questa operazione è autorizzata adesso?

Questa decisione appartiene sempre al motore di politiche.

I permessi sono valutati ad ogni azione

In un'architettura agentic, i permessi non sono fissi al momento del login.

Ogni chiamata di strumento costituisce una nuova decisione.

Ad esempio, un rimborso può dipendere da:

  • l'importo;
  • il tenant;
  • il ruolo dell'utente rappresentato;
  • l'ambiente;
  • la politica di rischio.

Il runtime deve quindi interrogare un motore di politiche prima di ogni operazione sensibile.

Gli strumenti rappresentano capacità di business

Evitate di esporre primitive tecniche direttamente.

Da evitare:

executeSQL()
executeShell()
deleteCustomer()

Preferite strumenti che esprimono un'intenzione di business.

findCustomer()
refundOrder()
updateShippingAddress()
generateInvoice()

Questo approccio riduce notevolmente la superficie di attacco e semplifica le politiche di autorizzazione.

I segreti non escono mai dall'infrastruttura

Il modello non dovrebbe mai ricevere una chiave Stripe, una password PostgreSQL o un token AWS.

Il runtime recupera questi segreti presso un gestore dedicato.

import Stripe from "stripe";

const stripe = new Stripe(
  await secretManager.get("stripe-API-key")
);

Il modello esprime un'intenzione.

L'applicazione realizza la chiamata tecnica.

MCP non sostituisce i controlli

Il Model Context Protocol (MCP) standardizza la scoperta e l'invocazione degli strumenti.

Non decide mai se uno strumento può essere utilizzato.

Anche se un server MCP espone:

deleteAllCustomers()

la decisione finale appartiene sempre a:

  • il runtime;
  • il motore di politiche;
  • la vostra architettura.

MCP descrive le capacità.

La vostra piattaforma decide quali sono realmente accessibili.

Build o buy?

Non tutti i team hanno le stesse esigenze.

Dimensione del progettoRaccomandazione
PrototipoRegole codificate nel runtime
Pochi agentiRBAC semplice
Multi-tenantPolicy Engine
Organizzazione regolamentataCedar, OPA o soluzione equivalente

Il passaggio a un motore di politiche si giustifica quando le regole diventano numerose, dinamiche o condivise tra più agenti.

Un'architettura durevole

Uno dei principali vantaggi di questo approccio è la sua indipendenza dai fornitori.

Potete sostituire:

  • Claude con GPT;
  • GPT con Gemini;
  • LangGraph con CrewAI;
  • MCP con un altro protocollo.

L'architettura di sicurezza rimane invariata.

Il vostro runtime, le vostre politiche, i vostri segreti e i vostri log di audit appartengono al vostro sistema informativo.

Costituiscono il vero strato di fiducia della vostra piattaforma.

Da ricordare

Il modello linguistico non è mai l'autorità di sicurezza.

Propone azioni.

La vostra infrastruttura decide se possono essere eseguite.

A questo punto, un'architettura moderna dispone di:

  • un'identità per ogni agente;
  • un meccanismo di autenticazione;
  • un motore di politiche;
  • una gestione centralizzata dei segreti.

Questi componenti sono necessari, ma non sono sufficienti.

Un'architettura è realmente sicura solo se può essere verificata, spiegata e fermata in qualsiasi momento.

L'audit non è più un semplice file di log

In un sistema agentic, non basta più registrare che un endpoint è stato chiamato.

Ogni decisione importante dovrebbe produrre un evento che traccia:

  • l'identità dell'agente;
  • l'utente rappresentato;
  • il tenant;
  • lo strumento richiesto;
  • la politica applicata;
  • la decisione (ALLOW o DENY);
  • il risultato dell'esecuzione.

Esempio:

{
  "timestamp": "2026-07-17T10:48:31Z",
  "agent": "support-agent",
  "delegatedUser": "user-482",
  "tenant": "acme",
  "tool": "refundOrder",
  "decision": "ALLOW",
  "policy": "refund-policy-v3",
  "durationMs": 91
}

Questi eventi permettono di ricostruire una decisione settimane dopo la sua esecuzione.

Gli anti-pattern più frequenti

1. Una chiave API condivisa

Tutti gli agenti utilizzano la stessa identità.

Conseguenza: impossibile sapere quale sia responsabile.

2. I segreti trasmessi al modello

Una chiave Stripe o una password SQL non dovrebbero mai apparire nel contesto inviato all'LLM.

3. Permessi definiti nel prompt

Un prompt non costituisce un meccanismo di sicurezza.

Le regole di autorizzazione devono essere implementate lato infrastruttura.

4. Strumenti troppo generici

Evitate:

executeSQL()
executeShell()

Preferite:

createInvoice()
updateShippingAddress()

Gli strumenti devono rappresentare intenzioni di business.

Una checklist di audit

Prima della messa in produzione, verificate in particolare:

  • Ogni agente possiede un'identità univoca?
  • Gli utenti rappresentati sono identificati?
  • Le autorizzazioni sono valutate prima di ogni chiamata di strumento?
  • I segreti sono archiviati in un Secret Manager?
  • Ogni decisione è registrata in un log?
  • Un agente può essere revocato immediatamente?
  • Gli strumenti espongono capacità di business piuttosto che primitive tecniche?

Se una risposta è negativa, l'architettura merita probabilmente di essere rivista.

Zero trust applicato agli agenti

I principi di Zero Trust rimangono perfettamente adatti alle architetture agentic.

Ogni richiesta deve essere:

  • autenticata;
  • autorizzata;
  • tracciata;
  • limitata al necessario.

Nessun agente dovrebbe essere considerato implicitamente affidabile.

Domande frequenti

È necessario un JWT per agente?

Non necessariamente.

L'importante è che ogni esecuzione disponga di un'identità autenticabile e contestualizzata.

Rbac è sufficiente?

Per un prototipo, spesso sì.

Per più agenti, più tenant o regole dinamiche, un motore di politiche diventa rapidamente preferibile.

MCP protegge gli strumenti?

No.

MCP descrive gli strumenti disponibili.

I controlli di accesso rimangono a carico della vostra piattaforma.

Il modello deve conoscere i segreti?

Mai.

Il modello formula un'intenzione.

Il runtime realizza le chiamate tecniche con le proprie identità.

Conclusione

Per molto tempo, la sicurezza delle applicazioni si è organizzata intorno agli utenti e ai servizi.

Le architetture agentic introducono una terza categoria di identità: l'agente autonomo.

Questa evoluzione impone di ripensare diversi fondamenti:

  • l'identità;
  • la delega;
  • l'autorizzazione;
  • la gestione dei segreti;
  • l'osservabilità;
  • la revoca.

Le tecnologie continueranno a evolversi.

I modelli linguistici verranno sostituiti.

I framework cambieranno.

D'altro canto, le domande fondamentali rimangono le stesse:

  • Chi agisce?
  • Per conto di chi?
  • Con quali permessi?
  • Come spiegare ogni decisione?
  • Come interrompere immediatamente un agente?

Le organizzazioni in grado di rispondere avranno un'architettura durevole, indipendente dai fornitori di modelli e sufficientemente robusta per far evolvere i loro sistemi agentic nel tempo.

Équipe Fullstack
Seguici su LinkedIn →

Parliamo del tuo progetto

Hai un progetto in cantiere, un'idea audace?
Incontriamoci e parliamone.

Contattaci