Implemente a validação de segurança de codificação em tempo real usando um servidor MCP com Kiro e outros assistentes de codificação - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implemente a validação de segurança de codificação em tempo real usando um servidor MCP com Kiro e outros assistentes de codificação

Ivan Girardi e Iker Reina Fuente, Amazon Web Services

Resumo

Esse padrão descreve como implementar um servidor Model Context Protocol (MCP) que integra três ferramentas de verificação de segurança padrão do setor para fornecer uma análise abrangente de segurança de código. O servidor permite que assistentes de codificação de IA (como Kiro, Amazon Q Developer e Cline) digitalizem automaticamente trechos de código e configurações de infraestrutura como código (IaC). Com essas verificações, os assistentes de codificação podem ajudar a identificar vulnerabilidades de segurança, configurações incorretas e violações de conformidade.

Geradores de código de IA treinados em milhões de trechos de código criam um ponto cego de segurança. Quão seguros eram esses dados de treinamento? Esse padrão fornece validação de segurança em tempo real durante a geração do código, ajudando os desenvolvedores a identificar e entender possíveis problemas de segurança à medida que codificam. Essa abordagem ajuda os desenvolvedores a lidar com as vulnerabilidades diretas e os riscos herdados das dependências. Ao preencher a lacuna entre a eficiência da IA e a conformidade com a segurança, esse padrão ajuda a permitir a adoção segura de ferramentas de desenvolvimento baseadas em IA.

Esse padrão ajuda as organizações a aprimorar suas práticas de segurança de desenvolvimento por meio de ferramentas de codificação assistidas por IA, fornecendo recursos contínuos de verificação de segurança em várias linguagens de programação e definições de infraestrutura. A solução combina os recursos das seguintes ferramentas:

  • Checkov para escanear arquivos IaC, incluindo manifestos do Terraform e do AWS CloudFormation Kubernetes

  • Semgrep para analisar várias linguagens de programação, como Python JavaScript, Java e outras

  • Bandit para escaneamento de segurança especializado em Python

Os principais recursos dessa solução incluem o seguinte:

  • Escaneamento delta de novos segmentos de código, reduzindo a sobrecarga computacional

  • Ambientes isolados de ferramentas de segurança, evitando a contaminação entre ferramentas

  • Integração perfeita com assistentes de codificação de IA (Kiro, Amazon Q Developer, Cline e outros)

  • Feedback de segurança em tempo real durante a geração do código

  • Regras de varredura personalizáveis para conformidade organizacional

O padrão fornece uma interface unificada para verificação de segurança com formatos de resposta padronizados, facilitando a integração das verificações de segurança nos fluxos de trabalho de desenvolvimento. O padrão usa Python e a estrutura MCP para fornecer feedback de segurança automatizado. Essa abordagem ajuda os desenvolvedores a identificar e resolver problemas de segurança no início do processo de desenvolvimento, enquanto aprendem sobre as melhores práticas de segurança por meio de descobertas detalhadas.

Pré-requisitos e limitações

Pré-requisitos

  • Um ativo Conta da AWS com acesso para usar o Kiro ou o Amazon Q Developer, se você quiser usar qualquer um desses assistentes de codificação

  • Python versão 3.10 ou posterior instalada

  • uvgerenciador de pacotes instalado

  • Familiaridade com ferramentas e conceitos de escaneamento de segurança

  • Compreensão básica de IaC e segurança de aplicativos

Limitações

  • O escaneamento do Bandit é limitado somente aos arquivos Python.

  • A varredura em tempo real pode afetar o desempenho de grandes bases de código.

  • As limitações específicas da ferramenta são baseadas nos formatos e idiomas de arquivo suportados.

  • A revisão manual é necessária para validar as descobertas de segurança.

  • Os resultados da verificação de segurança exigem experiência em segurança para uma interpretação adequada.

  • Alguns Serviços da AWS não estão disponíveis em todos Regiões da AWS. Para conferir a disponibilidade de uma região, consulte AWS Services by Region. Para endpoints específicos, consulte Service endpoints and quotas e clique no link correspondente ao serviço desejado.

Versões do produto

  • Python versão 3.10 ou versões posteriores

  • Checkov versão 3.0.0 ou posterior

  • Semgrep versão 1.45.0 ou posterior

  • Bandit versão 1.7.5 ou posterior

  • MCP [cli] versão 1.11.0 ou posterior

  • Pydantic versão 1.10.0 ou posterior

  • Loguru versão 0.6.0 ou posterior

Arquitetura

O diagrama apresentado a seguir ilustra a arquitetura para esta solução.

Os assistentes de IA enviam código ao servidor do scanner de segurança MCP para encaminhá-lo para scanners especializados; os resultados da verificação são enviados ao desenvolvedor.

O diagrama mostra o seguinte fluxo de trabalho:

  1. O desenvolvedor usa assistentes de IA (por exemplo, Kiro, Cline, Amazon Q Developer ou Roo Code) para gerar ou analisar código. O assistente de IA envia o código para verificação de segurança.

  2. O servidor do scanner de segurança MCP processa a solicitação roteando-a para o scanner especializado apropriado: Checkov para arquivos IaC, Semgrep para análise de várias linguagens de programação ou Bandit para escaneamento de segurança específico para Python.

  3. Os resultados do scanner com descobertas de segurança, níveis de severidade, descrições detalhadas e correções sugeridas são enviados de volta ao desenvolvedor por meio do assistente de IA.

  4. Um ciclo de feedback contínuo é estabelecido em que o desenvolvedor recebe validação de segurança em tempo real, permitindo correções automatizadas por meio de assistentes de IA e promovendo as melhores práticas de segurança durante o desenvolvimento.

A arquitetura reduz os seguintes riscos comuns de segurança:

  • Injeção de comando

  • Injeção imediata

  • Percurso transversal

  • Ataques de dependência

  • Esgotamento de recursos

A arquitetura reduz esses riscos comuns de segurança implementando as seguintes melhores práticas:

  • Todas as entradas do usuário e do modelo de IA são gravadas em arquivos temporários.

  • Nenhuma entrada direta é fornecida aos comandos da interface de linha de comando (CLI).

  • O acesso ao sistema de arquivos é restrito somente a diretórios e arquivos temporários.

  • Os arquivos temporários são limpos automaticamente.

  • As respostas de digitalização são higienizadas.

  • O isolamento do processo que restringe os recursos do processo é imposto.

  • Todas as atividades de escaneamento são registradas.

Automação e escala

O padrão oferece suporte à automação por meio dos seguintes recursos:

  • Integração com assistentes de codificação de IA para digitalização automática de código

  • Respostas de API padronizadas para processamento automatizado

  • Configuração por meio de arquivos de configuração MCP

  • Support para processamento em lote de vários arquivos

  • Digitalização escalável em várias linguagens de programação e formatos IaC

O processo de digitalização pode ser automatizado por meio dos endpoints de API fornecidos:

  • scan_with_checkovpara digitalização IaC

  • scan_with_semgreppara digitalização de código em vários idiomas

  • scan_with_banditpara escaneamento específico do Python

  • get_supported_formatspara validação de formato

Ao estender as ferramentas de digitalização, siga os princípios de design e as melhores práticas descritos anteriormente nesta seção. Veja também as melhores práticas.

Ferramentas

Serviços da AWS

  • O Kiro é um serviço de codificação agente que trabalha junto com desenvolvedores para transformar solicitações em especificações detalhadas e, em seguida, em código, documentos e testes funcionais. Os agentes Kiro ajudam os desenvolvedores a resolver problemas desafiadores e automatizar tarefas como gerar documentação e testes unitários.

  • O Amazon Q Developer é um assistente conversacional generativo baseado em IA que pode ajudar você a entender, criar, estender e operar aplicativos. AWS

Outras ferramentas

  • O Bandit é uma ferramenta especializada de scanner de segurança em Python. Ele detecta problemas comuns de segurança do Python, como funções inseguras, segredos codificados e vulnerabilidades de injeção. O Bandit fornece classificações detalhadas de confiança e severidade.

  • O Checkov é uma ferramenta estática de análise de código que verifica o IaC em busca de configurações incorretas de segurança e conformidade. Além disso, o Checkov detecta violações de conformidade e as melhores práticas de segurança.

  • O Cline é um assistente de codificação com inteligência artificial que é executado no VS Code.

  • Loguru é uma biblioteca de validação de dados para Python.

  • O Model Context Protocol (MCP) é uma estrutura de código aberto para criar ferramentas de desenvolvimento assistidas por IA.

  • Pydantic é uma biblioteca de validação de dados para Python.

  • O Semgrep analisa o código-fonte em busca de vulnerabilidades e bugs de segurança. Ele suporta várias linguagens de programação. O Semgrep usa conjuntos de regras focados na segurança para uma análise abrangente. Ele fornece classificações detalhadas de confiança e severidade.

Repositório de código

O código desse padrão está disponível no repositório GitHub MCP Security Scanner: Real-Time Protection for AI Code Assistants. O repositório inclui a implementação do servidor MCP, detalhes sobre a configuração do MCP para Kiro, Amazon Q Developer, Cline e outros, exemplos de configuração e utilitários de teste.

A estrutura do repositório inclui:

  • security_scanner_mcp_server/- Implementação do servidor principal

  • docs/- Documentação e materiais de demonstração

  • tests/- Arquivos de teste

  • mcp-config-example.json- Exemplo de configuração MCP

  • requirements.txt- Dependências do projeto

Práticas recomendadas

Implementação da digitalização

  • Analise as descobertas de segurança para validar e priorizar os problemas.

  • Mantenha as ferramentas de digitalização (Checkov, Semgrep e Bandit) atualizadas para as versões mais recentes.

  • Use a ferramenta de segurança MCP desse padrão em conjunto com outras medidas e ferramentas de segurança.

  • Atualize os conjuntos de regras e políticas de segurança regularmente.

Gerenciamento de configuração

  • Use os arquivos de configuração do MCP na fonte oficial de controle de versão.

  • Documente regras e configurações personalizadas.

Integration

  • Integre a verificação de segurança no início do ciclo de desenvolvimento.

  • Configure a digitalização automatizada em ganchos de pré-confirmação ou em pipelines de integração contínua e implantação contínua (CI/CD).

  • Configure os limites de severidade apropriados para seu ambiente.

  • Estabeleça procedimentos claros para lidar com as descobertas de segurança.

Considerações operacionais

  • Monitore o desempenho da digitalização e o uso de recursos.

  • Implemente o tratamento e o registro de erros adequados.

  • Mantenha a documentação das configurações personalizadas.

  • Estabeleça um processo para revisar e atualizar as regras de segurança.

Além disso, lembre-se das seguintes práticas recomendadas:

  • Sempre valide as descobertas de segurança em seu contexto específico.

  • Mantenha as ferramentas e dependências de segurança atualizadas.

  • Use várias ferramentas de segurança para uma cobertura abrangente.

  • Siga as melhores práticas de segurança em seu processo de desenvolvimento.

Épicos

TarefaDescriptionHabilidades necessárias

Defina as configurações do MCP.

Você pode editar os arquivos de configuração no Kiro (Opção 1) localizando manualmente os arquivos de configuração ou (Opção 2) usando o Kiro IDE.

  • (Opção 1) Localize e edite os arquivos de configuração manualmente da seguinte forma:

    • Caminho: .kiro/settings/mcp.json (local) ou ~/.kiro/settings/mcp.json (global)

  • (Opção 2) Modifique os arquivos de configuração usando o Kiro IDE da seguinte forma:

    • Escolha o símbolo Kiro no menu de navegação à esquerda.

    • Navegue até a seção “SERVIDORES MCP”.

    • Edite as configurações. As alterações feitas com o Kiro IDE serão salvas em um desses arquivos de configuração: .kiro/settings/mcp.json (local) ou ~/.kiro/settings/mcp.json (global)

  • (Ambas as opções) Depois de concluir a Opção 1 ou a Opção 2, adicione a configuração do scanner de segurança .kiro/settings/mcp.json (local) ou ~/.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": [] } } }
Desenvolvedor de aplicativos
TarefaDescriptionHabilidades necessárias

Defina as configurações do MCP.

Para definir as configurações de MCP manualmente, use as seguintes etapas:

  1. Edite o arquivo de configuração MCP em ~/.aws/amazonq/mcp.json (global) ou .amazonq/mcp.json (local).

  2. Adicione a seguinte configuração do scanner de segurança ~/.aws/amazonq/mcp.json (global) ou .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" } } } }
Desenvolvedor de aplicativos
TarefaDescriptionHabilidades necessárias

Defina as configurações do MCP.

Para definir as configurações de MCP manualmente, use as seguintes etapas:

  1. Escolha a extensão para abri-la e selecione Servidores MCP.

  2. Escolha a guia Instalado e, em seguida, escolha Configurar servidores MCP para abrir o cline_mcp_settings.json arquivo.

  3. Adicione a seguinte configuração do scanner de segurança: 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": [] } } }
Desenvolvedor de aplicativos
TarefaDescriptionHabilidades necessárias

Realizar a análise do código.

Para realizar a análise de código usando Python e Bandit, use as seguintes etapas:

  1. Crie um novo arquivo Python chamado bandit_test.py com o seguinte conteúdo:

    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. Abra o assistente de codificação. Solicite as seguintes ações no bate-papo: Examine o script atual e me diga os resultados.

Desenvolvedor de aplicativos
TarefaDescriptionHabilidades necessárias

Realizar a análise do código.

Para realizar a análise de código usando o Terraform e o Checkov, use as seguintes etapas:

  1. Crie um novo arquivo Terraform chamado terraform_test.tf com o seguinte conteúdo:

    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. Abra o assistente de codificação. Solicite as seguintes ações no bate-papo: Examine o script atual e me diga os resultados.

Desenvolvedor de aplicativos
TarefaDescriptionHabilidades necessárias

Execute a digitalização direcionada.

Veja a seguir exemplos de solicitações que você pode usar para realizar uma verificação direcionada:

  • Examine o projeto atual e me diga os resultados.

  • Digitalize as linhas 6 a 10 no script atual.

Desenvolvedor de aplicativos

Use a varredura de segurança com geração de código.

Para resolver descobertas de segurança usando loops de geração de código, use as etapas a seguir (este exemplo usa o Kiro como assistente de codificação):

  1. No Kiro, pergunte: Crie uma tabela do DynamoDB no Terraform e escaneie o código com o scanner de segurança.

  2. Em Kiro, pergunte: Analise o código gerado e os resultados da verificação de segurança e siga os ciclos de geração de código que resolvem as descobertas de segurança.

Desenvolvedor de aplicativos

Solução de problemas

ProblemaSolução

Problemas de configuração do ambiente

  • Verifique se a versão 3.10 ou posterior do Python está instalada.

  • Certifique-se de que o gerenciador de uv pacotes esteja instalado.

Problemas com o scanner

  • Verifique se os formatos de arquivo são compatíveis.

  • Verifique se a sintaxe do arquivo é válida.

  • Certifique-se de que as extensões de arquivo adequadas sejam usadas.

  • Revise as configurações de tempo limite de escaneamento.

Problemas de integração

  • Verifique se o servidor MCP está em execução.

  • Verifique se o arquivo de configuração está correto.

  • Valide os endpoints da API.

  • Verifique se o formato da resposta é válido.

Suporte adicional

  • Revise os registros para ver mensagens de erro detalhadas.

  • Verifique a documentação específica da ferramenta.

  • Crie um problema no repositório.

Recursos relacionados

AWS documentação

Outros AWS recursos

Outros recursos

Mais informações

Exemplo de configuração MCP com aprovação automática ativada

Sem autoApprove configurado, o usuário deve conceder aprovação para enviar o código ao servidor de segurança MCP para digitalização. Quando autoApprove configurado, o assistente de código pode invocar as ferramentas sem a aprovação do usuário. Essas ferramentas são executadas localmente na máquina, nenhum dado é enviado e somente uma varredura de código é executada.

A configuração a seguir permite a execução automática de todas as funções de verificação de segurança:

{ "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 ativar o registro de depuração, "FASTMCP_LOG_LEVEL" defina "DEBUG" como.

Formatos de arquivo suportados pelas ferramentas de verificação de segurança

Cada ferramenta de verificação de segurança dessa solução oferece suporte aos seguintes formatos de arquivo:

Checkov (IAc)

  • Terraform — .tf, .tfvars, .tfstate

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

  • Kubernetes — .yaml, .yml

  • Dockerfile — Dockerfile

  • ARM — .json (Gerenciador de Recursos do Azure)

  • Bíceps — .bíceps

  • Sem servidor — .yml, .yaml

  • Capacete — .yaml, .yml, .tpl

  • GitHub Ações — .yml, .yaml

  • GitLab_ci — .yml, .yaml

  • Ansible — .yml, .yaml

Semgrep (Código fonte)

  • Python — .py

  • JavaScript — .js

  • TypeScript — .ts

  • Java — .java

  • Vá — .go

  • C — c.

  • C++ — .cpp

  • C# — .cs

  • Rubi — .rb

  • PHP — .php

  • Scala — .scala

  • Kotlin — .kt

  • Ferrugem — .rs

Bandit (somente Python)

  • Python — .py

Demos

Para digitalização de código, experimente os seguintes exemplos de solicitações com seu assistente de IA:

  • “Examine o script atual e me diga os resultados.”

  • “Examine as linhas 20—60 e me diga os resultados.”

  • “Examine esse recurso de tabela do Amazon DynamoDB e me diga o resultado.”

Para obter mais informações, consulte esta demonstração de digitalização de código no GitHub repositório desse padrão.

Para gerar um código seguro, experimente os seguintes exemplos de prompts:

  • “Gere uma configuração do Terraform para criar uma tabela do DynamoDB com criptografia ativada e escaneá-la em busca de problemas de segurança.”

  • “Crie uma função Python Lambda que grava no DynamoDB e verifique se há vulnerabilidades.”

  • “Gere um CloudFormation modelo para um bucket S3 com as configurações de segurança adequadas e verifique se ele passa nas verificações de segurança.”

  • “Escreva um script em Python para consultar o DynamoDB com paginação e verifique as melhores práticas de segurança.”

  • “Crie um manifesto de implantação do Kubernetes para um microsserviço com reforço de segurança e valide-o.”

Para obter mais informações, consulte esta demonstração de geração de código com verificação de segurança no GitHub repositório desse padrão.