Differenze fondamentali tra sviluppo a basso codice e sviluppo tradizionale

Le piattaforme di basso codice consentono di creare agenti tramite interfacce visuali e connettori predefiniti che collegano i servizi aziendali. In questo contesto, la logica dell’agente è costruita trascinando blocchi e configurando impostazioni, senza scrivere codice sorgente.

Al contrario, lo sviluppo tradizionale prevede che programmatori esperti definiscano il comportamento degli agenti mediante codice personalizzato, integrazioni di strumenti e ambienti di esecuzione specifici. Questo approccio offre maggiore flessibilità, ma richiede una gestione più approfondita di sicurezza, permessi di file e credenziali.

In entrambi i casi è necessario monitorare le informazioni a cui gli agenti possono accedere e le azioni che possono compiere. Tuttavia, le responsabilità di sicurezza variano perché il controllo avviene da punti diversi: chi usa il low‑code gestisce le impostazioni della piattaforma e dei connettori, mentre i team di sviluppo tradizionale sono responsabili del software, dell’ambiente di runtime e dei limiti di accesso.

Quadro di riferimento della CISA

L’agenzia Cybersecurity and Infrastructure Security Agency (CISA) ha individuato quattro categorie di rischio per l’IA agente, utili a entrambi gli approcci:

    • Superficie di attacco ampliata: nuovi punti di ingresso derivanti da connettori o API.
    • Accumulo di privilegi: permessi che si sommano progressivamente nel tempo.
    • Disallineamento del comportamento: deviazioni rispetto alle attività previste.
    • Registri di eventi poco chiari: difficoltà nell’effettuare indagini forensi.

Un connettore di uso generale o uno strumento da riga di comando senza restrizioni può generare varianti di questi problemi.

Rischi e contromisure per gli agenti a basso codice

La facilità d’uso delle piattaforme low‑code rende la creazione di agenti accessibile anche a dipendenti non appartenenti ai team di sviluppo tradizionali. Di conseguenza, la supervisione della sicurezza deve includere anche questi “cittadini‑sviluppatori”.

Limiti di sicurezza tipici del low‑code

    • Connessioni a file condivisi o applicazioni aziendali senza una piena comprensione dei permessi.
    • Possibile esposizione di dati sensibili o esecuzione di azioni non previste.
    • Condivisione eccessiva di connettori senza chiara attribuzione di responsabilità.

Secondo un’analisi di mercato del 2024 di Forrester, 87 % dei sviluppatori aziendali utilizza piattaforme low‑code per qualche attività di sviluppo, evidenziando la diffusione di questi strumenti, anche se il dato non distingue l’adozione specifica per agenti IA.

Misure pratiche per rafforzare la sicurezza

Le organizzazioni dovrebbero adottare le seguenti pratiche:

    • Revisionare i permessi dei connettori in base al compito dell’agente, applicando il principio del minimo privilegio.
    • Mantenere un inventario centralizzato che registri responsabili, servizi collegati e stato di approvazione per ogni agente.
    • Definire processi di approvazione per azioni sensibili, garantendo che solo gli utenti autorizzati possano attivarle.

Microsoft, nella sua strategia di governance dei dati, sottolinea l’importanza di controllare l’accesso alle informazioni aziendali. Naveen Jangir, architetto principale di Microsoft Digital, consiglia di “regolare e proteggere l’IA mediante restrizioni di accesso adeguate”, così da consentire l’uso da parte di utenti autorizzati senza esporre dati non necessari.

Rischi e contromisure per gli agenti sviluppati con codice tradizionale

Quando i team impiegano agenti di programmazione IA per generare sistemi personalizzati, le modifiche possono propagarsi più rapidamente di quanto i revisori umani riescano a valutarle. Pertanto, la sicurezza nello sviluppo tradizionale richiede controlli sia sul processo di sviluppo sia sull’ambiente di esecuzione.

Sfide specifiche del codice tradizionale

    • Iniezione indiretta di istruzioni leggendo repository esterni contenenti codice potenzialmente maligno.
    • Esecuzione di comandi pericolosi o esposizione di credenziali se l’agente ha accesso a strumenti di sviluppo.
    • Rischi legati a file, tool e destinazioni esterne permessi dall’ambiente di runtime.

Le linee guida di NVIDIA sull’isolamento in ambienti controllati affermano che “gli ambienti isolati devono ricorrere all’iniezione esplicita di segreti” per limitare l’accesso a credenziali. Di conseguenza, gli agenti non devono ereditare tutte le credenziali dell’ambiente, ma ricevere solo quelle strettamente necessarie per il compito.

Strategie per rafforzare le pipeline di sviluppo ad alto codice

    • Implementare ambienti di esecuzione limitati, controllando l’accesso a file e le connessioni in uscita per ciascuna attività.
    • Eseguire scansioni statiche di sicurezza sul codice generato dagli agenti.
    • Coinvolgere revisori indipendenti per valutare decisioni di autorizzazione e logica di business non coperte da test automatici.

AWS raccomanda di separare la fase di generazione del codice da quella di valutazione, creando “sessioni indipendenti” per evitare il bias di autoconferma. Tuttavia, se due sessioni utilizzano lo stesso modello, potrebbero condividere gli stessi punti ciechi; pertanto, l’uso di modelli diversi per la revisione e la valutazione umana dei cambiamenti sensibili è consigliato.

Strategia di sicurezza integrata per entrambi gli approcci

Una governance efficace deve fornire una visione condivisa dell’attività degli agenti in tutti i punti di scambio di informazioni. Ad esempio, un flusso di lavoro low‑code potrebbe inviare contenuti a un agente personalizzato, che a sua volta interagisce con un servizio aziendale. Analizzare ogni componente isolatamente può lasciare vulnerabilità nascoste.

Le raccomandazioni chiave per una strategia unificata includono:

    • Creare un catalogo centralizzato di tutti gli agenti, indipendentemente dal metodo di sviluppo, con metadati su permessi, proprietari e scopi.
    • Applicare politiche di controllo degli accessi basate su ruoli (RBAC) che si estendano sia alle piattaforme low‑code sia agli ambienti di sviluppo tradizionali.
    • Implementare monitoraggio continuo e logging dettagliato per ogni interazione agente‑servizio, garantendo che i registri siano chiari e ricercabili.
    • Stabilire processi di revisione periodica delle configurazioni dei connettori e delle credenziali, con audit automatici e verifiche manuali.
    • Formare tutti gli attori coinvolti – dai “cittadini‑sviluppatori” ai team di DevOps – sui rischi specifici dell’IA agente e sulle migliori pratiche di mitigazione.

Infine, la collaborazione tra team di sicurezza, sviluppo e business è essenziale: solo un approccio trasversale può garantire che gli agenti, sia creati con poco codice sia con molto codice, operino entro i limiti di autorizzazione stabiliti, riducendo al minimo la superficie di attacco e prevenendo l’accumulo incontrollato di privilegi.