Mes EDB sont séparés par:
Nous téléchargeons toutes les clés avec un suffixe spécial dans chaque nouvelle instance EC2 au fur et à mesure que nous l'amorçons, puis supprimons toutes les clés qui n'ont été utilisées par aucune des recettes de la run_list à la fin des premières exécutions chef-client (qui seront juste au début de l'instance.)
Tous les fichiers sont téléchargés en tant que propriétaire et groupe "root" et avec uniquement des autorisations de lecture.
Chaque recette qui utilise un EDB, génère le nom de l'EDB et le nom du fichier de clé au moment de l'exécution de la recette en concaténant 'edb_' + l'environnement des nœuds + le nom spécifique à la recette / à l'élément + '.key', puis recherche la clé par ce nom . (S'il n'existe pas, cela déclenche une exception par défaut.)
Ainsi, pour notre serveur couchdb, exécutant un rôle appelé «couch», pour obtenir les informations d'identification que nous utilisons pour les utilisateurs admins dans l'environnement de développement, la recette recherche une clé nommée «edb_dev_couch.key»
Il recherche ensuite dans un sac de données nommé «edb_dev» un élément nommé «couch_credentials».
Pour la gestion des clés, j'utilise actuellement l'approche simple de:
- téléchargez toutes les clés EDB via le script de démarrage et ajoutez «_x» aux noms de clés
- Demandez à chaque recette qui utilise un EDB regarder dans le répertoire des clés pour la clé dont il a besoin.
- si la clé existe avec un suffixe «_x», renommez-la pour supprimer le suffixe «_x».
- ajouter une recette à la fin de chaque run_list qui supprime toutes les clés avec un suffixe «_x»
Espérons que cela limite le temps pendant lequel les clés en dehors de la portée d'un nœud unique sont susceptibles jusqu'à ce que la machine ait été amorcée et ait exécuté la première exécution de chef_client.
Il s'agit de notre première série de tests sur la façon de sécuriser les clés, mais jusqu'à présent, il répond à nos besoins actuels car il empêche un serveur de développement enraciné d'être en mesure d'accéder immédiatement à toutes les autres informations d'identification de serveur stockées dans un EDB.
Pour conserver une recette à la fin de chaque liste d'exécution, j'utilise un travail d'exécution de couteau qui s'assure que cette recette delete_keys est exactement la dernière recette sur chaque nœud.