
Varredura automatizada de vulnerabilidades Snyk para dependências e imagens Docker no Bitbucket Pipelines, com limites de gravidade e opções de monitoramento.
Este pipe usa o Snyk para encontrar, corrigir e monitorar vulnerabilidades conhecidas nas dependências do seu aplicativo e na imagem docker.
Adicione o seguinte trecho à seção de script do seu arquivo bitbucket-pipelines.yml:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
| Variable | Usage |
|---|---|
| SNYK_TOKEN (*) | O Token da API do Snyk. |
| LANGUAGE (*) | A linguagem de desenvolvimento (ex.: node, ruby, composer, dotnet ou docker). Consulte Dockerhub para uma lista completa de possíveis tags. OBSERVAÇÃO: Ao usar com SNYK_BASE_IMAGE, este campo se refere à tag da sua imagem base |
| IMAGE_NAME (*) | Para a linguagem docker, a imagem na qual fazer uma verificação docker. |
| SNYK_BASE_IMAGE | Forneça sua própria imagem base se não desejar usar as Imagens Snyk Padrão: snyk/snyk. OBSERVAÇÃO: LANGUAGE se referirá à tag da sua imagem base; certifique-se de que a tag seja válida |
| CODE_INSIGHTS_RESULTS | Criar relatório de Code Insight com os resultados do teste do Snyk. Padrão: false. |
| SNYK_TEST_JSON_INPUT | Use se você quiser apenas criar um relatório de Code Insights a partir de uma saída de snyk test --json gerada anteriormente. Veja o exemplo abaixo na seção "Gerando o relatório de Code Insights a partir de uma saída JSON existente do Snyk". |
| PROTECT | Isso aplicará os patches especificados no seu arquivo .snyk ao sistema de arquivos local. (Após executar o Snyk Wizard) Padrão: false. |
| DONT_BREAK_BUILD | Continuar o build apesar de problemas encontrados. Padrão: false. |
| MONITOR | Registrar um snapshot do projeto na interface do Snyk e continuar monitorando após o teste inicial. Padrão: false. |
| SEVERITY_THRESHOLD | Relata problemas de gravidade igual ou superior ao nível fornecido. Valores permitidos: low, med, high, critical. Padrão: low. |
| ORGANIZATION | Organização para executar a CLI. Padrão: nenhuma. |
| PROJECT_FOLDER |
(*) = variável obrigatória.
Ao integrar o Snyk ao Bitbucket Pipelines, você pode testar, corrigir e monitorar continuamente seu código em busca de vulnerabilidades conhecidas nas suas dependências e na imagem docker.
Para saber mais sobre o Snyk, visite nosso site.
Para linguagens / gerenciadores de pacotes com ambientes mais avançados, como Java com Maven ou Gradle, você deve usar diretamente a CLI do Snyk no seu pipeline. Veja o exemplo "Usando diretamente a CLI do Snyk". Se você também quiser gerar um relatório de Code Insights, pode fornecer a saída do teste da CLI do Snyk para este Pipe - veja o exemplo "Gerando o relatório de Code Insights a partir de uma saída JSON existente do Snyk".
O Token da API do Snyk é necessário para usar este pipe.
Usa o Snyk para verificar um aplicativo Node.js e interromper o build se alguma vulnerabilidade for encontrada.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Usa uma imagem Docker personalizada fornecida para executar suas verificações do Snyk. Útil se você não deseja usar as Imagens Snyk padrão. A imagem terá o formato <MY_CUSTOM_IMAGE>:<TAG>, onde MY_CUSTOM_IMAGE e TAG correspondem respectivamente às variáveis SNYK_BASE_IMAGE e LANGUAGE.
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### Exemplo básico de verificação de imagem Docker
Usa o Snyk para verificar uma imagem Docker e interromper o build se alguma vulnerabilidade for encontrada.
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
Isso é especialmente relevante para linguagens que possuem ambientes de build mais complexos - por exemplo, Java com Maven ou Gradle. Nesses cenários, você pode testar seu aplicativo com a CLI do Snyk usando alguma variação de snyk test. A maneira mais fácil de instalar a CLI do Snyk é com npm (npm install -g snyk), mas se o npm não estiver disponível no seu ambiente de build, você pode baixar um binário usando curl de https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
Isso é especialmente relevante para linguagens que possuem ambientes de build mais complexos - por exemplo, Java com Maven ou Gradle. Nesses cenários, você pode testar seu aplicativo com a CLI do Snyk usando alguma variação de snyk test --json > snyk-test-output.json e então encaminhar o arquivo de saída para o Pipe para gerar um relatório de Code Insights. A maneira mais fácil de instalar a CLI do Snyk é com npm (npm install -g snyk), mas se o npm não estiver disponível no seu ambiente de build, você pode baixar um binário usando curl de https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
Aplique patches do Snyk a um aplicativo Node.js e continue verificando as dependências apenas para vulnerabilidades de gravidade crítica, mas sem falhar o build se alguma for encontrada. Além disso, opte por monitorar os estados das dependências no Snyk.io para receber alertas se novas vulnerabilidades forem encontradas. Em seguida, prossiga para construir a imagem Docker e verificá-la em busca de vulnerabilidades de gravidade crítica.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
Para clientes que usam instâncias não padrão do Snyk, o uso de SNYK_API é obrigatório para especificar a URL. Isso se aplica a clientes MT-EU, MT-AU e de inquilino único.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
Para garantir a estabilidade e a qualidade de longo prazo deste projeto, estamos migrando para um modelo de contribuição fechada a partir de agosto de 2025. Essa mudança permite que nossa equipe principal se concentre em um roteiro de desenvolvimento centralizado e em um rigoroso controle de qualidade, o que é essencial para um componente com uso tão extenso.
Todo o nosso desenvolvimento permanecerá público para transparência. Agradecemos à comunidade pelo apoio e pelas contribuições valiosas.
As issues do GitHub foram desativadas neste repositório como parte de nossa mudança para um modelo de contribuição fechada. A equipe de suporte do Snyk não monitora ativamente as issues do GitHub em nenhum projeto de desenvolvimento do Snyk.
Para obter ajuda com os produtos do Snyk, use a página de suporte do Snyk, que é a maneira mais rápida de obter assistência.
Copyright (c) 2019 Snyk Ltd. e outros. Licenciado sob Apache 2.0, consulte o arquivo LICENSE.txt.
A pasta na qual o projeto reside. Padrão: .. |
| TARGET_FILE | O arquivo de pacote (ex.: package.json); equivalente a --file= na CLI. Para Docker deve apontar para o Dockerfile. Padrão: nenhum. |
| EXTRA_ARGS | Argumentos extras a serem passados para a CLI do snyk. Padrão: nenhum. |
| DEBUG | Ativar informações extras de depuração. Padrão: false. |
| SNYK_API | Especifica o endpoint da API do Snyk. Padrão: https://api.snyk.io (ambiente padrão Snyk MT-US) |