Olá, meu nome é Leonardo Sartorello, sou instrutor na Alura, e dou as boas-vindas a mais um curso.
Audiodescrição: Leonardo é um homem branco, com barba e cabelos castanhos, e olhos azuis. Atrás dele, há uma parede com dois quadros pendurados, iluminada pelas cores vermelha e azul.
Este curso é destinado a quem já possui conhecimento em Docker e deseja se aprofundar na área de segurança, especialmente nas áreas de contêineres e imagens do Docker. Nele, aprenderemos a verificar imagens em busca de falhas de segurança, o que são CVEs (Common Vulnerabilities and Exposures, ou Vulnerabilidades e Exposições Comuns) e como elas são classificadas.
Nesta aula, vamos explorar duas ferramentas: o Docker Scout e o Trivi, que realizarão análises de segurança para nós. Também identificaremos erros nas configurações do nosso Dockerfile
, com o objetivo de torná-los mais eficientes e robustos.
Por fim, compartilharemos algumas dicas de segurança relacionadas ao Docker. Abordaremos tudo isso de maneira prática, utilizando uma aplicação em Go, para que possamos praticar e identificar todas as possíveis falhas de segurança que esse container pode apresentar.
Aproveitem os recursos da plataforma, que além dos vídeos, incluem atividades, o fórum e a comunidade no Discord. Vamos estudar?
Quando falamos de segurança, geralmente pensamos na segurança de nossa aplicação. No entanto, também é importante considerar a segurança do ambiente onde essa aplicação está sendo executada. No caso de containers Docker, devemos pensar na segurança do Docker e dos containers. Vamos analisar como podemos identificar e corrigir falhas de segurança em nossas imagens Docker. Para isso, utilizaremos uma ferramenta desenvolvida pelo próprio pessoal do Docker, o Docker Scout. Essa ferramenta examina nossas imagens e verifica quais são as falhas de segurança conhecidas dentro delas.
Vamos ver como instalar o Docker Scout. Para isso, abriremos o navegador e buscaremos por "Docker Scout install". Após passar pelos anúncios, encontramos a documentação do Docker: "Install Docker Docs". Clicamos no link da documentação do Docker, que nos fornece o passo a passo para a instalação do Docker Scout.
Se estivermos utilizando o Docker Engine, no caso do Linux, ele não vem pré-instalado, então precisamos realizar a instalação. Se estivermos usando o Docker Desktop, que é comum no Windows e no Mac, não é necessário fazer essa instalação.
Caso seja necessário, como é feita a instalação? Existem opções de script de instalação ou instalação manual, tanto para Linux, Mac e Windows. No meu caso, estou em uma máquina Linux usando o Docker Engine, portanto, preciso realizar a instalação. Vou copiar o script de instalação e executá-lo automaticamente. Lembrando que já estou com o Docker instalado. Se ainda não tiver o Docker instalado, é necessário voltar ao preparo do ambiente e realizar a instalação do Docker.
Para instalar o Docker Scout, utilizamos o seguinte comando no terminal:
curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh
Vou abrir o terminal dentro do Visual Studio Code para podermos ver os arquivos de nossa aplicação e colar o script de instalação. Após dar Enter, deixaremos o script executar, realizando todas as instalações necessárias. Quando terminar, podemos começar a explorar nossa imagem.
Para isso, vamos executar o Docker Scout seguido do quickview. Em seguida, especificamos o nome da imagem. Qual imagem estamos utilizando? Qual projeto vamos utilizar? Vamos disponibilizar esse projeto para vocês. Haverá uma atividade extra com um link para o GitHub do nosso projeto inicial. Lá, teremos todo o projeto com o dockerfile
que montará essa imagem para nós.
Primeiro, vamos verificar se o Docker Scout está instalado corretamente executando o comando:
docker scout
Já montamos a imagem e a subimos no Docker Hub. O nome atual é o nosso nome de usuário, Leonardo Sartorello, seguido de /segurança_docker_2.1
. Portanto, temos o nome de usuário, o nome da imagem e a versão da imagem, a tag. Vamos rodar o quickview e verificar o que o Docker Scout identifica para nós. Para isso, utilizamos o comando:
docker scout quickview leonardosartorello/seguranca_docker:1
Ao pressionar Enter, o processo pode demorar um pouco, pois ele analisará a imagem e trará um banco de dados com todas as vulnerabilidades conhecidas, realizando toda a análise para nós.
Após a análise, recebemos um relatório rápido sobre a segurança da nossa aplicação. O que temos? Nossa imagem, que é o target, possui cinco vulnerabilidades críticas, 41 vulnerabilidades altas, 31 medianas e 9 leves. Vamos entender melhor o que são essas vulnerabilidades e o que precisamos fazer para corrigi-las. Vamos examinar mais detalhadamente quais são essas vulnerabilidades.
Para isso, executaremos o Docker Scout novamente, mas, em vez de Quick View, utilizaremos CVES. Essa sigla refere-se a Common Vulnerability and Exposures (Vulnerabilidades e Exposições Comuns). É o método que utilizamos para identificar problemas. Ele nos trará todas as vulnerabilidades listadas, uma a uma, para que possamos entender o que são e o que podemos fazer. Vamos filtrar essa lista e compreender melhor o que elas representam. Vamos lá?
Para listar todas as vulnerabilidades, utilizamos o comando:
docker scout cves leonardosartorello/seguranca_docker:1
Com isso, podemos analisar detalhadamente cada vulnerabilidade e planejar as correções necessárias para garantir a segurança de nossa aplicação Docker.
Neste momento, já executamos nosso código do docker-scout-cvs
, que nos trouxe uma lista com 86 vulnerabilidades diferentes dentro dessa aplicação, dentro desse container. Vamos analisar melhor essa lista, entender como ela funciona e o que são essas CVEs (Common Vulnerabilities and Exposures).
Para começar, utilizamos o seguinte comando para listar as vulnerabilidades:
docker scout cves leonardosartorello/seguranca_docker:1
No terminal, vamos examinar, por exemplo, a vulnerabilidade GNU-PG2. A ordem das vulnerabilidades pode variar, e novas vulnerabilidades podem surgir, pois são descobertas constantemente. A primeira informação que recebemos é a categoria da vulnerabilidade, que neste caso é considerada baixa (low). O GNU-PG2 é a aplicação que possui a vulnerabilidade, e faz parte do Ubuntu por padrão.
Mais abaixo, encontramos o número único da CVE, que permite sua identificação. Também há um link que podemos abrir para entender melhor como a CVE funciona. Além disso, há a Affected Range, que indica as versões afetadas, e a Fixed Version, que mostra a versão corrigida. Neste caso, aparentemente, ainda não foi corrigido. O CVSS Score é 3.3, em uma escala de 0 a 10, onde 0 indica ausência de vulnerabilidade e 10 indica uma vulnerabilidade extremamente crítica.
Vamos abrir o link da CVE para entender melhor o funcionamento dessas vulnerabilidades. No link, encontramos um sumário sobre como a CVE funciona, como é acionada e o que causa. Ao descer um pouco, vemos quem é o Advisor, o responsável pelo pacote, e quem pode classificar essa CVE. No nosso caso, é o Ubuntu, com um Score de 3.3, como vimos anteriormente.
A questão é como esse Score é calculado, como se chega a 3.3 e como se determina que é uma vulnerabilidade baixa (Low). Ao descer mais, encontramos o Severity and Metrics, que são as métricas utilizadas. Por exemplo, o vetor de ataque é local, o que significa que a pessoa já precisa ter um console aberto na máquina para explorar a vulnerabilidade, não podendo fazê-lo pela rede. Isso dificulta a exploração da vulnerabilidade.
A complexidade é baixa, facilitando a exploração, e os privilégios necessários também são baixos, permitindo que qualquer usuário com acesso ao console da máquina explore a vulnerabilidade. Outro aspecto importante é a confidencialidade, integridade e disponibilidade. Isso significa que, ao explorar a vulnerabilidade, não se entrega nenhuma informação sobre outras aplicações ou a própria aplicação presente na máquina.
A integridade significa que não é possível roubar nenhum tipo de dado da nossa aplicação. Portanto, também é None (nenhum). A Availability (disponibilidade) indica que o impacto é baixo. Ou seja, mesmo que a vulnerabilidade seja explorada, a performance pode ser um pouco reduzida, mas não devemos perder a disponibilidade da aplicação ou do servidor em si. Isso faz com que essa vulnerabilidade seja considerada pequena. É importante corrigir, mas não é algo que precisa ser feito de forma urgente.
Vamos agora inverter a situação e analisar uma vulnerabilidade crítica para observar as diferenças. Subindo na lista, encontramos várias vulnerabilidades médias e baixas, até chegarmos às altas e críticas. Vamos selecionar uma crítica com um CSV score de 9.8, quase atingindo o máximo de 10. Ao abrir essa vulnerabilidade, podemos observar as diferenças entre uma crítica e uma baixa.
O CSV score de 9.8 foi atribuído pelo GitLab. O vetor de ataque ocorre através da rede, sendo muito fácil de ser executado, com complexidade baixa. Não é necessário nenhum tipo de privilégio ou interação do usuário. Uma vez executada através da rede, essa vulnerabilidade expõe todas as informações referentes à nossa máquina e aplicação, incluindo todos os dados contidos nela. Além disso, podemos perder acesso à aplicação, pois a disponibilidade é alta, o que significa que provavelmente perderemos acesso à aplicação ou até mesmo ao servidor. Portanto, é uma vulnerabilidade extremamente importante de ser corrigida.
Vamos analisar como podemos realizar essa correção mais adiante. Agora que sabemos o que é uma vulnerabilidade crítica e uma baixa, e que as altas também requerem bastante cuidado, vamos filtrar a lista para mostrar apenas as críticas e altas, que exigem mais atenção.
Para isso, utilizaremos o código do docker-scout-cvs. Primeiro, limpamos a tela para facilitar a leitura:
clear
Em seguida, executamos o comando docker-scout-cvs
, como fizemos anteriormente. Após o cvs
e antes do nome da imagem, digitamos -only-severity
para filtrar apenas por algumas severidades. Queremos as críticas (critical) e as altas (high). Portanto, digitamos:
docker scout cves leonardosartorello/seguranca_docker:1 --only-severity critical,high
Ao pressionar enter, o scout será executado novamente, e agora ele nos mostrará as 46 vulnerabilidades críticas e altas, com as médias e baixas em zero.
Essas são as vulnerabilidades com as quais devemos nos preocupar mais ao começar a corrigir nossos problemas. Agora que já sabemos tudo isso, vamos explorar como o docker-scout trabalha e qual é a importância de realizar essas ações. Vamos lá?
O curso Docker Scout e Trivy: analisando e protegendo imagens e containers possui 90 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Containers em DevOps, ou leia nossos artigos de DevOps.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS (1 ANO) e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS (1 ANO) e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO (1 ANO) e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Brinde aniversário Alura
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Enquanto durarem os estoques