Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa la convalida della sicurezza della codifica in tempo reale utilizzando un server MCP con Kiro e altri assistenti di codifica
Ivan Girardi e Iker Reina Fuente, Amazon Web Services
Riepilogo
Questo modello descrive come implementare un server Model Context Protocol (MCP) che integri tre strumenti di scansione di sicurezza standard del settore per fornire un'analisi completa della sicurezza del codice. Il server consente agli assistenti di codifica AI (come Kiro, Amazon Q Developer e Cline) di scansionare automaticamente frammenti di codice e configurazioni Infrastructure as Code (IaC). Con queste scansioni, gli assistenti di codifica possono aiutare a identificare vulnerabilità di sicurezza, configurazioni errate e violazioni della conformità.
I generatori di codice AI addestrati su milioni di frammenti di codice creano un punto cieco in materia di sicurezza: quanto erano sicuri i dati di addestramento? Questo modello fornisce una convalida della sicurezza in tempo reale durante la generazione del codice, aiutando gli sviluppatori a identificare e comprendere potenziali problemi di sicurezza durante la codifica. Questo approccio aiuta gli sviluppatori a risolvere sia le vulnerabilità dirette che i rischi ereditari derivanti dalle dipendenze. Colmando il divario tra efficienza dell'IA e conformità alla sicurezza, questo modello aiuta a consentire l'adozione sicura di strumenti di sviluppo basati sull'intelligenza artificiale.
Questo modello aiuta le organizzazioni a migliorare le proprie pratiche di sicurezza dello sviluppo attraverso strumenti di codifica assistiti dall'intelligenza artificiale, fornendo funzionalità di scansione di sicurezza continue su più linguaggi di programmazione e definizioni di infrastruttura. La soluzione combina le funzionalità dei seguenti strumenti:
Checkov per la scansione di file IAC, inclusi Terraform e Kubernetes AWS CloudFormation manifest
Semgrep per l'analisi di più linguaggi di programmazione come Python, JavaScript Java e altri
Bandit per la scansione di sicurezza specializzata in Python
Le caratteristiche principali di questa soluzione includono quanto segue:
Scansione delta di nuovi segmenti di codice, con riduzione del sovraccarico computazionale
Ambienti isolati per strumenti di sicurezza, che impediscono la contaminazione tra strumenti
Perfetta integrazione con gli assistenti di codifica AI (Kiro, Amazon Q Developer, Cline e altri)
Feedback sulla sicurezza in tempo reale durante la generazione del codice
Regole di scansione personalizzabili per la conformità organizzativa
Il modello fornisce un'interfaccia unificata per la scansione di sicurezza con formati di risposta standardizzati, che semplificano l'integrazione dei controlli di sicurezza nei flussi di lavoro di sviluppo. Il modello utilizza Python e il framework MCP per fornire feedback automatici sulla sicurezza. Questo approccio aiuta gli sviluppatori a identificare e risolvere i problemi di sicurezza nelle prime fasi del processo di sviluppo, apprendendo al contempo le migliori pratiche di sicurezza attraverso risultati dettagliati.
Prerequisiti e limitazioni
Prerequisiti
Un programma attivo Account AWS con accesso all'utilizzo di Kiro o Amazon Q Developer, se desideri utilizzare uno di questi assistenti di codifica
Familiarità con gli strumenti e i concetti di scansione di sicurezza
Conoscenza di base di IaC e sicurezza delle applicazioni
Limitazioni
La scansione Bandit è limitata ai soli file Python.
La scansione in tempo reale potrebbe influire sulle prestazioni di basi di codice di grandi dimensioni.
Le limitazioni specifiche degli strumenti si basano sui formati di file e sui linguaggi supportati.
La revisione manuale è necessaria per convalidare i risultati di sicurezza.
I risultati della scansione di sicurezza richiedono competenze in materia di sicurezza per una corretta interpretazione.
Alcuni Servizi AWS non sono disponibili in tutti Regioni AWS. Per la disponibilità regionale, vedi AWS Servizi per regione
. Per endpoint specifici, consulta Service endpoints and quotas e scegli il link relativo al servizio.
Versioni del prodotto
Python versione 3.10 o successiva
Checkov versione 3.0.0 o successiva
Semgrep versione 1.45.0 o successiva
Bandit versione 1.7.5 o successiva
MCP [cli] versione 1.11.0 o successiva
Pydantic versione 1.10.0 o successiva
Loguru versione 0.6.0 o successiva
Architecture
Il diagramma seguente mostra l'architettura di questa soluzione.

Il diagramma mostra il flusso di lavoro seguente:
Lo sviluppatore utilizza assistenti AI (ad esempio, Kiro, Cline, Amazon Q Developer o Roo Code) per generare o analizzare il codice. L'assistente AI invia il codice per la scansione di sicurezza.
Il server dello scanner di sicurezza MCP elabora la richiesta indirizzandola allo scanner specializzato appropriato: Checkov per i file IaC, Semgrep per l'analisi di più linguaggi di programmazione o Bandit per la scansione di sicurezza specifica di Python.
I risultati dello scanner con risultati di sicurezza, livelli di gravità, descrizioni dettagliate e correzioni suggerite vengono inviati allo sviluppatore tramite l'assistente AI.
Viene stabilito un ciclo di feedback continuo in cui lo sviluppatore riceve una convalida di sicurezza in tempo reale, abilita correzioni automatiche tramite assistenti AI e promuove le migliori pratiche di sicurezza durante lo sviluppo.
L'architettura mitiga i seguenti rischi comuni per la sicurezza:
Iniezione di comandi
Iniezione rapida
Attraversamento del percorso
Attacchi di dipendenza
Esaurimento delle risorse
L'architettura mitiga questi rischi comuni per la sicurezza implementando le seguenti best practice:
Tutti gli input dell'utente e del modello AI vengono scritti in file temporanei.
Non vengono forniti input diretti ai comandi dell'interfaccia a riga di comando (CLI).
L'accesso al file system è limitato solo alle directory e ai file temporanei.
I file temporanei vengono puliti automaticamente.
Le risposte di scansione vengono disinfettate.
Viene applicato l'isolamento del processo che limita le capacità del processo.
Tutte le attività di scansione vengono registrate.
Automazione e scalabilità
Il modello supporta l'automazione tramite le seguenti funzionalità:
Integrazione con assistenti di codifica AI per la scansione automatica del codice
Risposte API standardizzate per l'elaborazione automatizzata
Configurazione tramite file di configurazione MCP
Support per l'elaborazione in batch di più file
Scansione scalabile su più linguaggi di programmazione e formati IAc
Il processo di scansione può essere automatizzato tramite gli endpoint API forniti:
scan_with_checkovper la scansione IACscan_with_semgrepper la scansione di codici multilinguescan_with_banditper la scansione specifica di Pythonget_supported_formatsper la convalida del formato
Quando estendete gli strumenti di scansione, seguite i principi di progettazione e le best practice descritti in precedenza in questa sezione. Vedi anche Best practice.
Tools (Strumenti)
Servizi AWS
Kiro
è un servizio di codifica agentica che collabora con gli sviluppatori per trasformare le istruzioni in specifiche dettagliate, quindi in codice funzionante, documenti e test. Gli agenti Kiro aiutano gli sviluppatori a risolvere problemi complessi e ad automatizzare attività come la generazione di documentazione e i test unitari. Amazon Q Developer è un assistente conversazionale generativo basato sull'intelligenza artificiale che può aiutarti a comprendere, creare, estendere e utilizzare le applicazioni. AWS
Altri strumenti
Bandit
è uno strumento di scansione di sicurezza Python specializzato. Rileva problemi di sicurezza comuni in Python come funzioni non sicure, segreti codificati e vulnerabilità di iniezione. Bandit fornisce valutazioni dettagliate di confidenza e gravità. Checkov
è uno strumento statico di analisi del codice che verifica la presenza di configurazioni errate di sicurezza e conformità in IaC. Inoltre, Checkov rileva le violazioni della conformità e le migliori pratiche di sicurezza. Cline
è un assistente di codifica basato sull'intelligenza artificiale che funziona in VS Code. Loguru
è una libreria di convalida dei dati per Python. Model Context Protocol (MCP)
è un framework open source per la creazione di strumenti di sviluppo assistiti dall'intelligenza artificiale. Pydantic
è una libreria di convalida dei dati per Python. Semgrep
analizza il codice sorgente alla ricerca di vulnerabilità e bug di sicurezza. Supporta più linguaggi di programmazione. Semgrep utilizza set di regole incentrati sulla sicurezza per un'analisi completa. Fornisce valutazioni dettagliate di confidenza e gravità.
Archivio di codice
Il codice di questo pattern è disponibile nell'archivio GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants
La struttura del repository include:
security_scanner_mcp_server/- Implementazione del server principaledocs/- Documentazione e materiali dimostrativitests/- File di testmcp-config-example.json- Esempio di configurazione MCPrequirements.txt- Dipendenze del progetto
Best practice
Implementazione della scansione di
Esamina i risultati di sicurezza per convalidare e dare priorità ai problemi.
Mantieni gli strumenti di scansione (Checkov, Semgrep e Bandit) aggiornati alle versioni più recenti.
Utilizzate lo strumento di sicurezza MCP di questo pattern insieme ad altre misure e strumenti di sicurezza.
Aggiorna regolarmente i set di regole e le politiche di sicurezza.
Gestione della configurazione
Utilizza i file di configurazione MCP nel codice sorgente ufficiale di controllo della versione.
Documenta regole e configurazioni personalizzate.
Integration
Integra la scansione di sicurezza nelle prime fasi del ciclo di sviluppo.
Imposta la scansione automatica in hook pre-commit o in pipeline di integrazione continua e distribuzione continua (CI/CD).
Configura le soglie di gravità appropriate per il tuo ambiente.
Stabilisci procedure chiare per la gestione dei risultati di sicurezza.
Considerazioni operative
Monitora le prestazioni di scansione e l'utilizzo delle risorse.
Implementa la corretta gestione e registrazione degli errori.
Conserva la documentazione delle configurazioni personalizzate.
Stabilisci un processo per la revisione e l'aggiornamento delle regole di sicurezza.
Inoltre, tieni presente le seguenti best practice:
Convalida sempre i risultati di sicurezza nel tuo contesto specifico.
Mantieni aggiornati gli strumenti di sicurezza e le dipendenze.
Utilizza più strumenti di sicurezza per una copertura completa.
Segui le migliori pratiche di sicurezza nel tuo processo di sviluppo.
Epiche
| Operazione | Description | Competenze richieste |
|---|---|---|
Configurare le impostazioni MCP. | Puoi modificare i file di configurazione in Kiro (Opzione 1) localizzando manualmente i file di configurazione o (Opzione 2) utilizzando l'IDE Kiro.
| Sviluppatore di app |
| Operazione | Description | Competenze richieste |
|---|---|---|
Configurare le impostazioni MCP. | Per configurare manualmente le impostazioni MCP, effettuate le seguenti operazioni:
| Sviluppatore di app |
| Operazione | Description | Competenze richieste |
|---|---|---|
Configurare le impostazioni MCP. | Per configurare manualmente le impostazioni MCP, effettuate le seguenti operazioni:
| Sviluppatore di app |
| Operazione | Description | Competenze richieste |
|---|---|---|
Esegui l'analisi del codice. | Per eseguire l'analisi del codice utilizzando Python e Bandit, utilizzate i seguenti passaggi:
| Sviluppatore di app |
| Operazione | Description | Competenze richieste |
|---|---|---|
Esegui l'analisi del codice. | Per eseguire l'analisi del codice utilizzando Terraform e Checkov, utilizza i seguenti passaggi:
| Sviluppatore di app |
| Operazione | Description | Competenze richieste |
|---|---|---|
Esegui scansioni mirate. | Di seguito sono riportati alcuni esempi di richieste che è possibile utilizzare per eseguire una scansione mirata:
| Sviluppatore di app |
Usa la scansione di sicurezza con la generazione di codice. | Per risolvere i problemi di sicurezza utilizzando i loop di generazione del codice, utilizza i seguenti passaggi (questo esempio utilizza Kiro come assistente di codifica):
| Sviluppatore di app |
risoluzione dei problemi
| Problema | Soluzione |
|---|---|
Problemi di configurazione dell'ambiente |
|
Problemi con lo scanner |
|
Problemi di integrazione |
|
Supporto aggiuntivo |
|
Risorse correlate
AWS documentazione
Infrastruttura come codice (AWS Whitepaper Introduzione a on) DevOps AWS
Altre risorse AWS
Altre risorse
Informazioni aggiuntive
Esempio di configurazione MCP con approvazione automatica abilitata
Se non è autoApprove configurato, l'utente deve concedere l'approvazione per inviare il codice al server di sicurezza MCP per la scansione. Una volta autoApprove configurato, l'assistente al codice può richiamare gli strumenti senza l'approvazione dell'utente. Questi strumenti vengono eseguiti localmente sulla macchina, non viene inviato alcun dato e viene eseguita solo una scansione del codice.
La seguente configurazione consente l'esecuzione automatica di tutte le funzioni di scansione di sicurezza:
{ "mcpServers": { "security-scanner": { "command": "uvx", "args": [ "--from", "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main", "security_scanner_mcp_server" ], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [ "scan_with_checkov", "scan_with_semgrep", "scan_with_bandit", "get_supported_formats" ] } } }
Per abilitare la registrazione di debug, impostare su"FASTMCP_LOG_LEVEL". "DEBUG"
Formati di file supportati dagli strumenti di scansione di sicurezza
Ogni strumento di scansione di sicurezza di questa soluzione supporta i seguenti formati di file:
Checkov (IaC)
Terraform: .tf, .tfvars, .tfstate
CloudFormation — .yaml, .yml, .json, .template
Kubernetes: .yaml, .yml
Dockerfile — Dockerfile
ARM — .json (Gestore delle risorse di Azure)
Bicipite — .bicipite
Senza server: .yml, .yaml
Timone: .yaml, .yml, .tpl
GitHub Azioni: .yml, .yaml
GitLab_ci — .yml, .yaml
Ansible: .yml, .yaml
Semgrep (codice sorgente)
Python — .py
JavaScript — .js
TypeScript — .ts
Giava — .java
Vai — .go
C — c.
C++ — .cpp
C# — .cs
Rubino — .rb
PHP — .php
Scala — .scala
Kotlin — .kt
Rust — .rs
Bandit (solo Python)
Python — .py
Demo
Per la scansione del codice, prova i seguenti esempi di istruzioni con il tuo assistente AI:
«Scansiona lo script corrente e dimmi i risultati».
«Scansiona le righe da 20 a 60 e dimmi i risultati».
«Scansiona questa risorsa della tabella Amazon DynamoDB e dimmi il risultato».
Per ulteriori informazioni, consulta questa demo sulla scansione del codice
Per generare codice sicuro, prova i seguenti prompt di esempio:
«Genera una configurazione Terraform per creare una tabella DynamoDB con crittografia abilitata e scansionala per problemi di sicurezza».
«Crea una funzione Python Lambda che scriva su DynamoDB e scansionala per individuare eventuali vulnerabilità».
«Genera un CloudFormation modello per un bucket S3 con impostazioni di sicurezza adeguate e verifica che superi i controlli di sicurezza».
«Scrivi uno script Python per interrogare DynamoDB con impaginazione e scansiona le migliori pratiche di sicurezza».
«Crea un manifesto di distribuzione Kubernetes per un microservizio con un rafforzamento della sicurezza e convalidalo».
Per ulteriori informazioni, guarda questa demo sulla generazione di codice con scansione di sicurezza