Usando o InSpec para teste e auditoria de aplicações e infraestrutura.

Usando o InSpec para teste e auditoria de aplicações e infraestrutura.

Você conhece a ferramenta da Chef, o InSpec? Vamos realizar um teste básico de infraestrutura utilizando InSpec!

Muita das vezes quando trabalhamos com integração continua não temos a certeza que nossa configuração está sendo realizada com sucesso dentro do nosso ambiente, para nos auxiliar usamos uma ferramenta de Compliance as a Code como o InSpec.

O InSpec é uma ferramenta  para teste e auditoria de aplicações e infraestrutura, que pode ser resumido como a capacidade organizacional de automatizar a implementação, verificação, correção, monitoramento e relatório do status de conformidade.

Benefícios do InSpec: 

  • Agora você consegue saber qual e o estado atual da sua infra independente da situação.
  • Possui um shell interativo podendo executar testes rápidos.
  • Funciona no Linux, Mac e Windows.

Ambiente: 

Para testar o InSpec iremos criar um ambiente composto por uma maquinas usando o Vagrant (Ferramenta para criação de Maquinas Virtuais.)
Dentro da maquina será instalado o Apache “Servidor Web” com uma pagina em html com o seguinte conteúdo “Webserver com InSpec”.
  • Caso vocês queiram replicar o ambinte segue o arquivo de configuração:

Vagrantfile:

BOX_SRV = "debian/buster64"
Vagrant.configure("2") do |config|
  config.vm.define "server1" do |server1|
    server1.vm.box = BOX_SRV
    server1.vm.network "private_network", ip: "10.5.25.10"
    server1.vm.provision "shell",
      inline: "wget https://packages.chef.io/files/stable/inspec/4.21.3/debian/10/inspec_4.21.3-1_amd64.deb ; dpkg -i inspec_4.21.3-1_amd64.deb"
    server1.vm.provision "shell",
      inline: "apt update; apt install apache2 -y ; echo \"Webserver com Inspec\" > /var/www/html/index.html"
  end
end

Instalação: 

Basta acessar o site oficial da chef e realizar o download.

InSpec Shell: 

O InSpec Shell é um shell interativo, utilizado para executar rapidamente controles e testes do InSpec sem precisar escrever um arquivo. Podemos utilizar também o InSpec Shell para verificar os comandos aceitos pela ferramenta.
Ao iniciar o shell será solicitado o aceite do licenciamento da Chef.
Execute: “Inspec shell” para iniciar o shell.

Recursos:

O InSpec trabalha com recursos (resources) que são os módulos de trabalho da ferramenta.
Execute  “help resources” para listar todos os recursos disponíveis:
Observação: Para ver o manual de algum recurso basta digitar “help nome-do-recurso”.
Iremos usar o recurso package para verificar se o apache2 está instalado junto a sua versão.

Controles:

Depois que conhecemos oque são recursos agora está na hora de começar a fazer múltiplos testes com Controls.
Controles são usados pelo InSpec para expressar expectativas com relação ao estado de um recurso, como por exemplo: propriedades, condições, comparadores e resultados esperados.
Vamos descrever um controle para realizar os mesmos teste “instalação e versão do apache”.
  • Usando controles o InSpec irá verificar todos os elementos que você desejar.

Profiles: 

Profiles são utilizados pelo InSpec para organizar múltiplos controles “Controls” em um único arquivo.
Com isso podemos descrever uma bateria de testes dentro de um arquivo e posteriormente executa-lás dentro de um servidor.
Teste a ser realizado:
  • Pacote apache2 está instalado?
  • Serviço apache2 em execução?
  • A pagina inicial do Web server tem o conteúdo “Webserver com InSpec”?
  • Porta 80 Aberta no servidor?

Webserver.rb:

title 'Testes de webserver'
  control 'Pacote Webserver' do
    title 'Verificando a instalação do Apache2'
    describe package('apache2') do
      it { should be_installed}
      its('version') { should cmp '2.4.38-3+deb10u3' }
    end
  end

  control 'Serviço Webserver' do
    title 'Verificando se o apache está em execução'
    describe service('apache2') do
      it { should be_installed }
      it { should be_enabled } 
      it { should be_running }
    end
  end

  control 'Arquivo Webserver' do
    title 'Verificando pagina do Webserver'
    describe file('/var/www/html/index.html') do
      it { should be_file}
      its('content') { should include 'Webserver com Inspec'}
    end
  end

  control 'Porta Webserver' do
    title 'Verificando Porta'
    describe port('80') do
      it { should be_listening }
    end
   end
Após descrever todo o teste em um Profile vamos executa-lo.
  • inspec exec webserver.rb
E esse foi resultado obtido pela ferramenta.

Conclusão:

Após uma implementação na sua infraestrutura o InSpec e a ferramenta ideal para apurar se tudo está no estado desejável.
Anterior O que é um framework e quando usar em seus projetos
Próxima Convencedo sua empresa a se tornar ágil

About author

Você pode gostar também

Infraestrutura

Crie, versione e compartilhe sua infraestrutura através de Códigos com Ansible Galaxy!

O termo IaC – Infrastructure as Code – dá nome aos processos de provisionamento de infraestrutura tecnológica (principalmente em Cloud Computing) através de códigos, viabilizando o versionamento e a colaboração

Infraestrutura

Reduza custos com instâncias AWS

Acabe com desperdícios com instâncias ligadas sem uso. Projeto de análise e automação da 4Linux permite reduzir gastos com serviços da nuvem AWS Certamente sua empresa possui instâncias na AWS

Cloud

Terraform #parte6 – Utilizando módulos com outros módulos

Em meio ao caos que o Corona Vírus tem causado em todo o globo, chegamos ao último post da nossa série de postagens sobre Terraform. Caso tenha perdido os 5