Importação de falhas para o Azure Boards
Tags: veracode, security, devops, tutorial
Published: 2023-01-04 14:13:39

Antes de começarmos, vamos precisar ter as tasks da Veracode disponíveis, então caso não saiba como fazer isso, [clique aqui](https://dev.to/m3corp/veracode-utilizando-os-plug-ins-no-azure-devops-531i). 

A ideia desse artigo é mostrar como podemos criar um pipeline que vai pegar os resultados de um determinado projeto e importar para o Boards, sendo esse um template personalizado. 

Caso utilize o template padrão do Boards, o processo vai ser quase o mesmo, bastando ignorar a etapa de configuração das variáveis de ajuste. 

**Configurando a task do Boards**
Vamos fazer a autenticação com uma Service Connection.
O nome do perfil de Aplicação que queremos importar os resultados vai ser passado por meio de uma variável, para facilitar o processo de reaproveitar esse pipeline. 
Em **scanType** utilizamos a opção que mostra todos os tipos, já que queremos importar os resultados de todas as análises que foram feitas nesse projeto e em **importType** selecionamos para trazer apenas as falhas que não foram tratadas e violam a política.
Em **area** passamos um valor do Azure para colocar as falhas na mesma seção onde o projeto está armazenado nele. 
```
- task: Veracode Flaw Importer@3
  inputs:
    ConnectionDetailsSelection: 'Endpoint'
    AnalysisService: 'Veracode'
    veracodeAppProfile: '$(veracodeAppProfile)'
    scanType: 'Dynamic, Static, and Software Composition Analysis'
    importType: 'All Unmitigated Flaws Violating Policy'
    workItemType: 'Issue'
    area: '$(system.teamProject)'
    overwriteAreaPathInWorkItemsOnImport: true
    flawImportLimit: '1000'
  displayName: 'Veracode importando falhas'
```

Para o caso de utilizar um template personalizado, vamos precisar criar algumas variáveis adicionais, elas vão permitir que o Boards entenda os resultados da Veracode. Vamos colocar alguns valores padrões, mas caso seja preciso, pode alterar esses valores:
```
variables:
  enableCustomProcessTemplate: true
  customWorkItemType: "Issue"
  customPTActiveStatus: "Working"
  customPTNewStatus: "New"
  customPTResolvedStatus: "Fixed"
  customPTCloseStatus: "Closed"
```

Com esses valores mapeados, a importação pode funcionar em templates personalizados. Pode saber mais [aqui](https://docs.veracode.com/r/Use_Custom_Process_Templates_to_Import_Flaws_into_Azure_DevOps). 

**Pipeline Completo**
No final, nosso YAML vai ficar dessa forma:
```
trigger:
- master

pool:
  vmImage: ubuntu-latest

variables:
  veracodeAppProfile: $(Build.Repository.Name)
  enableCustomProcessTemplate: true
  customWorkItemType: "Issue"
  customPTActiveStatus: "Working"
  customPTNewStatus: "New"
  customPTResolvedStatus: "Fixed"
  customPTCloseStatus: "Closed"

steps:
- task: Veracode Flaw Importer@3
  inputs:
    ConnectionDetailsSelection: 'Endpoint'
    AnalysisService: 'Veracode'
    veracodeAppProfile: '$(veracodeAppProfile)'
    sandboxName: 
    scanType: 'Dynamic, Static, and Software Composition Analysis'
    importType: 'All Unmitigated Flaws Violating Policy'
    workItemType: 'Issue'
    area: '$(system.teamProject)'
    overwriteAreaPathInWorkItemsOnImport: true
    flawImportLimit: '1000'
  displayName: 'Veracode importando falhas'
```

Para o nome do projeto, utilizei uma variável que pega o nome do repositório. Assim caso os pipelines de verificação estejam usando esse mesmo parâmetro como perfil de aplicação, vamos ter de uma forma dinâmica a consulta sem maiores personalizações. Mas, caso queira informar o nome diretamente, sem problemas. 

**E se eu estiver utilizando Sandbox??**
Caso queira obter o resultado de uma Sandbox, basta adicionar como parâmetro o nome dela. Como exemplo, vou importar os resultados de uma Sandbox que criei para o meu ambiente de HMG:
```
- task: Veracode Flaw Importer@3
  inputs:
    ConnectionDetailsSelection: 'Endpoint'
    AnalysisService: 'Veracode'
    veracodeAppProfile: '$(veracodeAppProfile)'
    sandboxName: 'HMG'
    scanType: 'Dynamic, Static, and Software Composition Analysis'
    importType: 'All Unmitigated Flaws Violating Policy'
    workItemType: 'Bug'
    area: '$(system.teamProject)'
    overwriteAreaPathInWorkItemsOnImport: true
    addCustomTag: 'HMG'
    flawImportLimit: '1000'
  displayName: 'Veracode importando falhas'
```
Não é obrigatório, mas nesses casos, eu gosto de adicionar o nome do ambiente como uma tag opcional, com o parâmetro **addCustomTag**.