Análise SAST com SonarQube - DevSecOps - Blog 4Linux
Análise SAST com SonarQube – DevSecOps
19 de outubro de 2018 Alisson Machado 5468 Views
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.
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
jenkins.vm.provision "shell", inline: <> /etc/apt/sources.list
apt install openjdk-8-jre -y
apt-get install jenkins -y --allow-unauthenticated
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|
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-config-manager --enable docker-ce-edge
yum install docker-ce epel-release git -y
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:
Com o container já em execução acesse no navegador:
http://192.168.33.11:9000
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.
CURSOSCONSULTORIA CONTATO
Anterior 4Linux participará de evento de tecnologia organizado pela Caixa Econômica Federal
Próxima Instalação do MySQL 8 em Debian e CentOS
Tags DevopsDevSecOpsDockerJenkinsSASTSegurançaSonar
Categoria DevOps
Alisson Machado 19 posts
Alisson Menezes, atua como Gerente de T.I, 9 anos de experiência em projetos FOSS (Free and Open Source Software) e Python. Formação em Análise de Sistemas pela FMU e cursando MBA em BigData pela FIA, possui certificações LPI1, LPI2 e SUSE CLA, LPI DevOps e Exim - DevOps Professional. Autor dos cursos Python Fundamentals, Python for Sysadmins, MongoDB for Developers/DBAs, DevSecOps, Co-Autor do Infraestrutura Ágil e Docker da 4Linux e palestrantes em eventos como FISL, TDC e Python Brasil. É entusiasta das mais diversas áreas em T.I como Segurança, Bancos de dados NoSQL, DataScience mas tem como foco DevOps e Automação.
Novo curso na trilha de Python!
Prez@dos, É com enorme satisfação que anuncio: o curso Python for Sysadmin está de cara nova. As bases do antigo curso foram mantidas, não se preocupe, mas como tudo na
4Linux se solidifica sua marca no mundo Devops e lança mais dois treinamentos.
Com estes 2 novos lançamentos, a oferta de cursos na carreira DEVOPS já totaliza 7 cursos. A 4linux lança esta semana dois novos cursos para atender a crescente demanda por
DevOps. Você vai conhecer e aplicar!
DevOps é fundado na construção de uma cultura de colaboração, visando a entrega de software de maneira mais rápida e confiável. Pode ser compreendido como uma filosofia de gestão, englobando
4Linux leva IA na prática para você
https://www.youtube.com/watch?v=bWu1xpfHZBc
Suporte e Consultoria em DevOps!
4linux Ansible Banco de Dados Big Data Ciência de Dados Cloud consultoria Containers cursos Cursos de TI Data Engineering Desenvolvimento Devops DevSecOps Docker Docker Compose Engenharia de Dados Hadoop iac Infraestrutura Kubernetes Linux log Machine Learning MongoDB Monitoramento Monitoramento TI Moodle MySQL Node.js Omnichannel OpenShift Openstack PHP PostgreSQL programacao Prometheus Python Rocket.chat Segurança software livre sre terraform ti zabbix