Como assinar suas imagens do Docker para aumentar a confiança

A maioria das imagens Docker é distribuída sem qualquer verificação de que são o que afirmam ser. Você pode aumentar a confiança em suas imagens assinando-as digitalmente. Isso prova aos usuários que você publicou a imagem, não um impostor.
O sistema de assinatura do
Docker &’ é conhecido como conteúdo confiável. Ele é exposto por meio do comando docker trust CLI. O Content Trust usa conjuntos de chaves para permitir que os registros verifiquem a identidade de editores em potencial. Os usuários de imagens assinadas podem ter certeza de que vêm da fonte esperada.
Gerando chaves
Você precisará de um par de chaves para começar a usar o Content Trust. Os pares de chaves podem ser emitidos por autoridades de certificação ou gerados pelo Docker CLI.
Execute docker trust key generate your-name para criar uma chave. Você será solicitado a inserir uma senha longa. Isso precisará ser fornecido cada vez que você usar a chave para assinar ou verificar imagens. Pressione Enter em cada prompt para continuar.

Assim que terminar, dois arquivos serão gerados em ~ / . docker / trust: a chave privada e sua chave pública correspondente. Da mesma forma que as chaves SSH, a chave privada nunca deve ser compartilhada e não deve ser perdida. Se precisar mover-se entre as máquinas, você pode importar um arquivo de chave privada para outra instalação do Docker usando docker trust key load my-key. pem.
Adicionando sua chave pública ao seu registro
O Docker Hub oferece suporte a todos os recursos do docker trust. Se você estiver usando um servidor Docker Registry privado, será necessário um processo de configuração mais complexo.
Publicidade
O servidor de registro não oferece suporte integrado para assinaturas. Você precisa de um serviço Docker Notary separado que lida com a verificação de assinatura para envio e recebimento de imagens. O notário tem três componentes, o servidor, um serviço de assinatura e um banco de dados MySQL. Ele deve ser implantado no mesmo URL do seu servidor de registro.
Você pode colocar o Notário em funcionamento usando seu arquivo Docker Compose:
clone git https://github. com/theupdateframework/notary. git docker-compose up -d
Esta implantação básica será executada com um certificado TLS autoassinado. É destinado apenas para uso em desenvolvimento. Você precisará confiar no arquivo de autoridade de certificação fixtures / root-ca. crt no repositório antes que os clientes possam se conectar com êxito.
sudo mkdir -p / usr / share / ca-certificados / extra sudo cp fixtures / root-ca. crt /usr/share/ca-certificates/extra/notary. crt sudo update-ca-certificates [ /PRÉ]Os comandos acima copiarão o arquivo do certificado para o local de armazenamento dos certificados ca. update-ca-certificates recarrega todos os certificados, adicionando a autoridade do Notário ao seu sistema.
Se você for executar o Notário em produção, precisará configurar a autenticação para que apenas usuários autorizados possam adicionar novas chaves. A variável de ambiente NOTARY_AUTH deve ser definida ao iniciar o serviço com docker-compose. Isso aceita credenciais codificadas em Base64 no formato nome de usuário: senha. Você será solicitado a fornecê-los ao interagir com o tabelião.
export NOTARY_AUTH = $ (echo "username" | base64): $ (echo "password" | base64) docker-compose up -dPublicidade
Agora você está pronto para adicionar sua chave pública ao servidor do Notário. As chaves são adicionadas por repositório. Isso permite que você isole as imagens umas das outras e permite o suporte para colaboradores terceirizados delegados. Você pode adicionar outros indivíduos com direitos de publicação posteriormente, fazendo com que eles repitam o comando com sua chave privada.
docker trust signer add your-key-name registry. example. com/my-imageVocê precisará inserir a senha longa da chave. Ele então estará disponível em seu servidor de registro.
Imagens de assinatura
Assim que sua chave estiver no registro, você pode começar a assinar as imagens. Use o comando docker trust sign. Certifique-se de que cada imagem esteja marcada com o URL de registro correto.
docker trust sign registry. example. com/my-image:latest
Este comando assinará a imagem com sua chave e a enviará diretamente para o registro. Depois disso, não há necessidade de executar manualmente o docker push. Você precisará configurar uma chave de repositório e senha para proteger os dados de confiança da imagem individual. Siga cada solicitação para configurar suas chaves de assinatura.
Se você tiver fluxos de trabalho existentes usando docker push, poderá optar por esse comando em vez do docker trust. Conclua as etapas anteriores para criar uma chave e adicioná-la ao Notário. Defina a variável de ambiente DOCKER_CONTENT_TRUST para que os comandos Docker CLI detectem o Content Trust e o apliquem automaticamente.
export DOCKER_CONTENT_TRUST = 1 docker push registry. example. com/my-image:latestVocê verá que a saída do shell corresponde ao que o sinal de confiança do docker produz. O Docker executa as mesmas ações que o comando mais explícito.
Verificação de imagens confiáveis
A variável DOCKER_CONTENT_TRUST reaparece com maior importância quando se trata de verificar as imagens que você extrai. O Docker não tenta verificar as imagens por padrão, mesmo se elas contiverem dados confiáveis. Você deve definir a variável de ambiente em seu shell para ativar a validação de confiança de conteúdo.
export DOCKER_CONTENT_TRUST = 1 docker pull registry. example. com/my-image:latestPublicidade
Quando a variável é definida, todas as imagens extraídas serão verificadas em relação ao servidor de tabelião do registro. Se o tabelião não puder fornecer nenhum dado confiável, a imagem será tratada como não assinada e a retirada será cancelada. Isso protege você de imagens publicadas por agentes mal-intencionados que se fazem passar por editores genuínos.
Os usuários do Docker Enterprise podem definir uma configuração de daemon opcional para evitar que o Docker Engine funcione com imagens não confiáveis já no host. Eles podem ter chegado aos arquivos tar de uma fonte não segura.
Edite /etc/docker/daemon. json e adicione a seguinte chave:
{"content-trust": {"mode": "enforced"}}Recarregue a configuração do daemon do Docker com systemctl reload docker para aplicar a alteração.
Você pode inspecionar o status de confiança de uma imagem usando a inspeção de confiança do docker. Isso mostrará as assinaturas associadas à imagem, permitindo que você verifique se ela foi assinada.
docker trust inspect registry. example. com/my-image:latest
Se você publicou uma imagem que não deseja mais assinar, use o comando docker trust revoke. Isso excluirá os dados confiáveis da imagem, fazendo com que ela falhe em todas as verificações subsequentes do cliente Docker.
docker trust revoke registry. example. com/my-image:latestResumo
O Docker Content Trust adiciona assinaturas digitais ao ecossistema Docker, aumentando a segurança ao usar imagens. Se você enviar imagens para o Docker Hub, já terá tudo de que precisa para usar o recurso. Defina a variável de ambiente DOCKER_CONTENT_TRUST e use os comandos do Docker normalmente.
Publicidade
Para usuários de registro auto-hospedados, a configuração é mais complicada, mas ainda vale o esforço em um ambiente de confiança crítica. No momento em que este artigo foi escrito, o Notary ainda não tinha uma versão oficial estável e a documentação estava em seu repositório GitHub.


Nenhum comentário