Como usar o comando docker scout policy para avaliar políticas de imagem

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker scout policy para avaliar políticas de imagem. Você explorará diferentes cenários para avaliação de políticas, incluindo a avaliação de políticas em relação a uma imagem específica, a avaliação de políticas para uma organização específica, a avaliação de políticas em relação a uma imagem com uma plataforma específica e a comparação de resultados de políticas para um repositório em um ambiente específico.

Através de exercícios práticos, você obterá experiência prática no uso do docker scout policy para avaliar a conformidade e a postura de segurança de suas imagens Docker com base em políticas definidas.

Avaliar políticas em relação a uma imagem específica

Nesta etapa, você aprenderá como avaliar políticas em relação a uma imagem Docker específica. Esta é uma operação fundamental ao trabalhar com segurança e conformidade de imagens. Usaremos uma imagem de exemplo simples para demonstrar o processo.

Primeiro, vamos baixar uma imagem de exemplo que usaremos para avaliação. Usaremos a imagem hello-world do Docker Hub. Esta é uma imagem muito pequena que simplesmente imprime "Hello from Docker!" e sai.

docker pull hello-world

Você deve ver uma saída indicando que a imagem está sendo baixada.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Agora que temos a imagem, podemos avaliar as políticas em relação a ela. O comando e a ferramenta específicos para avaliação de políticas dependerão do mecanismo de políticas que você está usando. Para fins deste laboratório, assumiremos que você está usando uma ferramenta hipotética de avaliação de políticas chamada policy-eval.

Para avaliar políticas em relação à imagem hello-world, você normalmente executaria um comando semelhante a este:

## Este é um comando hipotético e não funcionará neste ambiente.
## Ele é mostrado aqui apenas para fins ilustrativos.
## policy-eval evaluate --image hello-world:latest

Como não temos uma ferramenta específica de avaliação de políticas instalada neste ambiente, simularemos o processo verificando se a imagem existe localmente, o que é um pré-requisito para a avaliação.

Para verificar se a imagem hello-world está presente em seu sistema, você pode usar o comando docker images e filtrar a saída.

docker images | grep hello-world

Se a imagem foi baixada com sucesso, você deverá ver uma saída semelhante a esta, mostrando o repositório, a tag, o ID da imagem, o tempo de criação e o tamanho da imagem hello-world.

hello-world   latest    <image_id>   <creation_time>   <size>

Isso confirma que a imagem está disponível para avaliação de políticas. Em um cenário real, a próxima etapa seria executar o comando real de avaliação de políticas usando a ferramenta escolhida.

Avaliar políticas em relação a uma imagem para uma organização específica

Nesta etapa, você aprenderá como avaliar políticas em relação a uma imagem Docker que pertence a uma organização específica. No contexto do Docker Hub e outros registros de contêineres, as imagens são frequentemente organizadas sob namespaces de usuário ou organização. Isso permite um melhor gerenciamento e controle de acesso.

Para demonstrar isso, baixaremos uma imagem de uma organização específica no Docker Hub. Vamos usar a imagem ubuntu, que é mantida pela organização library (as imagens oficiais).

docker pull ubuntu

Você deve ver a saída indicando o progresso do download.

Using default tag: latest
latest: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

Observe que o nome da imagem é ubuntu, mas quando baixada, ela é frequentemente referida como library/ubuntu. Essa parte library representa a organização. Ao avaliar políticas para imagens de uma organização específica, você normalmente especificaria o nome completo da imagem, incluindo o nome da organização.

Semelhante à etapa anterior, o comando exato para avaliação de políticas dependerá do seu mecanismo de políticas. Um comando hipotético pode ser semelhante a este:

## Este é um comando hipotético e não funcionará neste ambiente.
## Ele é mostrado aqui apenas para fins ilustrativos.
## policy-eval evaluate --image library/ubuntu:latest --organization library

Novamente, como não temos uma ferramenta específica de avaliação de políticas, verificaremos se a imagem ubuntu da organização library está presente localmente.

Use o comando docker images e filtre por ubuntu.

docker images | grep ubuntu

Você deve ver uma saída semelhante a esta, confirmando a presença da imagem ubuntu.

ubuntu        latest    <image_id>   <creation_time>   <size>

Isso indica que a imagem da organização library está disponível para avaliação de políticas. Avaliar políticas com base na organização é crucial para impor requisitos de segurança e conformidade específicos da organização.

Avaliar políticas em relação a uma imagem com uma plataforma específica

Nesta etapa, você aprenderá como avaliar políticas em relação a uma imagem Docker construída para uma plataforma específica. As imagens Docker podem ser construídas para diferentes arquiteturas e sistemas operacionais (plataformas), como linux/amd64, linux/arm64, windows/amd64, etc. Ao avaliar políticas, é importante considerar a plataforma de destino da imagem, pois as vulnerabilidades e os requisitos de conformidade podem variar entre as plataformas.

Para demonstrar isso, tentaremos baixar uma imagem para uma plataforma específica. Usaremos a imagem alpine, que é uma distribuição Linux leve, e especificaremos a plataforma linux/arm64.

docker pull --platform linux/arm64 alpine

Você deve ver a saída indicando o processo de download para a plataforma especificada.

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Embora você tenha especificado linux/arm64, o Docker pode baixar a imagem para a arquitetura do seu host se uma imagem de várias arquiteturas estiver disponível e a plataforma especificada não tiver um manifesto específico. No entanto, o comando demonstra como você tentaria baixar para uma plataforma específica.

Ao avaliar políticas para uma plataforma específica, sua ferramenta de avaliação de políticas normalmente teria uma opção para especificar a plataforma de destino. Um comando hipotético pode ser semelhante a este:

## Este é um comando hipotético e não funcionará neste ambiente.
## Ele é mostrado aqui apenas para fins ilustrativos.
## policy-eval evaluate --image alpine:latest --platform linux/arm64

Para verificar se você tem uma imagem alpine disponível localmente (independentemente da arquitetura específica baixada pelo Docker), você pode usar o comando docker images e filtrar por alpine.

docker images | grep alpine

Você deve ver uma saída semelhante a esta, confirmando a presença da imagem alpine.

alpine        latest    <image_id>   <creation_time>   <size>

Avaliar políticas com base na plataforma da imagem é essencial para garantir que suas imagens sejam compatíveis e seguras para os ambientes específicos onde serão implantadas. Diferentes plataformas podem ter diferentes bibliotecas e configurações do sistema, levando a vulnerabilidades específicas da plataforma.

Comparar resultados de políticas para um repositório em um ambiente específico

Nesta etapa, você aprenderá sobre o conceito de comparação de resultados de políticas para imagens dentro de um repositório, potencialmente em diferentes ambientes. Embora não possamos realizar comparações de políticas reais sem um mecanismo de políticas dedicado, podemos entender o processo e os pré-requisitos.

Um "repositório" (repository) no Docker se refere a uma coleção de imagens relacionadas, geralmente com diferentes tags (como latest, 1.0, dev, etc.). Por exemplo, o repositório ubuntu no Docker Hub contém várias versões da imagem Ubuntu.

Comparar resultados de políticas para um repositório em um ambiente específico normalmente envolve:

  1. Avaliar políticas para várias imagens dentro desse repositório.
  2. Considerar o ambiente onde as imagens serão implantadas (por exemplo, desenvolvimento, staging, produção). Diferentes ambientes podem ter diferentes requisitos de política.
  3. Analisar e comparar os relatórios de avaliação de políticas para as imagens no contexto do ambiente de destino.

Para simular ter várias imagens de um repositório, vamos baixar outra tag da imagem ubuntu. Baixaremos a tag 20.04.

docker pull ubuntu:20.04

Você deve ver a saída indicando o download da imagem ubuntu:20.04.

20.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Agora você tem duas imagens do repositório ubuntu: ubuntu:latest (que baixamos em uma etapa anterior) e ubuntu:20.04.

Para ver ambas as imagens, você pode listar todas as imagens ubuntu:

docker images | grep ubuntu

Você deve ver uma saída semelhante a esta, mostrando ambas as tags:

ubuntu        latest    <image_id_latest>   <creation_time_latest>   <size_latest>
ubuntu        20.04     <image_id_20.04>    <creation_time_20.04>    <size_20.04>

Em um cenário real de comparação de políticas, você avaliaria as políticas em relação a ubuntu:latest e ubuntu:20.04. A ferramenta de avaliação de políticas geraria relatórios para cada imagem. Em seguida, você compararia esses relatórios, potencialmente filtrando ou analisando os resultados com base nos requisitos de um ambiente específico (por exemplo, "políticas do ambiente de produção").

Um comando hipotético para comparar resultados de políticas pode ser semelhante a este:

## Este é um comando hipotético e não funcionará neste ambiente.
## Ele é mostrado aqui apenas para fins ilustrativos.
## policy-eval compare --repository ubuntu --environment production

Como não podemos realizar a comparação real, a verificação para esta etapa se concentrará em garantir que você tenha as imagens ubuntu:latest e ubuntu:20.04 disponíveis localmente, que são as imagens necessárias para tal comparação.

Resumo

Neste laboratório, aprendemos o processo fundamental de avaliação de políticas em relação a uma imagem Docker específica. Começamos baixando uma imagem de exemplo, hello-world, para demonstrar o pré-requisito de ter a imagem localmente antes da avaliação da política. Em seguida, simulamos o processo de avaliação da política, verificando a presença da imagem usando docker images. Esta etapa inicial estabeleceu a base para entender como direcionar uma imagem específica para verificações de políticas.

Com base na avaliação básica, exploramos como refinar as verificações de políticas, considerando fatores como a organização à qual a imagem pertence e a plataforma específica para a qual ela foi construída. Por fim, aprendemos como comparar os resultados da avaliação de políticas para um repositório em diferentes ambientes, destacando a importância do contexto na aplicação e conformidade de políticas.