Segurança · 30 de setembro de 2026
Também publicado em Polski, Nederlands, עברית, العربية, Français
Configuração de acesso SSH para containers rootless no Docker
A configuração de acesso SSH em containers rootless no Docker é um desafio crescente, especialmente com o aumento da utilização de agentes de inteligência artificial. O acesso SSH é amplamente utilizado para interação com repositórios, servidores e automação, mas a preocupação com a segurança dos chaves privadas ainda persiste.
A proposta apresentada envolve um método arquitetônico que permite ao processo acessar recursos permitidos via SSH, sem que o próprio chave privada seja acessível ao processo. Isso é crucial, pois mesmo a confiança em softwares pode ser comprometida por vulnerabilidades, expondo segredos a ataques.
Um dos principais desafios nesse contexto é a configuração do Docker em modo rootless, que requer que o daemon do Docker funcione sem privilégios de root no host. Além disso, o processo dentro do container não deve ser executado como root, e a capacidade Linux deve ser removida do container para garantir a segurança.
O método sugere que, em vez de passar diretamente a chave privada para o container, um socket Unix do ssh-agent deve ser utilizado. O OpenSSH se conecta a esse socket através da variável SSH_AUTH_SOCK, permitindo a autenticação sem expor a chave privada. Essa abordagem evita que a chave privada seja lida ou transferida para fora do container.
Entretanto, a implementação dessa solução enfrenta complicações técnicas relacionadas ao UID. O UID do processo dentro do container rootless não corresponde ao UID no host, o que pode gerar problemas de autenticação. Portanto, é vital que os usuários compreendam como funcionam os processos e a comunicação entre containers e o host para evitar falhas.
As implicações de segurança são significativas, pois se um container for comprometido, a chave privada não deve ficar acessível, mantendo assim a segurança da infraestrutura. Além disso, o conteúdo do container deve ser tratado com cautela para evitar exposição de dados sensíveis, especialmente em sistemas que interagem com APIs externas ou servidores remotos.