Implemente la validación de seguridad de la codificación en tiempo real mediante un servidor MCP con Kiro y otros asistentes de codificación - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implemente la validación de seguridad de la codificación en tiempo real mediante un servidor MCP con Kiro y otros asistentes de codificación

Ivan Girardi e Iker Reina Fuente, Amazon Web Services

Resumen

Este patrón describe cómo implementar un servidor de Model Context Protocol (MCP) que integre tres herramientas de escaneo de seguridad estándar del sector para proporcionar un análisis exhaustivo de la seguridad del código. El servidor permite a los asistentes de codificación de IA (como Kiro, Amazon Q Developer y Cline) escanear automáticamente fragmentos de código y configuraciones de infraestructura como código (IaC). Con estos escaneos, los asistentes de codificación pueden ayudar a identificar las vulnerabilidades de seguridad, los errores de configuración y las infracciones de conformidad.

Los generadores de códigos de IA entrenados con millones de fragmentos de código crean un punto ciego en materia de seguridad. ¿Cuán seguros estaban los datos de entrenamiento? Este patrón proporciona una validación de seguridad en tiempo real durante la generación del código, lo que ayuda a los desarrolladores a identificar y comprender los posibles problemas de seguridad a medida que codifican. Este enfoque ayuda a los desarrolladores a abordar tanto las vulnerabilidades directas como los riesgos heredados de las dependencias. Al cerrar la brecha entre la eficiencia de la IA y el cumplimiento de las normas de seguridad, este patrón ayuda a permitir la adopción segura de herramientas de desarrollo impulsadas por la IA.

Este patrón ayuda a las organizaciones a mejorar sus prácticas de seguridad de desarrollo mediante herramientas de codificación asistidas por IA, que proporcionan capacidades de escaneo de seguridad continuo en varios lenguajes de programación y definiciones de infraestructura. La solución combina las capacidades de las siguientes herramientas:

  • Compruebe si puede escanear archivos de IaC, incluidos los manifiestos de Terraform y AWS CloudFormation Kubernetes

  • Semgrep para analizar múltiples lenguajes de programación como Python JavaScript, Java y otros

  • Bandit para el escaneo de seguridad especializado en Python

Entre las principales características de esta solución se incluyen las siguientes:

  • Escaneo delta de nuevos segmentos de código, lo que reduce la sobrecarga computacional

  • Entornos de herramientas de seguridad aislados, lo que evita la contaminación entre herramientas

  • Integración perfecta con los asistentes de codificación de IA (Kiro, Amazon Q Developer, Cline y otros)

  • Comentarios de seguridad en tiempo real durante la generación de código

  • Reglas de escaneo personalizables para el cumplimiento organizacional

El patrón proporciona una interfaz unificada para el escaneo de seguridad con formatos de respuesta estandarizados, lo que facilita la integración de los controles de seguridad en los flujos de trabajo de desarrollo. El patrón utiliza Python y el marco MCP para ofrecer comentarios de seguridad automatizados. Este enfoque ayuda a los desarrolladores a identificar y abordar los problemas de seguridad al principio del proceso de desarrollo, a la vez que aprenden sobre las mejores prácticas de seguridad a través de hallazgos detallados.

Requisitos previos y limitaciones

Requisitos previos 

Limitaciones

  • El escaneo de bandidos se limita únicamente a los archivos de Python.

  • El escaneo en tiempo real puede afectar al rendimiento de bases de código grandes.

  • Las limitaciones específicas de la herramienta se basan en los formatos de archivo y los idiomas compatibles.

  • Se requiere una revisión manual para validar los hallazgos de seguridad.

  • Los resultados de los escaneos de seguridad requieren experiencia en seguridad para una interpretación adecuada.

  • Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte AWS Services by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

  • Python versión 3.10 o posterior

  • Checkov versión 3.0.0 o posterior

  • Semgrep versión 1.45.0 o posterior

  • Bandit, versión 1.7.5 o posterior

  • MCP [cli] versión 1.11.0 o posterior

  • Pydantic, versión 1.10.0 o posterior

  • Loguru versión 0.6.0 o posterior

Arquitectura

En el siguiente diagrama se muestra la arquitectura para esta solución.

Los asistentes de IA envían el código al servidor de escáneres de seguridad MCP para enviarlo a escáneres especializados; los resultados del escaneo se envían al desarrollador.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. El desarrollador utiliza asistentes de IA (por ejemplo, Kiro, Cline, Amazon Q Developer o Roo Code) para generar o analizar el código. El asistente de IA envía el código para escanearlo de seguridad.

  2. El servidor de escáner de seguridad MCP procesa la solicitud enrutándola al escáner especializado apropiado: Checkov para archivos IAC, Semgrep para el análisis de múltiples lenguajes de programación o Bandit para el escaneo de seguridad específico de Python.

  3. El asistente de IA envía al desarrollador los resultados del escáner, con los datos de seguridad, los niveles de gravedad, las descripciones detalladas y las correcciones sugeridas.

  4. Se establece un circuito de retroalimentación continuo en el que el desarrollador recibe una validación de seguridad en tiempo real, lo que permite realizar correcciones automatizadas mediante asistentes de IA y promueve las mejores prácticas de seguridad durante el desarrollo.

La arquitectura mitiga los siguientes riesgos de seguridad comunes:

  • Inyección de comandos

  • Inyección rápida

  • Recorrido de trayectoria

  • Ataques de dependencia

  • Agotamiento de recursos

La arquitectura mitiga estos riesgos de seguridad comunes mediante la implementación de las siguientes prácticas recomendadas:

  • Todas las entradas del usuario y del modelo de IA se escriben en archivos temporales.

  • No se proporcionan entradas directas a los comandos de la interfaz de línea de comandos (CLI).

  • El acceso al sistema de archivos está restringido únicamente a los directorios y archivos temporales.

  • Los archivos temporales se limpian automáticamente.

  • Las respuestas de escaneo están desinfectadas.

  • Se aplica un aislamiento del proceso que restringe las capacidades del proceso.

  • Se registran todas las actividades de escaneo.

Automatización y escala

El patrón admite la automatización a través de las siguientes capacidades:

  • Integración con asistentes de codificación de IA para el escaneo automático de códigos

  • Respuestas de API estandarizadas para el procesamiento automatizado

  • Configuración mediante archivos de configuración MCP

  • Support para el procesamiento por lotes de varios archivos

  • Escaneo escalable en varios lenguajes de programación y formatos IaC

El proceso de escaneo se puede automatizar a través de los puntos finales de la API proporcionados:

  • scan_with_checkovpara escanear iAC

  • scan_with_semgreppara escanear códigos en varios idiomas

  • scan_with_banditpara escaneos específicos de Python

  • get_supported_formatspara la validación del formato

Al ampliar las herramientas de digitalización, siga los principios de diseño y las prácticas recomendadas descritos anteriormente en esta sección. Consulte también las prácticas recomendadas.

Tools (Herramientas)

Servicios de AWS

  • Kiro es un servicio de programación agencial que trabaja junto con los desarrolladores para convertir las indicaciones en especificaciones detalladas y, luego, en código funcional, documentos y pruebas. Los agentes de Kiro ayudan a los desarrolladores a resolver problemas complejos y a automatizar tareas como la generación de documentación y las pruebas unitarias.

  • Amazon Q Developer es un asistente conversacional generativo basado en inteligencia artificial que puede ayudarlo a comprender, crear, ampliar y operar aplicaciones. AWS

Otras herramientas

  • Bandit es una herramienta de escaneo de seguridad especializada en Python. Detecta problemas de seguridad comunes de Python, como funciones inseguras, secretos codificados y vulnerabilidades de inyección. Bandit proporciona índices detallados de confianza y gravedad.

  • Checkov es una herramienta de análisis de código estático que comprueba si el IaC está mal configurado en materia de seguridad y conformidad. Además, Checkov detecta las infracciones de conformidad y las mejores prácticas de seguridad.

  • Cline es un asistente de codificación impulsado por IA que se ejecuta en VS Code.

  • Loguru es una biblioteca de validación de datos para Python.

  • El Model Context Protocol (MCP) es un marco de código abierto para crear herramientas de desarrollo asistidas por IA.

  • Pydantic es una biblioteca de validación de datos para Python.

  • Semgrep analiza el código fuente en busca de vulnerabilidades y errores de seguridad. Es compatible con varios lenguajes de programación. Semgrep utiliza conjuntos de reglas centrados en la seguridad para un análisis exhaustivo. Proporciona calificaciones detalladas de confianza y gravedad.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants. El repositorio incluye la implementación del servidor MCP, detalles sobre la configuración del MCP para Kiro, Amazon Q Developer, Cline y otros, ejemplos de configuración y utilidades de prueba.

La estructura del repositorio incluye lo siguiente:

  • security_scanner_mcp_server/- Implementación del servidor principal

  • docs/- Documentación y materiales de demostración

  • tests/- Archivos de prueba

  • mcp-config-example.json- Ejemplo de configuración de MCP

  • requirements.txt- Dependencias del proyecto

Prácticas recomendadas

Implementación de escaneos de seguridad

  • Revise los hallazgos de seguridad para validar y priorizar los problemas.

  • Mantenga las herramientas de escaneo (Checkov, Semgrep y Bandit) actualizadas a las versiones más recientes.

  • Utilice la herramienta de seguridad MCP de este patrón junto con otras medidas y herramientas de seguridad.

  • Actualice los conjuntos de reglas y políticas de seguridad con regularidad.

Administración de la configuración

  • Utilice los archivos de configuración del MCP de la fuente oficial de control de versiones.

  • Documente las reglas y configuraciones personalizadas.

Integration

  • Integre el escaneo de seguridad al principio del ciclo de desarrollo.

  • Configure el escaneo automatizado en enlaces previos a la confirmación o en canalizaciones de integración e implementación continuas (CI/CD).

  • Configure los umbrales de gravedad adecuados para su entorno.

  • Establezca procedimientos claros para gestionar los hallazgos de seguridad.

Consideraciones operativas

  • Supervise el rendimiento del escaneo y el uso de los recursos.

  • Implemente un manejo y registro de errores adecuados.

  • Mantenga la documentación de las configuraciones personalizadas.

  • Establezca un proceso para revisar y actualizar las reglas de seguridad.

Además, tenga en cuenta las siguientes prácticas recomendadas:

  • Valide siempre los hallazgos de seguridad en su contexto específico.

  • Mantenga actualizadas las dependencias y las herramientas de seguridad.

  • Utilice varias herramientas de seguridad para obtener una cobertura integral.

  • Siga las mejores prácticas de seguridad en su proceso de desarrollo.

Epics

TareaDescripciónHabilidades requeridas

Configure los ajustes del MCP.

Puede editar los archivos de configuración en Kiro (opción 1) localizándolos manualmente o (opción 2) utilizando el IDE de Kiro.

  • (Opción 1) Localice y edite los archivos de configuración manualmente de la siguiente manera:

    • Ruta: .kiro/settings/mcp.json (local) o ~/.kiro/settings/mcp.json (global)

  • (Opción 2) Modifique los archivos de configuración mediante el IDE de Kiro de la siguiente manera:

    • Elija el símbolo de Kiro en el menú de navegación de la izquierda.

    • Navegue hasta la sección «SERVIDORES MCP».

    • Edite los ajustes de configuración. Los cambios realizados con el IDE de Kiro se guardarán en uno de estos archivos de configuración: .kiro/settings/mcp.json (local) o ~/.kiro/settings/mcp.json (global)

  • (Ambas opciones) Tras completar la opción 1 o la opción 2, añada la configuración del escáner de seguridad .kiro/settings/mcp.json (local) o ~/.kiro/settings/mcp.json (global):

{ "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": [] } } }
Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Configure los ajustes del MCP.

Para configurar los ajustes del MCP manualmente, siga estos pasos:

  1. Edite el archivo de configuración del MCP en ~/.aws/amazonq/mcp.json (global) o .amazonq/mcp.json (local).

  2. Añada la siguiente configuración de escáner de seguridad ~/.aws/amazonq/mcp.json (global) o .amazonq/mcp.json (local):

{ "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" } } } }
Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Configure los ajustes del MCP.

Para configurar los ajustes del MCP manualmente, siga estos pasos:

  1. Elija la extensión para abrirla y, a continuación, seleccione Servidores MCP.

  2. Seleccione la pestaña Instalado y, a continuación, elija Configurar servidores MCP para abrir el cline_mcp_settings.json archivo.

  3. Agregue la siguiente configuración de escáner de seguridad: cline_mcp_settings.json

{ "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": [] } } }
Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Realice el análisis del código.

Para realizar un análisis de código mediante Python y Bandit, siga los siguientes pasos:

  1. Cree un nuevo archivo de Python denominado bandit_test.py con el siguiente contenido:

    import pickle import yaml import subprocess from flask import Flask, request import hashlib app = Flask(__name__) @app.route("/unsafe_pickle", methods=["POST"]) def unsafe_pickle_usage(): data = request.get_data() return pickle.loads(data) @app.route("/command_injection", methods=["GET"]) def command_injection(): command = request.args.get("cmd") return subprocess.Popen(command, shell=True) def weak_crypto(): password = "secret_password" return hashlib.md5(password.encode()).hexdigest() PASSWORD = "super_secret_password123"
  2. Abre el asistente de codificación. Solicita las siguientes acciones en el chat: Escanea el script actual y dime los resultados.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Realice el análisis del código.

Para realizar un análisis de código mediante Terraform y Checkov, siga los siguientes pasos:

  1. Cree un nuevo archivo de Terraform llamado terraform_test.tf con el siguiente contenido:

    resource "aws_s3_bucket" "insecure_bucket" { bucket = "my-insecure-bucket" acl = "public-read" } resource "aws_security_group" "wide_open" { name = "allow_all" description = "Allow all inbound traffic" ingress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } }
  2. Abre el asistente de codificación. Solicita las siguientes acciones en el chat: Escanea el script actual y dime los resultados.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Realice un escaneo específico.

A continuación, se muestran algunos ejemplos de solicitudes que puede utilizar para realizar un análisis específico:

  • Escanea el proyecto actual y dime los resultados.

  • Escanea las líneas 6 a 10 del script actual.

Desarrollador de aplicaciones

Utilice el escaneo de seguridad con la generación de código.

Para resolver los problemas de seguridad mediante bucles de generación de código, siga los siguientes pasos (en este ejemplo se utiliza Kiro como asistente de codificación):

  1. En Kiro, pregunte: cree una tabla de DynamoDB en Terraform y escanee el código con el escáner de seguridad.

  2. En Kiro, pregunte: revise el código generado y los resultados del escaneo de seguridad y siga los bucles de generación de código para resolver los problemas de seguridad.

Desarrollador de aplicaciones

Resolución de problemas

ProblemaSolución

Problemas de configuración del entorno

  • Compruebe que esté instalada la versión 3.10 o posterior de Python.

  • Asegúrese de que el administrador de uv paquetes esté instalado.

Problemas con el escáner

  • Compruebe que los formatos de archivo sean compatibles.

  • Compruebe que la sintaxis del archivo sea válida.

  • Asegúrese de que se utilizan las extensiones de archivo adecuadas.

  • Revise la configuración del tiempo de espera del escaneo.

Problemas de integración

  • Compruebe que el servidor MCP esté funcionando.

  • Compruebe que el archivo de configuración es correcto.

  • Valide los puntos finales de la API.

  • Asegúrese de que el formato de respuesta sea válido.

Compatibilidad adicional

  • Revise los registros para ver los mensajes de error detallados.

  • Consulte la documentación específica de la herramienta.

  • Crea una edición en el repositorio.

Recursos relacionados

AWS documentación

Otros recursos AWS

Otros recursos

Información adicional

Ejemplo de configuración de MCP con la aprobación automática habilitada

Si no autoApprove está configurado, el usuario debe aprobar el envío del código al servidor de seguridad MCP para su escaneo. Cuando autoApprove está configurado, el asistente de código puede invocar las herramientas sin la aprobación del usuario. Estas herramientas se ejecutan localmente en la máquina, no se envían datos y solo se escanea el código.

La siguiente configuración permite la ejecución automática de todas las funciones de escaneo de seguridad:

{ "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" ] } } }

Para habilitar el registro de depuración, establézcalo en"FASTMCP_LOG_LEVEL". "DEBUG"

Formatos de archivo compatibles con las herramientas de análisis de seguridad

Cada herramienta de análisis de seguridad de esta solución admite los siguientes formatos de archivo:

Checkov (iAC)

  • Terraform: .tf, .tfvars, .tfstate

  • CloudFormation — .yaml, .yml, .json, .template

  • Kubernetes: .yaml, .yml

  • Dockerfile — Dockerfile

  • ARM — .json (administrador de recursos de Azure)

  • Bíceps: .bicep

  • Sin servidor: .yml, .yaml

  • Helm: .yaml, .yml, .tpl

  • GitHub Acciones: .yml, .yaml

  • GitLab_ci: .yml, .yaml

  • Ansible: .yml, .yaml

Semgrep (código fuente)

  • Python — .py

  • JavaScript — .js

  • TypeScript — .ts

  • Java — .java

  • Ir — .go

  • C — c.

  • C++ — .cpp

  • C# — .cs

  • Ruby — .rb

  • PHP — .php

  • Scala — .scala

  • Kotlin — .kt

  • Rust — .rs

Bandit (solo en Python)

  • Python — .py

Demostraciones

Para escanear códigos, prueba los siguientes ejemplos de instrucciones con tu asistente de IA:

  • «Escanea el script actual y dime los resultados».

  • «Escanea las líneas 20 a 60 y dime los resultados».

  • «Escanee este recurso de tabla de Amazon DynamoDB y dígame el resultado».

Para obtener más información, consulte esta demostración de escaneo de código en el repositorio de GitHub este patrón.

Para generar código seguro, prueba los siguientes ejemplos de instrucciones:

  • «Genere una configuración de Terraform para crear una tabla de DynamoDB con el cifrado activado y escanéela para detectar problemas de seguridad».

  • «Cree una función Lambda de Python que escriba en DynamoDB y analícela en busca de vulnerabilidades».

  • «Genere una CloudFormation plantilla para un bucket de S3 con la configuración de seguridad adecuada y compruebe que supera las comprobaciones de seguridad».

  • «Escriba un script de Python para consultar DynamoDB con paginación y busque las mejores prácticas de seguridad».

  • «Cree un manifiesto de despliegue de Kubernetes para un microservicio que refuerce la seguridad y valídelo».

Para obtener más información, consulta esta demostración de generación de código con escaneo de seguridad en el repositorio de este patrón. GitHub