A idéia é colocar todos os nossos dados sensíveis [...]
O significado de "todos" nesta frase deve ser analisado com muito cuidado antes de implementar a solução que você planeja.
O cofre Ansible é uma ferramenta muito útil, mas deve ser usada apenas para armazenar segredos que são:
- Especificamente necessário para implantações ansíveis
- Facilmente tornado inútil para os proprietários que deveriam desconhecer eles, mas que podem "lembrá-los" ilegítimamente (normalmente funcionários não autorizados)
O segundo ponto é crítico.
Muitas pessoas, e potencialmente toda a equipe do DevOps, terão acesso à senha do Ansible Vault e, portanto, a todos os segredos.
Portanto, para todos os segredos armazenados no cofre, deve-se manter uma condição para a qual uma pessoa ou máquina com acesso não autorizado a eles deve ser incapaz de usá-los, se assim o desejar.
Em termos concretos, se você usar o ansible para implantar um banco de dados e seus usuários, poderá armazenar as senhas no cofre, mas terá que ter muito cuidado (e provavelmente considerar outra solução) se esse serviço estiver disponível na Internet e sem a necessidade de autenticação VPN!
Os usuários (DevOps) expostos ao segredo devem ser incapazes de usar senhas "lembradas" se uma barreira de segurança lhes for imposta (por exemplo, o acesso VPN revogado). Além disso, o acesso ao repositório de código-fonte (onde o cofre está armazenado) também deve ser revogado antes que as senhas sejam alteradas.
Sob essas condições, o cofre ansible é uma ferramenta muito útil.
Tentar armazenar um segredo que pudesse ser usado por qualquer pessoa ou máquina na Internet no cofre seria um erro (por exemplo, credenciais de VPN dos usuários).
Existe alguma outra opção, que é a melhor (e segura) maneira de armazenar a senha do ansible-vault
Nas condições do parágrafo anterior, acho que uma boa prática seria:
- Armazene a senha do cofre em um cofre seguro externo (algo como o Vault da HashiCorp ou qualquer SaaS para gerenciamento de credenciais)
- Permitir acesso ao item do cofre externo ao DevOps (eles precisarão da senha para teste) e ao sistema de CI / CD ou controlador ansible
Mantenha uma convenção para usar segredos ! Você não poderá revisar alterações nos segredos e não poderá grep para variáveis ansible nos arquivos de segredos! Portanto, seja cuidadoso desde o início. Uma boa convenção é nomear todas as variáveis armazenadas no cofre ansible com um secret_
prefixo. Quando você verá algo como:
postgres.yml:
postgres_password: "{{ secret_postgres_password }}"
você saberá que o valor é armazenado no cofre ansible.