ESPAÇO PUBLICITÁRIO DISPONÍVEL · FALE CONOSCO

Como integrar o Snyk DeepCode AI aos PR checks do GitHub e pipelines de CI/CD para bloquear vulnerabilidades no código

365Finds Editorial
11.430 artigos Wiki catalogados

Use o 365 Wiki com sua IA

Copie o prompt abaixo, cole na IA que você já usa e faça sua pergunta.

Baixar o Skill completo

Experimente primeiro com o prompt. Se você usa o 365 Wiki com frequência, instale o Skill completo do 365Wiki para não precisar colá-lo novamente. Se não usa uma IA específica, as versões web do Gemini ou Microsoft Copilot também servem.

Identificar e bloquear falhas de segurança antes que o código atinja os ambientes de produção é o pilar fundamental do DevSecOps moderno. As ferramentas tradicionais de testes estáticos de segurança de aplicações (SAST) costumam enfrentar desafios severos: varreduras lentas, excesso de falsos positivos e relatórios complexos que sobrecarregam os desenvolvedores. O Snyk Code supera essas limitações por meio do DeepCode AI, um motor que combina inteligência artificial simbólica (regras de análise semântica) com modelos de aprendizado de máquina treinados em código seguro, analisando fluxos de execução em segundos com alta precisão.

Para impedir com eficácia a mesclagem de código vulnerável em branches protegidas, as equipes de DevOps e engenharia de software adotam uma estratégia de defesa em dois níveis:

  1. Verificações nativas de Pull Request no GitHub (Integração SCM): Varreduras automáticas de alterações (delta) executadas no momento da abertura ou atualização do PR, exibindo anotações nas linhas de código e resumos na interface do GitHub. O merge é bloqueado por meio das Regras de Proteção de Branch.
  2. Portões de qualidade em pipelines de CI/CD (Snyk CLI e GitHub Actions): Execução determinística do comando snyk code test com limites de severidade pré-definidos, interrompendo o pipeline de compilação ou deploy caso vulnerabilidades críticas sejam introduzidas.

A seguir, apresentamos o guia prático para configurar ambas as camadas, estabelecer políticas de bloqueio e acelerar a remediação com a IA do Snyk.


1. Como o Snyk DeepCode AI opera nos fluxos de desenvolvimento

O DeepCode AI atua convertendo o código-fonte em Árvores de Sintaxe Abstrata (AST) e Representações Intermediárias (IR), viabilizando uma análise profunda de fluxo de dados e propagação de entradas inseguras (Taint Analysis). Ao contrário de linters baseados em padrões de texto ou de grandes modelos de linguagem (LLMs) puramente generativos, que frequentemente sofrem com alucinações, o DeepCode AI utiliza uma arquitetura híbrida:

Como a maioria das varreduras é concluída em menos de um minuto, o DeepCode AI se integra de forma transparente à rotina diária de revisão de código sem prejudicar a agilidade de entrega.


2. Nível 1: Configurando as verificações nativas de Pull Request no GitHub

As verificações nativas de PR utilizam webhooks entre o Snyk e o GitHub para avaliar o código diretamente na interface de colaboração, sem consumir minutos de runners do seu ambiente de CI.

Passo 1: Pré-requisitos

Passo 2: Configurar as condições de falha no Snyk

  1. Acesse o painel web do Snyk e vá para Settings > Integrations > GitHub.
  2. Localize a seção Pull Request Checks.
  3. Na área Code Analysis (Snyk Code):
    • Ative a opção Code Analysis (alterne para Enabled).
    • Configure as Fail conditions (Condições de falha): Selecione o nível de severidade que fará com que o status check falhe (por exemplo, High). Ao escolher High, apenas vulnerabilidades de nível alto causarão a reprovação da checagem, enquanto falhas de níveis baixo e médio poderão ser tratadas sem interromper o merge.
    • (Opcional) Ative a opção Only fail when the issues found have a fix available se a política da sua equipe exigir bloqueio apenas quando o Snyk for capaz de fornecer uma correção automática.
  4. Salve as alterações. Essas regras podem ser aplicadas globalmente ou personalizadas por projeto.

Passo 3: Ativar relatórios de resumo e comentários em linha

Nas configurações de experiência de PR do Snyk:


3. Bloqueio obrigatório de merges com regras de proteção de branch no GitHub

Ter o PR check do Snyk reportando falha não impede por si só a ação de merge por parte dos desenvolvedores. Para tornar o bloqueio mandatório, é indispensável configurar as Branch Protection Rules (Regras de proteção de branch) no GitHub.

Siga os passos abaixo:

  1. No repositório do GitHub, clique em Settings > Branches.
  2. Na seção Branch protection rules, clique em Add rule (ou edite a regra da branch principal, como main ou production).
  3. Marque a opção Require a pull request before merging.
  4. Marque a opção Require status checks to pass before merging.
  5. Selecione Require branches to be up to date before merging, garantindo que as alterações sejam validadas contra a versão mais recente da branch base.
  6. No campo de busca de verificações de status, pesquise e selecione o check do Snyk Code (geralmente identificado como snyk/code ou code/snyk).
  7. Clique em Save changes no final da página.

A partir desse momento, o GitHub desativará o botão "Merge pull request" sempre que o DeepCode AI apontar falhas de código que atinjam o limite de severidade estipulado.


4. Nível 2: Portões de segurança em pipelines CI/CD com GitHub Actions

Além das checagens no fluxo de PR, rodar o snyk code test diretamente no pipeline de CI/CD estabelece uma barreira de segurança determinística para branches principais, builds noturnos e deploys automatizados.

Armazenando o token de autenticação

  1. Obtenha um Token de Conta de Serviço (Service Account Token) ou Token de API no painel do Snyk.
  2. No repositório do GitHub, navegue até Settings > Secrets and variables > Actions.
  3. Crie um segredo de repositório chamado SNYK_TOKEN e insira o valor da chave.

Configurando o arquivo de workflow do GitHub Actions

Crie o arquivo .github/workflows/snyk-code.yml:

name: Snyk DeepCode AI Security Scan

on:
  push:
    branches: [ "main", "develop" ]
  pull_request:
    branches: [ "main" ]

jobs:
  security-gate:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write

    steps:
      - name: Checkout Source Code
        uses: actions/checkout@v4

      - name: Install Snyk CLI
        uses: snyk/actions/setup@master

      - name: Run Snyk DeepCode AI SAST Scan
        env:
          SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
        run: |
          snyk code test \
            --severity-threshold=high \
            --sarif-file-output=snyk-code.sarif

      - name: Upload SARIF Results to GitHub Code Scanning
        if: always()
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: snyk-code.sarif

Códigos de saída e parâmetros da CLI

O utilitário snyk code test adota códigos de saída padronizados:

Visualização centralizada no GitHub Advanced Security

Com a exportação no formato SARIF (--sarif-file-output=snyk-code.sarif) e o upload via github/codeql-action/upload-sarif, todos os alertas do DeepCode AI passam a ser exibidos na aba Security > Code scanning alerts do GitHub, unificando a gestão de vulnerabilidades para toda a organização.


5. Fluxo de correção: DeepCode AI Fix e prevenção local

A eficácia do bloqueio depende da facilidade com que o desenvolvedor consegue solucionar a falha sem atritos.

  1. Correção automática em um clique no PR: Ao identificar um problema no PR, o Snyk formula uma solução de código. Em ecossistemas suportados, o desenvolvedor pode acionar a criação automática de um PR de correção, aplicando validações e tratamentos recomendados.
  2. Shift-Left no editor de código: Incentive a equipe a utilizar a extensão Snyk Security no VS Code, IntelliJ IDEA ou Eclipse. Como o plugin se comunica diretamente com o motor DeepCode AI, o desenvolvedor visualiza as falhas e caminhos de contaminação em tempo real enquanto digita o código, antes mesmo de realizar o commit.
  3. Ignorando diretórios irrelevantes com .dcignore: Para evitar a análise de dependências externas empacotadas, mocks de testes automatizados ou arquivos de compilação, crie um arquivo .dcignore na raiz do repositório:
    dist/
    build/
    vendor/
    **/*.spec.ts
    **/*.test.js
    

6. Estratégia de implantação progressiva para equipes de engenharia

Impor o bloqueio rigoroso em todos os projetos legados logo no primeiro dia pode gerar interrupções nos prazos e resistência técnica. Recomenda-se uma adoção em três fases:

FaseConfiguração do PR CheckComportamento do Pipeline CI/CDMeta da Equipe
Fase 1: Visibilidade e DiagnósticoPR Checks ativados com comentários em linha, porém em modo opcional (não bloqueante) no GitHub.CI executa snyk code test com a flag continue-on-error: true e gera relatórios SARIF.Adaptar a equipe aos relatórios do DeepCode AI e mapear a dívida técnica de segurança existente.
Fase 2: Bloqueio de Alto RiscoProteção de branch ativada como obrigatória; gatilho de falha configurado para High / Critical.Pipeline configurado para interromper deploys na presença de falhas altas (--severity-threshold=high).Impedir a entrada de falhas perigosas (como SQL Injection, RCE e credenciais expostas) na branch principal.
Fase 3: Governança ContínuaExpansão do bloqueio para severidade Medium em microsserviços críticos; uso contínuo do DeepCode AI Fix.Verificações periódicas com --report para sincronizar o inventário com o Snyk Web.Manter a taxa de novas falhas zerada e reduzir progressivamente o passivo de segurança.

Ao conectar as checagens nativas de PR do GitHub à proteção de branch e aos workflows do GitHub Actions, as equipes de engenharia criam um mecanismo automático de defesa com IA que eleva o nível de segurança do código sem desacelerar as entregas.


Referências