O que é análise de código (SAST)?

Quando falamos em SAST (Static Application Security Testing), estamos falando de análise de código sem execução. Ou seja, ele lê seu código e aponta potenciais falhas como:

  • Uso de funções ou bibliotecas com CVEs conhecidas.
  • Falta de validação de entrada (o clássico caminho para injeção SQL/XSS).
  • Exposição de dados sensíveis como senhas hardcoded.
  • Más práticas de autenticação/autorização.
  • Má configuração de infraestrutura como código (IAM Policies mal feitas, buckets S3 públicos, etc.).

O que o Amazon Inspector faz de diferente?

Antes ele já era conhecido por escanear EC2, containers, Lambda, mas agora ele entra no começo do ciclo de desenvolvimento.

Principais pontos:

  • Conecta direto com GitHub, CodeCommit e repositórios Git.
  • Escaneia código durante o pull request.
  • Integração nativa com Security Hub e IAM.
  • Não precisa configurar infraestrutura adicional de scanners.
  • Trabalha com linguagens como Python, JavaScript, Java, e outras.

🛡️ Comparativo com outras ferramentas de SAST

FerramentaTipoLinguagensIntegração nativa AWSGovernança IAM
Amazon Inspector (code)SASTNode, Python, Java (foco inicial)✅ Sim✅ IAM nativo
CodeQL (GitHub)SAST/SDLCAlta cobertura🔶 Parcial
SonarQubeSAST/QualidadeAmpla🔶 Parcial
Checkov (IaC)SAST para IaCTerraform, CloudFormation✅ via CLI🔶 Parcial

O grande diferencial do Inspector é justamente a integração nativa com o IAM, CloudTrail, Security Hub e outras peças do ecossistema AWS.


Exemplos práticos de uso

Exemplo 1 - Time desenvolvendo microserviço em NodeJS

Um time cria um novo microserviço exposto em API Gateway. O pipeline deles é:

  • Código em GitHub.
  • Pipeline automatizado via CodePipeline.

O Amazon Inspector Code Security é integrado no pull request:

  • Toda PR roda uma análise SAST automática.
  • Caso detecte alguma função insegura (eval(), child_process.exec()), ele marca o PR como falha.
  • O resultado do scan vai para o Security Hub onde o time de segurança monitora.

Exemplo 2 - Time de dados usando scripts Python

Um time de dados armazena dados sensíveis e processa muitos arquivos.

  • O código fica em CodeCommit.
  • Pipeline usa CodeBuild.

O Inspector Code Security identifica quando um script puxa secret diretamente via string literal e também quando há dependências desatualizadas com CVEs críticas.

Assim, eles conseguem corrigir antes de rodar o pipeline completo.

Exemplo 3 - Equipe multi-conta usando AWS Organizations

Empresa com múltiplas contas (dev, stage, prod), habilita o Amazon Inspector Code Security via Organizations.

  • Integra todos repositórios CodeCommit.
  • Regras de bloqueio de PR configuradas apenas em produção.
  • Time de segurança visualiza tudo centralizado no Security Hub.

Como isso encaixa no fluxo do time?

  • No GitHub ou CodeCommit: feedback imediato no PR.
  • No CI/CD: bloqueio automático quando falhas são críticas.
  • No pós-produção: findings visíveis via Security Hub.

O time de Dev vê o problema onde faz sentido: direto na análise de código. O time de Segurança tem visibilidade sem depender de revisões manuais.


Dicas rápidas de uso eficiente

  • Use regras diferentes por branch. Exemplo: branch main bloqueia PRs com falhas críticas, branch de feature apenas gera alerta.
  • Combine com GuardDuty para runtime, pegando comportamentos anômalos depois do deploy.
  • Mantenha o CodeBuild apenas com lint e testes unitários, usando o Inspector Code Security só no PR, para deixar builds mais rápidos.
  • Sempre configure IAM com permissões mínimas e use Service Control Policies para ambientes multi-conta.

Recursos Adicionais