L'idée est de mettre toutes nos données sensibles [...]
La signification de «tous» dans cette phrase doit être analysée très attentivement avant de mettre en œuvre la solution que vous envisagez.
Le coffre-fort Ansible est un outil très utile, mais il ne doit être utilisé que pour stocker des secrets qui sont:
- Spécifiquement nécessaire pour les déploiements ansibles
- Inutilisable facilement pour les propriétaires qui ne devraient pas les connaître, mais qui peuvent se souvenir d'eux de manière illégale (généralement des employés hors-bord)
Le deuxième point est critique.
De nombreuses personnes, et potentiellement toute l'équipe DevOps, auront accès au mot de passe du coffre-fort ansible et donc à tous les secrets.
Par conséquent, pour tous les secrets stockés dans le coffre-fort, une condition doit être respectée pour laquelle une personne ou une machine avec un accès non autorisé à ceux-ci devrait être incapable de les utiliser si cela est souhaité.
Concrètement, si vous utilisez ansible pour déployer une base de données et ses utilisateurs, vous pouvez stocker les mots de passe dans le coffre-fort, mais vous devrez être très prudent (et probablement envisager une autre solution) si ce service sera disponible sur Internet. et sans avoir besoin d'authentification VPN!
Les utilisateurs (DevOps) exposés au secret devraient être incapables d'utiliser des mots de passe "mémorisés" si une barrière de sécurité leur est imposée (par exemple, l'accès VPN révoqué). En plus de cela, l'accès au référentiel de code source (où le coffre-fort est stocké) doit également être révoqué avant de changer les mots de passe.
Dans ces conditions, ansible vault est un outil très utile.
Essayer de stocker un secret qui pourrait être utilisé par n'importe quelle personne ou machine sur Internet dans le coffre-fort serait plutôt une erreur (par exemple, les informations d'identification VPN des utilisateurs).
Existe-t-il d'autres options, qui sont la meilleure façon (et sécurisée) de stocker le mot de passe du coffre-fort ansible
Dans les conditions du paragraphe précédent, je pense qu'une bonne pratique serait:
- Stockez le mot de passe du coffre-fort dans un coffre-fort sécurisé externe (quelque chose comme Vault de HashiCorp ou tout SaaS pour la gestion des informations d'identification)
- Autoriser l'accès à l'élément de coffre externe à DevOps (ils auront besoin du mot de passe pour les tests) et au système CI / CD ou au contrôleur ansible
Gardez une convention pour utiliser des secrets ! Vous ne pourrez pas consulter les modifications apportées aux secrets et vous ne pourrez pas rechercher les variables ansibles dans les fichiers secrets! Soyez donc minutieux depuis le début. Une bonne convention consiste à nommer toutes les variables stockées dans le coffre-fort ansible avec un secret_
préfixe. Quand vous verrez quelque chose comme:
postgres.yml:
postgres_password: "{{ secret_postgres_password }}"
vous saurez que la valeur est stockée dans le coffre-fort ansible.