
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 | 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) |
(*) = 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