Como Usar o Snyk para Garantir Segurança Total na Sua Pipeline de Automação

Snyk é uma plataforma de segurança para desenvolvedores. Integrando-se diretamente a ferramentas de desenvolvimento, fluxos de trabalhos e pipelines de automação, oSnyk possibilita que as equipes encontrem, priorizem e corrijam mais facilmente vulnerabilidades em códigos, dependências, contêineres e infraestrutura como código. Com o suporte do melhor aplicativo do setor e inteligência em segurança, o Snyk coloca a experiência em segurança no kit de ferramentas de todo desenvolvedor.

O Snyk tem suporte para as seguintes linguagens: Bazel, C, C++, Dart , Flutter, Elixir, Go, Java, Kotlin, Javascript, .NET, PHP, Python, Ruby, Swift, Typescript e VB.NET. Para saber mais, acesse este link.

Usos para o Snyk

Proteja seu código: use o Snyk Open Source para corrigir vulnerabilidades em suas dependências de código aberto e o Snyk Code para corrigir vulnerabilidades em seu código-fonte.

Proteja seus containers: use o Snyk Container para corrigir vulnerabilidades em imagens de containers e aplicações Kubernetes.

Proteja sua infraestrutura: use o Snyk Infrastructure as Code (IaC) para corrigir configurações incorretas em templates do Terraform, CloudFormation, Kubernetes e Azure. Use o IaC+ para corrigir configurações incorretas em contas da Amazon Web Services, assinaturas da Microsoft Azure e projetos do Google Cloud.

Snyk Container

O Snyk Container é uma ferramenta que ajuda a identificar e corrigir vulnerabilidades de segurança em contêineres de software. Ele é projetado para analisar imagens de contêineres e fornecer informações sobre quaisquer vulnerabilidades conhecidas presentes nessas imagens.

Ao usar o Snyk Container, você pode verificar se as imagens de contêineres que você está usando contêm componentes com vulnerabilidades conhecidas. Ele verifica o banco de dados de vulnerabilidades do Snyk para identificar quaisquer problemas de segurança e fornece informações detalhadas sobre as vulnerabilidades encontradas.

Além disso, o Snyk Container também pode ajudar a corrigir essas vulnerabilidades, fornecendo recomendações de patches ou atualizações para os componentes afetados. Isso ajuda a garantir que seus contêineres estejam protegidos contra possíveis ataques e vulnerabilidades conhecidas.

O Snyk Container é uma ferramenta útil para equipes de desenvolvimento e operações que desejam garantir a segurança de seus contêineres de software. Ele pode ser integrado a pipelines de CI/CD para automatizar a verificação de segurança de imagens de contêineres e garantir que apenas imagens seguras sejam implantadas em produção.

Test e Monitor

Test

O comando snyk container test é usado para testar a segurança de um contêiner Docker em relação a vulnerabilidades conhecidas.

Quando você executa o comando snyk container test, o Snyk analisa o contêiner Docker especificado e verifica se há vulnerabilidades conhecidas nas imagens e nas dependências do contêiner. Ele também fornece informações detalhadas sobre as vulnerabilidades encontradas, incluindo o nível de gravidade e as recomendações para corrigi-las.

Essa verificação de segurança é importante para garantir que os contêineres Docker utilizados em seus projetos estejam protegidos contra possíveis ataques e vulnerabilidades conhecidas.

Monitor

O comando snyk container monitor captura as camadas de imagem do contêiner e as dependências em um projeto e monitora esse snapshot em busca de vulnerabilidades, enviando os resultados para snyk.io.

Use o comando snyk container monitor antes de integrar seu código em produção, para tirar uma snapshot do código a ser monitorado, a fim de evitar a introdução de vulnerabilidades em produção. Escolha uma frequência de teste em suas configurações se você deseja alterar a frequência padrão, que é diária.

Se você fizer alterações no seu código, será necessário executar o comando snyk container monitor novamente.

Para obter mais informações, consulte Snyk CLI para segurança de contêineres.

Abaixo está um exemplo de uso que está disponível no repositório https://github.com/toolbox-playground/pipelines-seguranca-exemplo-basico da Toolbox Playground.

O ambiente em que este lab foi desenvolvido:

  • SO Ubuntu 24.04 LTS
  • Docker version 26.1.4, build 5650f9b
  • nodejs version v18.19.1
  • Python 3.12.3

Primeiros passos

1. Crie uma conta: Acesse o site do Snyk e crie uma conta.

2. Token: Após criar a conta, vá até Account Settings e copie o Auth Token para ser usado abaixo.

3. Certifique-se de ter o Nodejs instalado em sua máquina. Você pode baixar e instalar o Nodejs a partir do site oficial: https://nodejs.org/pt/download/package-manager/current.

4. Certifique-se de ter o Docker instalado em sua máquina. Você pode baixar e instalar o Docker a partir do site oficial: https://docs.docker.com/get-docker/.

Uso do CLI Snyk

1. Instale o pacote do Snyk com o seguinte comando:

npm install snyk -g

2. Após instalado, autentique usando o seu **Auth Token**:

snyk auth token

3. Clone o repositório https://github.com/toolbox-playground/pipelines-seguranca-exemplo-basico e acesse a pasta pipelines-seguranca-exemplo-basico/snyk/python.

4. Crie a imagem docker do app python com o seguinte comando:

docker build -t snyk-python:latest -f Dockerfile .

5. Após o build da imagem, rode o comando abaixo para testar a imagem:

snyk container test --docker snyk-python:latest --file=Dockerfile

Obs.: Esse comando irá gerar um relatório de falhas encontradas.

Resultado do comando acima
Resultado do comando acima

6. Para monitorar o código por meio da plataforma Snyk, rode o seguinte comando:

snyk container monitor --docker snyk-python:latest --file=Dockerfile --project-name=snyk-python
  • Esse comando irá gerar um um projeto no Snyk com o nome snyk-python.
  • Quando estiver usando uma Organização diferente, colocar no final do código ` — org=sua_org`, conforme o código abaixo:
snyk container monitor --docker snyk-python:latest --file=Dockerfile --project-name=snyk-python --org=sua_org
Se você fizer alterações no seu código, será necessário executar o comando monitor novamente.

Uso do Snyk no GitHub Actions

Crie um arquivo de fluxo de trabalho (workflow) no seu repositório. Você pode criar um arquivo chamado .github/workflows/snyk.yml e adicionar o seguinte conteúdo:

name: Security Check with Snyk
on:
  push:
    branches:
      - main  # Aciona o fluxo de trabalho quando houver push na brach main
    paths:
      - 'snyk/python/**'  # Aciona o fluxo de trabalho quando houver alterações no diretório 'snyk/python'
  pull_request:
    branches:
      - main # Aciona o fluxo de trabalho quando houver PR na brach main
    paths:
      - 'snyk/python/**'  # Aciona o fluxo de trabalho quando houver alterações no diretório 'snyk/python'
  workflow_dispatch:  # Aciona manualmente o fluxo de trabalho
    inputs:  # Define entradas para o fluxo de trabalho
      name:  # Define a entrada "name"
        description: 'Acionador manual do fluxo de trabalho'  # Descrição da entrada

jobs:
  snyk-scan:
    name: Snyk Security Check # Nome do trabalho
    runs-on: ubuntu-latest # Sistema operacional em que o trabalho será executado (no caso, Ubuntu)
    steps: # Passos a serem executados no trabalho
      - uses: actions/checkout@master # Passo para fazer o checkout do repositório

      - name: Docker Build
        run: docker build -t snyk-python:latest -f snyk/python/Dockerfile snyk/python # Constrói a imagem Docker

      - name: Install Snyk CLI # Instala a CLI do Snyk
        run: npm install -g snyk # Instala a CLI do Snyk

      - name: Authenticate with Snyk # Autentica com o Snyk
        run: snyk auth ${{ secrets.SNYK_TOKEN }} # Autenica com o Snyk usando o token
      
      - name: Run Snyk test # Executa o teste de segurança com o Snyk
        run: snyk container test --docker snyk-python:latest --file=snyk/python/Dockerfile
        continue-on-error: true # Continua mesmo com erro

      - name: Generate Snyk report # Gera o relatório do Snyk
        run: snyk container monitor --docker snyk-python:latest --file=snyk/python/Dockerfile --project-name=snyk-python

O exemplo acima é para código em Python. Para saber quais linguagens podem ser usadas no Github Actions acesse https://github.com/snyk/actions/tree/master.

secrets.SNYK_TOKEN

secrets.SNYK_TOKEN é uma variável de ambiente que armazena um token de autenticação necessário para acessar recursos protegidos no Snyk. Para armazená-la, siga os seguintes passos:

1. No seu repositório do GitHub, vá para as configurações do repositório.

2. Na seção Secrets ou Segredos, clique em New repository secret ou Novo segredo do repositório.

3. Digite SNYK_TOKEN como nome do segredo e cole o valor do token que você copiou anteriormente.

4. Clique em Add secret ou Adicionar segredo para salvar o token como um segredo do repositório.

Comandos com o Snyk

Além do comando container, o Snyk fornece outros comandos e verificações, como por exemplo o snyk code test, que testa quaisquer problemas de segurança conhecidos usando Análise de Código Estático. Segue o link para os comando do CLI Snyk https://docs.snyk.io/snyk-cli/cli-commands-and-options-summary.

Espero que o artigo ajude a manter seguro seu código, qualquer dúvida, entre em contato.

No próximo artigo irei falar sobre Trivy.

Todos os códigos de todos os artigos estão no repositório https://github.com/toolbox-playground/pipelines-seguranca-exemplo-basico.

Não leu os outros artigos, seguem os links: