Aula 20 - Projeto Capstone: Pipeline DevSecOps Autônomo Hardened 🚀
Objetivo Pedagógico
Objetivo: Engenhar um pipeline DevSecOps integralmente blindado (Hardened): verificação de dependências (SCA), SAST com Semgrep, auditoria de imagens Docker com Trivy, geração de SBOM e assinatura criptográfica de artefatos com Sigstore Cosign atendendo aos níveis de conformidade SLSA.
📑 1. Fundamentos Teóricos & Análise Técnica
A segurança contemporânea da cadeia de suprimentos de software exige aderência a frameworks formais como o SLSA (Supply-chain Levels for Software Artifacts).
O Projeto Capstone de Desenvolvimento Seguro consolida uma esteira industrial de integridade de software: 1. Verificação de Proveniência e SLSA: - Garantir que o artefato binário ou contêiner foi comprovadamente gerado a partir do código-fonte auditado, dentro de um ambiente de compilação confiável e isolado, impedindo a injeção de binários adulterados por terceiros. 2. Varredura Completa de Contêineres com Trivy: - Auditoria não apenas das dependências de aplicação (npm, pip, go modules), mas de todas as camadas do sistema operacional do contêiner (pacotes debian/alpine, bibliotecas compartilhadas C, CVEs de kernel). 3. Software Bill of Materials (SBOM) Padronizado: - Geração automática de inventários em formato SPDX ou CycloneDX, permitindo consulta imediata de impacto caso novas vulnerabilidades zero-day (ex: Log4Shell) surjam na indústria. 4. Assinatura e Verificação Criptográfica com Sigstore Cosign: - As imagens de contêiner geradas pelo build são assinadas digitalmente com chaves transitórias no registry corporativo. - O cluster de produção (Kubernetes) utiliza controladores de admissão (ex: Kyverno) para rejeitar compulsóriamente qualquer imagem que não possua a assinatura válida do pipeline oficial de DevSecOps.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Commit["Commit Assinado no Git"] --> SCA["SCA: Varredura de Dependências"]
SCA --> SAST["SAST: Análise de Código e Segredos"]
SAST --> Build["Build Seguro em Runner Isolado"]
Build --> Scan["Trivy: Scanner de Vulnerabilidades da Imagem"]
Scan --> SBOM["Geração de SBOM (CycloneDX / SPDX)"]
SBOM --> Sign["Sigstore Cosign: Assinatura Criptográfica da Imagem"]
Sign --> Registry["Push para Container Registry Corporativo"]
Registry --> K8s["Kubernetes Admission Controller (Kyverno)"]
K8s --> Deploy{"Assinatura Válida?"}
Deploy -- Sim --> Pod["Execução do Pod em Produção"]
Deploy -- Não --> Rejection["Bloqueio Imediato do Pod"]
style Commit fill:#e1f5fe,stroke:#01579b
style Scan fill:#fff3e0,stroke:#e65100
style Sign fill:#f3e5f5,stroke:#7b1fa2
style Pod fill:#e8f5e9,stroke:#2e7d32
style Rejection fill:#ffebee,stroke:#c62828 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Assinatura Keyless com Sigstore: Uso de identidades OpenID Connect e transparência criptográfica pública (Rekor) para assinar contêineres sem gestão de chaves privadas locais. - Controle de Admissão em Runtime: Garantia de que contêineres não assinados ou com vulnerabilidades críticas sejam fisicamente impedidos de subir em produção. - Auditoria de Base Images Mínimas: Uso de imagens base distroless ou scratch sem shells interativos para reduzir drasticamente a superfície de ataque. - Conformidade SLSA Level 3: Prevenção de ataques de substituição de dependências e ataques de homem-no-meio no processo de compilação.
🛠️ 2. Implementação Prática em Engenharia de DevSecOps, SLSA Framework e Assinatura Cosign
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// devsecops_hardened_capstone.yml (Pipeline DevSecOps Completo com Trivy, SBOM e Cosign)
name: Hardened DevSecOps Pipeline
on:
push:
branches: [main]
permissions:
contents: read
packages: write
id-token: write
jobs:
security-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Análise Estática de Segurança (Semgrep)
uses: returntocorp/semgrep-action@v1
with:
config: >-
p/security-audit
p/owasp-top-ten
- name: Build do Contêiner
run: |
docker build -t ghcr.io/${{ github.repository }}:latest .
- name: Varredura de Imagem e Sistema Operacional com Trivy
uses: aquasecurity/trivy-action@master
with:
image-ref: ghcr.io/${{ github.repository }}:latest
format: 'table'
exit-code: '1' # Quebra o build se houver vulnerabilidade CRITICAL
ignore-unfixed: true
severity: 'CRITICAL'
- name: Instalar Sigstore Cosign
uses: sigstore/cosign-installer@v3.5.0
- name: Assinar Imagem Criptograficamente (Keyless Signing)
run: |
echo "Assinando imagem com identidade OIDC do pipeline..."
cosign sign --yes ghcr.io/${{ github.repository }}:latest
💡 Análise Passo a Passo do Código
- Qualificação com Semgrep: Interrompe o fluxo caso vulnerabilidades arquiteturais de código sejam detectadas.
- Trivy com
exit-code: 1: Impõe barreira absoluta contra publicação de contêineres contendo vulnerabilidades críticas não corrigidas. - Assinatura com Cosign: Garante rastreabilidade matemática de proveniência para validação em runtime por admission controllers.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto