DEV Community

Cover image for Como utilizar as imagens docker da Veracode para automatizar as integrações SAST
Lucas Santos Ferreira for M3Corp

Posted on

Como utilizar as imagens docker da Veracode para automatizar as integrações SAST

No mundo de DevOps temos o Docker engine como um grande auxiliador dentro das etapas de desenvolvimento para testes, build, homologação e etc.

Dentro de um pipeline CI/CD, alguns players oferecem os recursos dos containers docker para facilitar os testes e automações, assim cada etapa como: job, task ou step, podem ser facilmente executadas sem a necessidade de se preocupar em instalar dependências e realizar configurações que consomem tempo.

Nesse artigo, iremos entender um pouco sobre como podemos aplicar a estratégia de esteira DevSecOps utilizando imagens de container Docker para automatizar Scans SAST com a Veracode.


Abaixo iremos utilizar como exemplo o Github Actions, mas isso poderia ser aplicado a qualquer outra ferramenta CI/CD adaptando o uso de acordo com a respectiva solução.


As imagens oficiais Veracode podem ser encontradas diretamente no Dockerhub Veracode. Elas são constantemente atualizadas e hardenizadas para garantir que tudo funcione da forma mais segura. Logo que um novo API Wrapper é lançado, automaticamente já será anexado a uma nova versão da imagem, garantindo que tenhamos os recursos mais atualizados já disponíveis.


Exemplo abaixo será usado um exemplo de projeto em Django (PyGoat):

1. Etapa - SAST Policy Upload and Scan

  Veracode-SAST-Policy-Scan:
    runs-on: ubuntu-latest
    container:
      image: veracode/api-wrapper-java:latest
      options: --user root
    steps:
    - uses: actions/checkout@master

    - name: scan 
      run: |
          zip -r pygoat.zip . -i '*.py' '*.html' '*.js'
          java -jar /opt/veracode/api-wrapper.jar -vid "${{ secrets.VID }}" -vkey "${{ secrets.VKEY }}" -action UploadAndScan -createprofile false -appname "Pygoat-Showroom" -version "${{ github.run_id }}" -filepath pygoat.zip -scantimeout 20

Enter fullscreen mode Exit fullscreen mode
  • No primeiro exemplo temos o SAST Policy Scan sendo executado a partir da imagem veracode/api-wrapper-java:latest

  • Por padrão a imagem roda com um usuário não privilegiado e, para executar todas ações necessárias, utilizamos o recurso de --user root temporariamente

  • Essa imagem já contém o CLI do ZIP instalado, assim evita que tenhamos que criar uma etapa anterior de ZIP ou Archive, salvar esse artefato com a aplicação dentro e executar em outro container para Upload and Scan ou até mesmo instalar o ZIP dentro a imagem utilizada

  • No ZIP, estamos solicitando que seja incluso somente os arquivos referente à aplicação, assim o artefato terá seu tamanho otimizado e, também ignoramos outros arquivos que não fazem sentido para o scan SAST como: PDF, JPG, etc.

  • Em seguida, executamos o API Wrapper com a action de UploadAndScan para o SAST

2. Etapa - SAST Pipeline Scan

   Veracode-SAST-Pipeline-Scan:
    runs-on: ubuntu-latest
    container:
      image: veracode/pipeline-scan:latest
      options: --user root
    steps:
      - name: checkout
        uses: actions/checkout@master

      - name: scan 
        run: |
          zip -r -v pygoat.zip . -i '*.py' '*.js' '*.html'  
          java -jar /opt/veracode/pipeline-scan.jar -vid "${{ secrets.VID }}" -vkey "${{ secrets.VKEY }}" -f pygoat.zip -p "PyGoat-Showroom" -pn "Veracode Recommended Medium"
Enter fullscreen mode Exit fullscreen mode
  • O Pipeline Scan também possui uma imagem Docker dedicada veracode/pipeline-scan:latest onde o seu uso é praticamente igual a da Etapa - SAST Policy Upload and Scan

Tanto a imagem veracode/api-wrapper-java quanto veracode/api-signing podem ser utilizadas para automatizar outras tarefas além do SAST, pois elas interagem diretamente sobre as APIs da Veracode, assim podemos por exemplo: criar usuários, times, download de relatórios, busca de informações e trigger para execução de uma análise Dinâmica (DAST).

Top comments (0)