📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados em Módulo 12: Desenvolvimento Seguro. Recomendado revisar antes de começar.

🛡️ Pipeline DevSecOps: Análise SAST com Semgrep & Trivy

v1.0 — Engenharia de Software & Práticas Profissionais

Trilha de Especialização Pedagógica


🎯 Objetivo & Escopo do Projeto

Pipeline automatizado de segurança DevSecOps com análise estática de código (SAST) via Semgrep, escaneamento de vulnerabilidades em dependências (SCA) e detecção de CVEs em imagens Docker com Trivy.


🛠️ Código de Exemplo da Implementação

name: DevSecOps Security Gate
on: [push, pull_request]

jobs:
  sast_scan:
    name: Semgrep SAST Analysis
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Semgrep SAST
        run: semgrep --config=auto --error

  container_scan:
    name: Trivy Container Vulnerability Scan
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run Trivy Scan
        uses: aquasecurity/trivy-action@master
        with:
          scan-type: 'fs'
          severity: 'CRITICAL,HIGH'
          exit-code: '1'


🚀 Como Executar no Laboratório

1. Abra o terminal na pasta deste projeto

No seu editor/IDE, abra a pasta deste projeto (File > Open Folder) ou navegue via terminal:

cd seguranca_03_pipeline_devsecops_sast

2. Execute a aplicação ou testes

docker-compose up -d
python audit_security.py

[!TIP] Dica para execução a partir da raiz do repositório: Se você abriu o repositório completo no VS Code, basta navegar até a pasta antes de executar: cd catalogo_projetos/seguranca_03_pipeline_devsecops_sast


🏛️ Arquitetura Visual & Engenharia de Infraestrutura

O diagrama abaixo ilustra a topologia de componentes, balanceamento, esteiras de automação e observabilidade na subpasta .github/:

Arquitetura de Infraestrutura

flowchart TD
    subgraph Config["Configuração & IaC"]
        C1["Manifestos Declarativos"] --> C2["Variáveis & Segredos"]
    end
    subgraph Orquestracao["Orquestração & Redes"]
        O1["Load Balancer / Ingress"] --> O2["Pods / Contêineres de Serviço"]
    end
    subgraph Observabilidade["Observabilidade & Segurança"]
        M1["Telemetria Prometheus / k6"] --> M2["Scanners SAST & Dashboards"]
    end
    subgraph Qualidade["Homologação & Qualidade"]
        Q1["Automação CI/CD"] --> Q2["Checkpoints CP-01..05 PASS"]
    end

    Config --> Orquestracao
    Orquestracao --> Observabilidade
    Observabilidade --> Qualidade

    style Config fill:#e3f2fd,stroke:#1976d2,stroke-width:1.5px
    style Orquestracao fill:#fffde7,stroke:#fbc02d,stroke-width:1.5px
    style Observabilidade fill:#e8f5e9,stroke:#388e3c,stroke-width:1.5px
    style Qualidade fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px

🎯 Engenharia de Requisitos & Modelagem Formal

👤 User Stories (Histórias de Usuário)

ID Persona História de Usuário Critério de Aceite Prioridade
US-01 Engenheiro de DevSecOps Desejo análise estática de segurança (SAST) com Semgrep em Pull Requests Detecção automática de vulnerabilidades OWASP Top 10 antes do merge Alta
US-02 Especialista em Segurança de Nuvem Desejo escanear imagens Docker com Trivy em busca de CVEs críticas Bloqueio de imagens contendo pacotes desatualizados com severidade CRITICAL Alta
US-03 Arquiteto de Conformidade Desejo auditoria de dependências (SCA) verificando licenças e CVEs Análise de lockfiles gerando relatório de vulnerabilidades conhecidas Alta
US-04 Líder Técnico Desejo relatórios SARIF enviados para o painel de Security do GitHub Visualização dos apontamentos diretamente nas linhas alteradas do PR Média
US-05 Auditor de Segurança Desejo testes com código intencionalmente vulnerável validando os bloqueios Repositório de testes com payloads comprovando que a pipeline barra falhas Média

⚙️ Requisitos Funcionais (RF)

ID Descrição do Requisito Criticidade
RF-01 Workflow de análise SAST configurado com regras Semgrep Security Audit Alta
RF-02 Etapa de Container Scanning com Trivy gerando relatórios de CVE Alta
RF-03 Verificação SCA de dependências de terceiros com thresholds de severidade Alta
RF-04 Exportação de resultados em padrão SARIF (Static Analysis Results Interchange) Média
RF-05 Módulo de testes automatizados com validação de políticas de segurança Média

🛡️ Requisitos Não-Funcionais (RNF)

ID Especificação Arquitetural Criticidade
RNF-01 Zero tolerância para CVEs críticas com score CVSS superior a 9.0 Alta
RNF-02 Tempo de varredura estática de segurança inferior a 90 segundos Alta
RNF-03 Isolamento de scanners sem necessidade de privilégios de root Alta
RNF-04 Isolamento estrito de tags Liquid nas referências em documentação Alta
RNF-05 Workflows organizados na subpasta .github/workflows/ Alta

🔗 Matriz de Rastreabilidade (RTM)

User Story Requisito Funcional Requisito Não-Funcional Módulo / Artefato de Código Status de Homologação
US-01 RF-01 RNF-01, RNF-04 .github/workflows/sast.yml Testado
US-02 RF-02 RNF-01, RNF-03 .github/workflows/container-scan.yml Testado
US-03 RF-03 RNF-01, RNF-02 .github/workflows/sast.yml Testado
US-04 RF-04 RNF-02, RNF-04 .github/workflows/sast.yml Testado
US-05 RF-05 RNF-01, RNF-05 .github/workflows/test_security.sh Testado

🏁 Checkpoints de Qualidade & Homologação

Checkpoint Escopo da Validação Artefato Verificado Status
CP-01 Configuração Declarativa do Ambiente .github/ PASS ✅
CP-02 Provisionamento & Orquestração Deployments / Services PASS ✅
CP-03 Redes, Proxies & Segurança de Borda Ingress / Security Groups PASS ✅
CP-04 Observabilidade, Métricas & SAST Metrics / Scanners PASS ✅
CP-05 Homologação com Suíte de Testes Test Suite / CI Gate PASS ✅