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
4Linux se torna A.T.O do EXIN com curso homologado para DEVOPS Master
Material didático desenvolvido pela 4Linux foi homologado pelo EXIN A 4linux acaba de se tornar um A.T.O. (Authorized Training Organization) do EXIN e simultaneamente teve o material de seu curso
Prometheus: A revolução do monitoramento open source em TI
Conheça o Prometheus, ferramenta open source de monitoramento adaptada ao atual modelo de TI focada em serviços e opção aos tradicionais Zabbix/Nagios. Compartilhe este post: Share on Twitter Share on
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