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
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
temporariamenteEssa 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"
- 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)