Na segunda parte, continuaremos a explorar o fluxo de trabalho que desenvolvi para Continuous Integration (CI) utilizando GitHub Actions. Se você acompanhou o primeiro post, já está familiarizado com o contexto geral e pode acessar o repositório do projeto através do link. Neste post, vou guiar passo a passo na configuração e execução da montagem automática de uma imagem Docker, além de mostrar como fazer a verificação de segurança utilizando Docker Scout.

O básico de como entender um Action do GitHub pode ser entendido no meu post anterior. Neste serei mais sucinto por praticidade. Segue o código e explicação de cada action utilizado.

   name: Build Image and Run Image Scan
   runs-on: ubuntu-latest

   steps:
   - name: Checkout code
     uses: actions/checkout@v4.1.1

   - name: Set up Docker
     uses: docker-practice/actions-setup-docker@v1
     with:
      docker_version: '20.10.7'
      
   - name: Build Docker Image
     run: docker build -f Dockerfile -t myapp:latest .

   - name: Docker login
     uses: docker/login-action@v3         
     with:
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASS }}

        
   - name: Docker Scout Install
     run:
         curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --
         
   - name: Docker Scout Run
     run:         
         docker scout quickview
         
		   docker scout cves
  1. Checkout code: Clona o repositório do GitHub na máquina virtual de execução, permitindo que o restante do fluxo de trabalho tenha acesso aos arquivos do repositório.

  2. Set up Docker: Esta action configura o ambiente Docker na máquina virtual de execução. Ela utiliza uma action chamada actions-setup-docker na versão 1, especificando a versão do Docker que será usada (20.10.7, neste caso).

  3. Build Docker Image: Esta action executa o comando docker build para construir uma imagem Docker usando o arquivo Dockerfile no diretório raiz do repositório. A imagem resultante recebe o nome myapp com a tag latest.

  4. Docker login: Esta action faz o login no Docker Hub para autenticar o acesso ao registro de contêineres. Ela utiliza a action docker/login-action na versão 3 e faz uso de credenciais armazenadas como secrets no repositório (DOCKER_USERNAME e DOCKER_PASS).

    1. Para criar as credenciais. Siga os 3 passos abaixo. O nome pode ser qualquer um da sua escolha, e o conteúdo é únicamente a senha para realizar login no seu DOCKER HUB. Github Actions Secrets
  5. Docker Scout Install: Instala a ferramenta Docker Scout na máquina virtual de execução. O comando curl baixa o script de instalação install.sh do repositório do Docker Scout e o executa.

  6. Docker Scout Run: Esta action executa comandos da ferramenta Docker Scout para realizar verificações de segurança na imagem Docker construída. Os comandos docker scout quickview e docker scout cves são utilizados para visualizar informações rápidas e listar vulnerabilidades conhecidas na imagem, respectivamente.

Em conclusão, neste segundo post, exploramos a integração do Static Application Security Testing (SAST) com a ferramenta Bandit. Demonstrei como configurar a análise de segurança estática do código-fonte do projeto, visando identificar potenciais vulnerabilidades de segurança. Ao implementar essa etapa adicional no fluxo de trabalho, a robustez e a confiabilidade do processo de integração contínua é maior, garantindo a detecção precoce de possíveis falhas de segurança (SHIFT LEFT). Com essas práticas em vigor, o ambiente fica mais preparado para fornecer software mais seguro e resiliente.