Passar uma senha em uma variável de ambiente é tão seguro quanto fazer com que o programa a leia de um arquivo. Somente processos em execução como o mesmo usuário podem ler o ambiente de um processo , e esses processos podem ler os mesmos arquivos de qualquer maneira.
Observe que isso é diferente de passar uma senha na linha de comando. Os argumentos da linha de comando são legíveis por todos os processos em execução na mesma máquina (exceto medidas de proteção), não apenas pelos processos em execução como o mesmo usuário.
Se você passar uma variável pelo ambiente, tome cuidado se o programa iniciar outros programas. Esses outros programas herdarão o ambiente de seus pais. Portanto, não faça isso se estiver com medo de que outros programas possam vazar acidentalmente o conteúdo de seu ambiente.
A falha no seu cenário é "criar uma variável de ambiente apropriada quando o sistema do servidor estiver configurado". Uma variável de ambiente é uma propriedade dinâmica de um processo. Você não pode criá-lo ao configurar um sistema, não se, ao configurar, significa algo que sobrevive a uma reinicialização. O que você quer dizer é, presumivelmente, que o administrador arranjado para esta variável para estar presente no ambiente quando um determinado usuário efetuar login. Isso é feito através de um arquivo de configuração (normalmente ~/.pam_environment
ou ~/.profile
ou um arquivo lido a partir ~/.profile
). Portanto, essa solução não move a senha dos arquivos de configuração.
Configurar as coisas para que as senhas estejam no ambiente de tempo de login do usuário não é uma boa ideia. Isso significa que todo processo executado como esse usuário terá o segredo, por isso é vulnerável a um vazamento em qualquer lugar.
Uma senha deve ser colocada em um arquivo além dos arquivos de configuração que estão sob controle de versão e dos mecanismos normais de implantação. Não há problema em colocar a senha no ambiente em algum momento, se for conveniente, mas isso deve ser feito no menor conjunto de programas possível.