Como usar o comando docker trust signer add para adicionar um signatário

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar signatários (signers) para repositórios Docker usando o Docker Content Trust. Começaremos inspecionando os signatários atuais de um repositório para entender quem está autorizado a assinar imagens.

Após a inspeção, você aprenderá como adicionar um novo signatário a um repositório usando o comando docker trust signer add. Finalmente, você verificará se o novo signatário foi adicionado com sucesso, garantindo que outra entidade agora pode assinar imagens para aquele repositório.

Inspecionar os signatários atuais de um repositório

Nesta etapa, aprenderemos como inspecionar os signatários atuais de um repositório Docker. O Docker Content Trust permite verificar a integridade e o editor das imagens que você usa. Signatários (Signers) são entidades que têm a autoridade para assinar imagens para um repositório específico.

Primeiro, vamos habilitar o Docker Content Trust. Isso é feito definindo a variável de ambiente DOCKER_CONTENT_TRUST como 1.

export DOCKER_CONTENT_TRUST=1

Agora que o Content Trust está habilitado, quando você fizer o pull de uma imagem, o Docker verificará sua assinatura. Se a imagem não estiver assinada ou a assinatura for inválida, a operação de pull falhará.

Para inspecionar os signatários atuais de um repositório, usamos o comando docker trust signer. Inspecionaremos os signatários do repositório library/ubuntu, que é uma imagem oficial bem conhecida.

docker trust signer library/ubuntu

Este comando listará os signatários associados ao repositório library/ubuntu. Você verá uma saída semelhante a esta, mostrando o nome do signatário e seu ID da chave:

Signers for library/ubuntu

SIGNER              KEYS
DOCKER OFFICIAL     7000000000000000000000000000000000000000000000000000000000000000

A saída mostra que o repositório library/ubuntu é assinado por "DOCKER OFFICIAL" com um ID de chave específico. Isso confirma que a imagem que você faz o pull deste repositório é oficialmente assinada pelo Docker.

Adicionar um novo signatário ao repositório

Nesta etapa, aprenderemos como adicionar um novo signatário a um repositório Docker. Isso é útil quando você deseja permitir que outra parte ou sistema assine imagens para seu repositório.

Antes de adicionar um signatário, você precisa ter uma chave de assinatura. Se você não tiver uma, pode gerar um novo par de chaves usando o comando docker trust key generate. Para este laboratório, assumiremos que você tem um par de chaves.

Para adicionar um novo signatário, usamos o comando docker trust signer add. Este comando requer o nome do novo signatário, o nome do repositório e o caminho para a chave pública do novo signatário.

Vamos criar um arquivo de chave pública fictício para fins de demonstração. Em um cenário real, esta seria a chave pública fornecida pelo novo signatário.

echo "-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0AQICYQADggEPADRUb2tlbiBmb3IgYSB0ZXN0IHNpZ25lcg==
-----END PUBLIC KEY-----" > ~/project/new_signer.pub

Este comando cria um arquivo chamado new_signer.pub em seu diretório ~/project com algum conteúdo de chave pública fictício.

Agora, vamos adicionar um novo signatário chamado my-new-signer a um repositório hipotético your-dockerhub-user/my-image. Substitua your-dockerhub-user pelo seu nome de usuário do Docker Hub se você estivesse fazendo isso com um repositório real. Para este laboratório, usaremos um espaço reservado.

docker trust signer add my-new-signer your-dockerhub-user/my-image --key ~/project/new_signer.pub

Você será solicitado a inserir a senha da chave raiz do repositório. Esta é uma medida de segurança para garantir que apenas usuários autorizados possam adicionar signatários. Como este é um ambiente de laboratório e não estamos interagindo com um registro Docker real, você pode inserir uma senha fictícia.

Após inserir a senha, o comando adicionará o novo signatário aos dados de confiança do repositório. Você deve ver uma saída indicando que o signatário foi adicionado.

Adding signer "my-new-signer" to your-dockerhub-user/my-image...
Successfully added signer "my-new-signer" to your-dockerhub-user/my-image

Este comando atualiza os dados de confiança para o repositório especificado no registro Docker, adicionando a chave pública do novo signatário.

Verificar se o novo signatário foi adicionado

Nesta etapa, verificaremos se o novo signatário que adicionamos na etapa anterior foi adicionado com sucesso aos dados de confiança do repositório.

Para fazer isso, usaremos novamente o comando docker trust signer, assim como fizemos na primeira etapa para inspecionar os signatários originais. Desta vez, inspecionaremos os signatários do repositório onde adicionamos o novo signatário.

Lembre-se de que adicionamos o signatário my-new-signer ao repositório hipotético your-dockerhub-user/my-image. Vamos inspecionar os signatários para este repositório. Lembre-se de substituir your-dockerhub-user pelo espaço reservado que usamos na etapa anterior.

docker trust signer your-dockerhub-user/my-image

Este comando consultará o registro Docker para obter os dados de confiança associados ao repositório your-dockerhub-user/my-image e listará todos os signatários.

Você agora deve ver uma saída que inclui tanto o signatário original (se houver) quanto o novo signatário my-new-signer que você adicionou na etapa anterior. A saída mostrará o nome de cada signatário e seu ID de chave correspondente.

Signers for your-dockerhub-user/my-image

SIGNER              KEYS
my-new-signer       <key ID of the new signer>

A presença de my-new-signer na saída confirma que o signatário foi adicionado com sucesso aos dados de confiança do repositório. Isso significa que as imagens assinadas com a chave pública associada a my-new-signer agora serão consideradas confiáveis para este repositório quando o Docker Content Trust estiver habilitado.

Resumo

Neste laboratório, aprendemos como gerenciar signatários para repositórios Docker usando o Docker Content Trust. Começamos habilitando o Docker Content Trust para garantir a integridade da imagem e a verificação do editor. Em seguida, praticamos a inspeção dos signatários atuais de um repositório, especificamente a imagem library/ubuntu, usando o comando docker trust signer, que exibiu o signatário existente e seu ID de chave.

Após a inspeção, passamos para o processo de adição de um novo signatário a um repositório usando o comando docker trust signer add. Esta etapa é crucial para permitir que outras entidades assinem imagens para um repositório específico. Embora os detalhes completos da adição de um signatário não tenham sido fornecidos no trecho, o objetivo do laboratório é demonstrar essa capacidade. A etapa final, verificando a adição do novo signatário, envolveria a reinspeção dos signatários do repositório para confirmar que o signatário recém-adicionado está listado, garantindo a conclusão bem-sucedida do processo.