DevSecOps: Como usar o SonarQube para análise de vulnerabilidades
Quando falamos de DevSecOps, estive um termo chamado Shift Left, que consiste em analisar questões de segurança desde o inicio do desenvolvimento de uma aplicação, ao invés do modelo tradicional que a segurança só era testada no final.
Ao fazer essas análises de segurança dentro de uma pipeline DevOps, temos duas que são conhecidas como SAST ( Static Application Security Testing ) e DAST ( Dynamic Application Security Testing ).
SAST – tem como objetivo analisar o código fonte de uma aplicação e prever ameaças antes mesmo da aplicação ter sido construída.
DAST – tem como objetivo analisar a aplicação já construída, ou seja, é feito o deploy dessa aplicação e depois feitos uma série de testes como SQL Injection, XSS, CSRF e entre outras.
Nesse post vou explicar como podemos utilizar a ferramenta SonarQube para fazer a análise de vulnerabilidades a partir do código fonte de uma aplicação e como é possível interromper a esteira de execução do Jenkins caso o número de vulnerabilidades seja maior do que um valor já pré-definido.
Agora vamos subir um ambiente de testes utilizando o Vagrant, nele vou subir duas máquinas, sendo elas: Jenkins e Docker.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.vm.define "jenkins" do |jenkins| jenkins.vm.network "private_network", ip: "192.168.33.10" jenkins.vm.provider "virtualbox" do |vb| vb.memory = 2048 end jenkins.vm.provision "shell", inline: <> /etc/apt/sources.list apt-get update apt install openjdk-8-jre -y apt-get install jenkins -y --allow-unauthenticated SHELL end config.vm.define "docker-centos" do |docker| docker.vm.box = "centos/7" docker.vm.network "private_network", ip: "192.168.33.11" docker.vm.provider "virtualbox" do |vb| vb.memory = 2048 end docker.vm.provision "shell", inline: <<-SHELL yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine -y yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-edge yum install docker-ce epel-release git -y #systemctl enable docker #systemctl start docker SHELL end end
Criar um arquivo chamado Vagrantfile com o conteúdo acima e depois digite o comando: vagrant up para provisionar as duas máquinas.
Quando a máquina docker-centos estiver no ar, faça o deploy de um container de sonarqube utilizando a linha abaixo:
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
Com o container já em execução acesse no navegador:
O usuário e senha são: admin / admin
Faça a criação do token e defina a linguagem do projeto, parecido com a imagem abaixo:
Agora que já temos o projeto e token do usuário criados, vamos para a parte de configuração do jenkins:
Acesse: Manage Jenkins > Manage Plugins e instale o plugin sonarqube scanner.
Agora Configure o jenkins com o caminho onde está instalado o sonarqube.
Configure também para baixar o SonarScanner.
Agora crie uma job do tipo Freestyle chamada SAST, vincule um repositório git:
E adicione um step com o SonarScanner:
Defina o nome do projeto a ser analisado.
Salve e execute a job.
Se executada com sucesso, a saída será parecida com essa:
A mensagem ERROR, aparece pois o projeto que vinculei, não passou nos Quality Gates do sonar, para ver o report da análise, é só acessar a interface do Sonar e ver o status do projeto que deve ter ficado parecido com a imagem abaixo:
Esse é um overview da análise estática do projeto, no nosso caso como o foco é segurança, vamos analisar a parte de vulnerabilidades, pois uma foi encontrada.
Ao clicar em vulnerabilidade será listada uma tela parecida com a imagem abaixo:
Nela podemos ver a vulnerabilidade encontrada, corrigi-la e depois executar a análise estática de novo.
About author
Você pode gostar também
Entenda o que é um Framework e como ele pode facilitar seus projetos digitais
Se você tem um projeto web ou aplicativo a desenvolver, saber o que é um framework é um conhecimento indispensável. Afinal, estamos falando sobre um elemento chave para o resultado
Descubra as Oportunidades no Mercado DevOps em Ascensão
Oportunidades no Mercado DevOps O mercado de trabalho para quem conhece DevOps está em acensão, e atualmente é uma das áreas que mais contrata funcionários tanto no Brasil quanto no
Descubra o DevOps: Aumente a produtividade e qualidade na entrega de software
Provavelmente você conheça o termo DevOps e tenha dúvida sobre do que realmente se trata. Há quem defenda que se trata de uma cultura, outros apostam que seja uma metodologia, há quem