Como a assinatura de imagens do Docker irá evoluir com o notário v2

VideoFlow / Shutterstock. com
As imagens do Docker assinadas aumentam a confiança e a segurança do ecossistema, permitindo que os usuários verifiquem se as imagens que baixaram realmente se originam de você. Apesar dos claros benefícios da assinatura, a aceitação entre os usuários do Docker tem sido lenta e não é habilitada por padrão.
Agora, uma nova versão do sistema de assinatura do Notário busca mudar isso. Um grupo de trabalho de vários fornecedores foi estabelecido em dezembro de 2019 para melhorar a experiência de assinatura de imagem e resolver vários dos problemas com a implementação original. O Notary v2 foi lançado em versão alfa em outubro de 2021. Veja como ele torna a assinatura mais compatível com os padrões de uso de contêineres modernos.
O que é notário?
Notário é um projeto que Docker começou em 2015 antes de doá-lo para a Cloud Native Computing Foundation (CNCF). A versão v2 está sendo orientada por um grupo de vários setores que inclui Docker, Microsoft, Google e Amazon.
O notário, também conhecido como Docker Content Trust, fornece os mecanismos que assinam e verificam suas imagens de contêiner. A iteração atual funciona adicionando sua chave pública ao seu registro, assinando sua imagem com a contraparte privada da chave e, em seguida, enviando a imagem assinada para o registro. Outros usuários podem verificar a imagem pedindo ao registro para comparar sua chave pública com os dados que extraíram. Toda essa funcionalidade é incorporada ao Docker CLI existente no grupo de comandos docker trust.
Os problemas com v1
A versão original do Notário foi desenvolvida antes da proliferação de registros Docker observada hoje. Ele foi projetado principalmente para o Docker Hub, embora hoje você possa usar registros de muitos provedores diferentes. GitHub, GitLab e plataformas populares de implantação de nuvem começaram a oferecer registros integrados.
Publicidade
O notário atualmente trabalha em conjunto com o registro. Se quiser usá-lo com um registro privado, você também deve implantar seu próprio servidor de Notário. Isso torna difícil usar a assinatura de imagem em ambientes que não dependem do Docker Hub.
v1 também não funciona entre registros. Os dados de assinatura são perdidos quando você obtém uma imagem pública e a envia para um registro privado sem um servidor de notário que o acompanha. Você não pode verificar se a versão privada permanece igual à original enquanto está em repouso no seu registro. Da mesma forma, a arquitetura atual do Notário não oferece suporte para redes privadas e ambientes sem ar que precisam ser fisicamente isolados do mundo exterior.
A nova arquitetura v2
A próxima geração do Notário leva o design de volta à prancheta para criar uma experiência mais simples e universalmente aplicável. Um dos objetivos do projeto é eventualmente atingir um estado em que as verificações de assinatura de imagem sejam ativadas por padrão, uma medida que ajudaria a proteger muito mais usuários de possível adulteração de imagens.
Os dados de assinatura serão enviados e extraídos com os dados da imagem, removendo a etapa separada. Tudo o que é necessário para verificar se uma imagem será movida ao lado dela, mantendo sua disponibilidade quando for enviada para outro registro ou usada em um ambiente sem ar.
O Notário v2 também não se limita a assinar imagens de contêiner. Funciona com qualquer artefato armazenado em um registro compatível com OCI. Agora você pode assinar os ativos que acompanham suas imagens, como listas de dependências em listas de materiais de software (SBOMs) e os resultados de mecanismos de varredura de imagens. Isso reforça a confiança em todo o pipeline de implantação, destacando tentativas não autorizadas de modificar auditorias e documentação de suporte.
Múltiplos signatários e promoção de assinaturas
Outra área em que o Notary v1 falha é quando se trata de aprovar uma imagem para uso em seu próprio ambiente. Ele suporta apenas uma assinatura por imagem; se uma imagem Docker Hub for assinada por seu fornecedor, você não poderá adicionar sua própria assinatura para marcar a imagem como adequada para sua organização.
Publicidade
O Notário v2 também adiciona suporte para este fluxo de trabalho. Como um usuário de imagem downstream, você pode adicionar novas assinaturas a uma imagem (ou qualquer outro artefato) que outras pessoas mais abaixo na cadeia serão capazes de verificar. Por exemplo, significa que você &’ será capaz de verificar as seguintes afirmações sobre uma imagem que se identifica como ubuntu: mais recente:
- A imagem foi publicada no Docker Hub pela Canonical e não foi adulterada desde então.
- A imagem foi assinada para uso pela sua organização.
- A imagem não mudou desde que foi armazenado em cache no registro privado do Docker do seu servidor de CI.
O Notary v2 é capaz de manter a confiança em todo o ecossistema, em vez de ser limitado principalmente a puxar imagens imediatas do Docker Hub. Isso o incentiva a desafiar a suposição tradicional de que as imagens são “ seguras ” porque eles são extraídos diretamente do Docker Hub. O uso de várias assinaturas permite validar essa declaração e registrá-la como seu próprio selo de aprovação.
Usando Notário v2 hoje
O Notário v2 ainda não está pronto para uso geral. No entanto, o primeiro alfa está disponível para download. O componente de assinatura e verificação é chamado de notação. Atualmente, ele está incompleto e é oferecido como um binário autônomo que opera independentemente da CLI do Docker.
Baixe o Notation de sua página de lançamentos do GitHub, extraia o executável e coloque-o em algum lugar no seu caminho. Comece gerando um certificado de assinatura de teste para seu próprio uso:
notação certificado gerar-teste - padrão "meu-certificado"
Agora você pode assinar imagens. Atualmente, o notário só funciona com imagens em um registro. Você pode usar o Docker para iniciar rapidamente um registro compatível no localhost: 5000:
docker run -d -p 5000: 5000 ghcr. io/oras-project/registry:v0.0.3-alpha
Crie e envie sua imagem para o registro e, em seguida, use o Notation para assiná-la:
docker build -t localhost: 5000 / my-image: mais recente. docker push localhost: 5000 / my-image: sinal de notação mais recente --plain-http localhost: 5000 / my-image: mais recente

Publicidade
Agora você adicionou sua assinatura à imagem. Tente verificá-lo usando o comando verify:
verificação de notação --plain-http localhost: 5000 / my-image: mais recente

Isso gerará um erro porque o comando cert generate-test não registra automaticamente a chave pública do certificado gerado. Como o Notation não saberá a chave usada para assinar a imagem, a validação falhará. Você pode corrigir isso adicionando a chave pública do seu certificado ao Notation e, em seguida, tentando verificar a sua imagem novamente:
notação cert add --name "meu-certificado" ~ / . config / notation / certificate / my-certificate. crt notation verify --plain-http localhost: 5000 / minha-imagem: mais recente

Desta vez, o Notation deve emitir o hash de assinatura SHA256 da imagem, indicando que a verificação foi bem-sucedida. Agora você deve conseguir puxar e verificar a imagem em outra máquina com o Notation instalado. Lembre-se de adicionar a chave pública do seu certificado à sua segunda instalação do Notation.
O sinalizador --plain-http nos comandos acima permite que o Notation use HTTP para se conectar ao registro. Isso é necessário para esses exemplos em que um registro do Docker foi criado localmente para fins de teste. Você deve omitir este sinalizador ao se conectar a um registro real protegido por TLS.
O que vem a seguir para notário e notação?
O Notary v2 ainda está em desenvolvimento e novos recursos serão exibidos em compilações futuras do Notation. A revogação de certificados, políticas de verificação específicas do ambiente e suporte para registros sem suporte ORAS estão todos no roteiro.
Atualmente, não há um prazo definido para um lançamento estável. Assim que chegar, o Notary v2 finalmente adicionará uma assinatura acessível, resiliente e escalonável ao ecossistema de imagem do contêiner. Deve tornar a verificação de assinatura utilizável em muitos outros cenários, reduzindo o risco de adulteração por pull over-the-wire e uso não autorizado de imagens.
Publicidade
Assim que for implementado de forma mais ampla, seus sistemas de implantação poderão verificar se uma imagem é “ oficial ” versão de seu fornecedor, se for aprovada para uso em sua organização e se tiver um resultado de verificação de segurança apropriado assinado com a mesma chave. Isso adicionará uma camada bem-vinda de proteção extra e transparência para organizações preocupadas com a segurança que executam contêineres em ambientes de alto risco.
Nenhum comentário