Qual é o objetivo final: Instalar um determinado pacote com segurança para uma série de servidores.
Temos servidores rodando em diferentes data centers em nuvem. Instalamos nosso aplicativo neles como deb
arquivo. Atualmente, fazemos upload das atualizações como deb
arquivos por meio de um script ansible. Isso é lento, pois o nó "mestre" precisa atualizar todas as máquinas.
Achamos que seria melhor se pudéssemos emitir sudo apt update <package>
para cada nó.
Mas e a segurança? O servidor de repositório precisaria estar na Internet.
Assim, precisaríamos ter certeza de que o pacote é instalado com segurança.
deb
arquivos podem ser assinados, mas o afaik dpkg-verify
apenas verifica se a assinatura está correta. Assim, um pacote mal-intencionado, mas assinado corretamente, passaria na verificação de verificação.
Então nós poderíamos
- Instalar de um servidor de repositório https
- Instale apenas pacotes assinados com uma chave específica (somente para nosso aplicativo
deb
)
Outra abordagem é aceitável desde que a segurança não seja comprometida.
Se você usar
apt install
ou o módulo ansibleapt
para instalar pacotes, os metadados do repositório deverão ser assinados por uma chave conhecida em seu sistema, como as chaves de assinatura de distribuição do Ubuntu ou quaisquer chaves que você adicionar explicitamente com oapt_key
módulo ansible. Qualquer coisa assinada por uma chave desconhecida, ou não assinada, seria rejeitada.Assim, você pode simplesmente criar um repositório apt para armazenar seus pacotes, assinar seu arquivo Release com sua própria chave GPG e distribuir essa chave pública para seus servidores.