DEV Community

Cover image for Analisando IaC e Containers com Veracode
Ivo Dias for M3Corp

Posted on

Analisando IaC e Containers com Veracode

Recentemente a Veracode lançou uma nova ferramenta para fazer a análise de containers e infraestrutura como código, permitindo cobrir mais uma etapa de um ciclo de desenvolvimento.

Nesse exemplo, vamos utilizar como plataforma de CI/CD o Azure DevOps, um projeto de estudos para falhas em IaC e uma imagem de container descontinuada.

Para a autenticação, precisamos das credenciais de APIs.
A ferramenta funciona em Linux/Intel ou Mac[Intel/M1/M2].

Para iniciar nosso pipeline, vamos usar uma imagem padrão Linux e importar as variáveis de um grupo que criei com o nome de VeracodeIaC, armazenando os valores que pegamos no portal da Veracode com os nomes: VERACODE_API_KEY_ID e VERACODE_API_KEY_SECRET

Em YML, fica assim:

trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
- group: VeracodeIaC
Enter fullscreen mode Exit fullscreen mode

Em nosso fluxo, vamos fazer a análise e depois gerar um relatório, conhecido como SBOM. A ferramenta tem um uso bem simples, e você pode consultar todas as possibilidades na documentação.

A sintaxe básica é:
./veracode [scan/sbom] --source [Pasta/Container/Arquivo/URL do REPO] --type [Equivalente ao que foi passado no source] --format [Formatação da exibição]

Para deixar menos abstrato, no caso em que queremos fazer a análise e o SBOM do container, podemos fazer dessa forma:

./veracode scan --source google/cadvisor:latest --type image --format table
./veracode sbom --source google/cadvisor:latest --type image --format table
Enter fullscreen mode Exit fullscreen mode

Nos dois casos, passamos com parâmetro a imagem do container.

Para a análise do IaC, vamos passar a pasta para o scan e a URL do repositório para o SBOM:

./veracode scan --type directory --source ./terraform/ --format table
./veracode sbom --type repo --source https://github.com/IGDEXE/Terragoat --format table
Enter fullscreen mode Exit fullscreen mode

Pensando num pipeline, eu gosto da ideia de usar a formatação de tabela, para facilitar a leitura dos LOGs:
Tabela com os resultados do scan

Você pode consultar os exemplos de pipelines completos em nosso GitHub, mas para testar, recomendo que tente com o do Container, já que não precisa de nenhuma configuração adicional fora as variáveis:

trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
- group: VeracodeIaC

steps:

- script: |
    curl -fsS https://tools.veracode.com/veracode-cli/install | sh
  displayName: 'Configuração inicial'

- task: CmdLine@2
  inputs:
    script: './veracode scan --source google/cadvisor:latest --type image --format table'
  displayName: 'Scan'

- task: CmdLine@2
  inputs:
    script: './veracode sbom --source google/cadvisor:latest --type image --format table'
  displayName: 'SBOM'
Enter fullscreen mode Exit fullscreen mode

Para saber mais sobre a Veracode e solicitar um ambiente de testes, entre em contato.

Top comments (0)