Segurança em cada etapa
Tags: security, tutorial, beginners, veracode
Published: 2021-01-23 01:35:41

Pensando num fluxo comum de desenvolvimento, começando na escrita do código até a publicação do sistema por meio de alguma ferramenta de CD/CI, quais seriam as etapas e as ferramentas que poderíamos utilizar para aumentar a segurança no nosso processo de desenvolvimento? 

Existem muitas respostas para isso, e nesse artigo vamos tentar ilustrar esse cenário utilizando ferramentas da Microsoft em conjunto com as da Veracode. 

**Definindo as etapas**
Vamos montar uma estrutura simples para ilustrarmos: 
1. Escrita do código
1. Processo de build
1. Deploy no ambiente

Esse vai ser nosso fluxo de exemplo. 

**Escrita do código**
Pensando na parte da escrita, existem algumas ferramentas que nos permitem validar o código que estamos escrevendo. No caso do fornecedor que utilizaremos aqui, nossa resposta será o Greenlight. 
Com ele podemos analisar possíveis falhas assim que salvamos nossos arquivos, podendo resolver os problemas apontados antes mesmo de enviarmos o código para o repositório ou para a próxima etapa. 

**Processo de build**
Nesta etapa, optaremos por analisar nosso projeto como um todo e para essa validação podemos utilizar duas ferramentas em conjunto, o SAST que faz uma analise estática do projeto e o SCA, que vai verificar falhas em componentes de terceiros que utilizamos, o interessante dessa validação é que ela não vai verificar apenas falhas de segurança mas também possíveis problemas com licenciamento (como o uso de licenças que tornam obrigatório que o seu código seja aberto).
Numa analise estática, é criado um modelo do projeto (podemos pensar que ele será compilado para essa analise) que será validado buscando falhas de segurança ou pontos de atenção. 
Com os retornos dessa etapa, podemos corrigir os erros e aprimorar nosso projeto. 

**Deploy no ambiente**
Refinamos nosso projeto com as etapas anteriores e agora é a hora de deixarmos disponível nossa solução para os usuários, mas será que não temos nada para esse cenário? 
E a resposta é que temos algumas soluções sim, mas elas vão depender muito do tipo de projeto que está trabalhando. 
Pensando em Veracode, temos algumas opções para projetos mais relacionados a WEB, como uma [analise dinâmica](https://help.veracode.com/r/OZJ0LCrqCUqbxFvNFcJnWQ/root) e um serviço de [pen test](https://help.veracode.com/r/Q1kdnfv1dleCE31uWgTKzw/root).
Numa analise dinâmica, podemos exemplifica-la como um processo onde ferramentas automatizadas vão simular o uso da plataforma, "imitando" o que um invasor tentaria fazer para burlar nosso sistema.

**Integrando isso com ferramentas Microsoft**
Podemos criar o ambiente do nosso cenário utilizando ferramentas MS, como o VS Code em conjunto com o Azure DevOps. 
O Greenlight se integra com o Code e podemos utilizar nos pipelines do Azure a analise SAST via plugin ou via linha de comando. 
Para complementar esse artigo sem estende-lo demais, vou recomendar a leitura de alguns outros que escrevi que são mais específicos para alguns pontos e documentações oficiais com explicações sobre como configurar: 
[Greenlight no VS Code](https://help.veracode.com/r/Pik27SOP_AxJoGJrh7OENQ/a0K~2J~SDhXl2lyhSFP2HA)
[Usando a API da Veracode no Windows](https://igd753.medium.com/veracode-como-usar-o-wrapper-para-analisar-arquivos-ab10716dabc7)
[Encontrando as analises](https://igd753.medium.com/veracode-encontrando-as-analises-ca02f7bdc5e8)
[Integrando com o Azure Pipelines](https://dev.to/igd753/integrando-veracode-com-azure-devops-408f)