Introdução
Neste laboratório, você aprenderá como gerenciar signatários (signers) para repositórios Docker usando o comando docker trust signer remove. Começaremos inspecionando os signatários atuais de um repositório para entender as relações de confiança existentes.
Após a inspeção, você praticará a remoção de um signatário de um único repositório e, em seguida, verificará a remoção bem-sucedida. Finalmente, você aprenderá como remover um signatário de múltiplos repositórios simultaneamente e confirmará as alterações. Este laboratório fornecerá experiência prática com o gerenciamento de confiança de conteúdo no Docker.
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 que você verifique a integridade e o editor de todas as imagens que você usa. Quando a confiança de conteúdo está habilitada, o Docker garante que as imagens que você puxa (pull) sejam assinadas.
Primeiro, vamos habilitar o Docker Content Trust. Você pode fazer isso definindo a variável de ambiente DOCKER_CONTENT_TRUST como 1.
export DOCKER_CONTENT_TRUST=1
Agora que a confiança de conteúdo está habilitada, quando você interage com imagens, o Docker verificará as assinaturas. Para inspecionar os signatários de um repositório, você pode usar o comando docker trust inspect seguido pelo nome do repositório.
Vamos inspecionar os signatários do repositório ubuntu.
docker trust inspect ubuntu
Você deve ver uma saída semelhante a esta, mostrando os signatários e suas chaves:
No signatures for ubuntu
Esta saída indica que atualmente não há assinaturas para o repositório ubuntu. Isso é esperado para muitas imagens oficiais, a menos que elas tenham explicitamente habilitado a confiança de conteúdo e a assinatura.
Vamos tentar inspecionar um repositório que se sabe ter assinaturas, como docker/trusttest. Precisamos puxar (pull) a imagem primeiro para garantir que temos os metadados necessários.
docker pull docker/trusttest
Agora, inspecione os signatários para docker/trusttest.
docker trust inspect docker/trusttest
Você deve ver uma saída listando os signatários e suas chaves, indicando que este repositório foi assinado. A saída mostrará informações sobre os signatários Targets e Releases.
Signers of docker/trusttest:
ROLE KEYS
---- ----
Releases 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Signatures for docker/trusttest:
SIGNER KEYS
------ ----
Releases 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Esta saída confirma que o repositório docker/trusttest foi assinado e lista as chaves associadas aos signatários.
Remover um signatário de um único repositório
Nesta etapa, aprenderemos como remover um signatário de um único repositório Docker usando o Docker Content Trust. Isso é útil quando a chave de um signatário é comprometida ou um usuário não está mais autorizado a assinar imagens para um repositório específico.
Para remover um signatário, usamos o comando docker trust signer remove. Este comando requer o nome do signatário a ser removido e o repositório do qual removê-lo.
Vamos remover o signatário Releases do repositório docker/trusttest. Lembre-se da etapa anterior que docker/trusttest tem um signatário Releases.
docker trust signer remove Releases docker/trusttest
Ao executar este comando, você será solicitado a confirmar a remoção. Digite y e pressione Enter para prosseguir.
Removing signer "Releases" from docker/trusttest. Are you sure you want to continue? (y/n): y
Após a confirmação, o signatário será removido do repositório especificado. Você deve ver uma saída indicando a remoção bem-sucedida.
Successfully removed signer "Releases" from docker/trusttest
Este comando remove a associação da chave pública do signatário Releases com o repositório docker/trusttest nos dados de confiança armazenados no servidor de notário. Ele não exclui a própria chave do signatário, apenas sua autorização para assinar para este repositório específico.
Verificar a remoção do signatário
Nesta etapa, verificaremos se o signatário foi removido com sucesso do repositório. Podemos fazer isso usando o comando docker trust inspect novamente, assim como fizemos na primeira etapa.
Esperamos que, após remover o signatário Releases de docker/trusttest na etapa anterior, a execução de docker trust inspect docker/trusttest não mostre mais Releases como um signatário.
Vamos inspecionar os signatários para docker/trusttest novamente.
docker trust inspect docker/trusttest
Observe a saída cuidadosamente. Você deve agora ver que o signatário Releases não está mais listado na seção Signers para docker/trusttest.
Signers of docker/trusttest:
ROLE KEYS
---- ----
Targets 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Signatures for docker/trusttest:
SIGNER KEYS
------ ----
Releases 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Observe que, embora o signatário Releases seja removido da lista de Signers autorizados, a seção Signatures ainda pode mostrar assinaturas feitas por Releases. Isso ocorre porque o comando remove remove a autorização para o signatário assinar imagens futuras, mas não remove necessariamente as assinaturas existentes do servidor de notário imediatamente. No entanto, para fins de verificação da remoção do papel do signatário para o repositório, verificar a lista Signers é suficiente.
A ausência de Releases na seção Signers of docker/trusttest confirma que o signatário foi removido com sucesso deste repositório específico.
Remover um signatário de múltiplos repositórios
Nesta etapa, aprenderemos como remover um signatário de múltiplos repositórios Docker simultaneamente usando o Docker Content Trust. Isso é eficiente quando um signatário precisa ser desautorizado em vários repositórios.
O comando docker trust signer remove permite que você especifique múltiplos repositórios após o nome do signatário.
Vamos supor que temos outro repositório, digamos docker/another-trusttest, que também possui o signatário Releases. Para remover o signatário Releases de ambos docker/trusttest e docker/another-trusttest em um único comando, você listaria os nomes de ambos os repositórios.
Primeiro, vamos fazer o pull da imagem hello-world para usar como um segundo repositório para fins de demonstração. Em seguida, vamos marcá-la para simular outro repositório.
docker pull hello-world
docker tag hello-world docker/another-trusttest
Agora, vamos remover o signatário Releases de ambos docker/trusttest e docker/another-trusttest. Observe que docker/another-trusttest pode não ter realmente o signatário Releases em um cenário do mundo real, mas este comando demonstra a sintaxe para remover um signatário de múltiplos repositórios.
docker trust signer remove Releases docker/trusttest docker/another-trusttest
Você será solicitado a confirmar a remoção para cada repositório. Digite y e pressione Enter para cada confirmação.
Removing signer "Releases" from docker/trusttest. Are you sure you want to continue? (y/n): y
Successfully removed signer "Releases" from docker/trusttest
Removing signer "Releases" from docker/another-trusttest. Are you sure you want to continue? (y/n): y
Successfully removed signer "Releases" from docker/another-trusttest
A saída confirma que o signatário Releases foi removido de ambos os repositórios especificados. Este comando é uma maneira conveniente de gerenciar as autorizações de signatários em múltiplos repositórios com uma única ação.
Verificar a remoção do signatário de múltiplos repositórios
Nesta etapa, verificaremos se o signatário foi removido com sucesso de ambos os repositórios especificados na etapa anterior. Usaremos novamente o comando docker trust inspect para cada repositório.
Primeiro, vamos inspecionar os signatários para docker/trusttest. Esperamos que o signatário Releases ainda esteja ausente da lista Signers, pois o removemos em uma etapa anterior e confirmamos sua remoção.
docker trust inspect docker/trusttest
A saída deve mostrar que Releases não está listado em Signers of docker/trusttest.
Signers of docker/trusttest:
ROLE KEYS
---- ----
Targets 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Signatures for docker/trusttest:
SIGNER KEYS
------ ----
Releases 0a0d52c692a8b3459f3422732222222222222222222222222222222222222222: docker/trusttest
Agora, vamos inspecionar os signatários para docker/another-trusttest. Como tentamos remover o signatário Releases também deste repositório, esperamos que ele também esteja ausente da lista Signers para este repositório.
docker trust inspect docker/another-trusttest
A saída para docker/another-trusttest deve indicar que não há signatários, pois hello-world (que marcamos como docker/another-trusttest) não é assinado por padrão, e tentamos remover o signatário Releases (que não estava lá inicialmente para esta tag específica).
No signatures for docker/another-trusttest
Isso confirma que o comando docker trust signer remove, quando usado com múltiplos nomes de repositórios, tenta remover o signatário especificado de cada repositório listado. A verificação para docker/trusttest mostra a remoção bem-sucedida de um repositório que anteriormente tinha o signatário, e a verificação para docker/another-trusttest mostra o estado de um repositório que não tinha o signatário (e, portanto, a tentativa de remoção não o adicionou).
Resumo
Neste laboratório, aprendemos como gerenciar signatários para repositórios Docker usando o comando docker trust. Começamos habilitando o Docker Content Trust e inspecionando os signatários atuais de um repositório usando docker trust inspect. Isso nos permitiu ver quais chaves estavam associadas à assinatura de imagens em um determinado repositório.
Posteriormente, praticamos a remoção de um signatário de um único repositório e verificamos a remoção usando docker trust inspect novamente. Finalmente, estendemos esse conhecimento para remover um signatário de múltiplos repositórios simultaneamente e confirmamos a remoção bem-sucedida em todos os repositórios especificados. Essa experiência prática demonstrou a aplicação prática do comando docker trust signer remove para gerenciar a confiança de conteúdo dentro de um ambiente Docker.



