Atualmente, como somos um aplicativo em execução em um único contêiner de docker, o aplicativo precisa que todos os tipos de dados confidenciais sejam transmitidos como variáveis de ambiente,
Estou colocando aqueles no comando run para que eles não acabem na imagem e, em seguida, em um repositório, no entanto, acabo com um comando de execução muito não seguro,
Agora, entendo que existem segredos do estivador, como posso usá-los sem implantar um cluster? ou existe alguma outra maneira de proteger esses dados?
Cumprimentos,
security
docker
docker-swarm
Juan Sebastian
fonte
fonte
Respostas:
Você não pode ... Ele não suporta segredos sem o Swarm. A menos que '' possa ser '' você '' Enxame '' usando apenas um nó.
A outra solução seria, acho que usar um software de cofre de terceiros como este:
https://www.vaultproject.io/
Mas então, para usar os segredos nos seus contêineres do Vault, você precisará ler o documento.
Espero que isso o leve ao caminho certo para começar.
fonte
build-args
não estão incluídos na imagem final, mas só podem ser acessados durante o tempo de criação da imagem. Uma solução adequada é gravar os segredos nos arquivos no host (com permissões apropriadas, é claro) e montá-los em volume no contêiner do docker. Seu aplicativo dentro do contêiner pode ler os segredos desses arquivosSim , você pode usar segredos se usar um arquivo de composição . (Você não precisa executar um enxame).
Você usa um arquivo de composição com docker-compose : existe documentação para "segredos" em um arquivo docker-compose.yml .
Eu mudei para o docker-compondo porque queria usar segredos. Estou feliz que sim, parece muito mais limpo. Cada serviço é mapeado para um contêiner. E se você quiser mudar para um enxame, basicamente já está lá.
Nota: Segredos não são carregados no ambiente do contêiner, eles são montados em / run / secrets /
Aqui está um exemplo:
1) Estrutura do Projeto:
2) conteúdo do docker-compose.yml:
3) conteúdo super_duper_secret.txt:
4) Execute este comando a partir da raiz do projeto para verificar se o contêiner tem acesso ao seu segredo (o Docker deve estar em execução e o docker-compose instalado):
Você deve ver seu contêiner exibindo seu segredo.
fonte
docker-compose
usar um segredo? A documentação e meu entendimento da implementação indicam que o segredo não será configurado no contêiner.docker-compose.yml
em um único nó); Quando inicio, o contêiner/run
contém apenas umnginx.pid
e não éMounts
mostrado pordocker inspect $container
.