Como montar arquivos como usuário específico ao usar o remapeamento do namespace do docker?

Como montar arquivos como usuário específico ao usar o remapeamento do namespace do docker?

Descrição do Problema:

Eu tenho um webservice usando docker para executar nginx e haproxy (entre outros contêineres). Quero fornecer essas imagens do docker por meio de um registro de hub do docker privado e, portanto, não quero criar nenhum certificado tls nas imagens para que cada cliente possa montar seu próprio certificado no contêiner (nginx e haproxy).

Para proteger o contêiner haproxy, eu o executo sem privilégios de root (porta acima de 1000 mapeada para porta abaixo de 1000 no docker-compose). O contêiner nginx é baseado na imagem oficial do nginx e, portanto, só usa root quando o serviço é iniciado e depois muda para o usuário nginx.

Para proteger ainda mais os contêineres, configurei o docker-remapping (configuração padrão com o usuário dockremap padrão).

Problema:

As chaves pública e privada do certificado tls estão sendo montadas nos contêineres como o usuário "ninguém" e, portanto, os contêineres haproxy e nginx não podem ler esses arquivos porque usam usuários diferentes (não root) para ler os arquivos.

Soluções (até agora):

  1. Posso tornar os arquivos tls legíveis mundialmente, por exemplo, 644, isso funciona, mas é uma solução terrivelmente insegura.

  2. Eu poderia construir minha própria imagem nginx assim como fiz com a imagem haproxy e adicionar os usuários do contêiner ao grupo ninguém para poder alterar as permissões dos certificados para 640. Este é um truque feio.

  3. Elimine o remapeamento do docker para que eu possa montar arquivos de certificado com o mesmo uid do usuário nos contêineres nginx e haproxy. Isso significaria que eu perderia a segurança do remapeamento do docker e os arquivos de certificado precisariam do mesmo uid que o usuário nos contêineres haproxy e nginx.

  4. Crie novas imagens durante a instalação (e ao atualizar as imagens base ou os arquivos de certificado) no servidor do meu cliente com minhas imagens existentes do meu repositório docker privado como imagens base. Os arquivos de compilação do docker no servidor de meus clientes serão muito simples e destinam-se apenas a copiar os arquivos de certificado SSL para os contsiners com as permissões corretas.

Pergunta:

Existe uma maneira de mapear o uid do host para o uid do usuário dentro do contêiner, para que os arquivos montados tenham o uid correto?

informação relacionada