Comment puis-je enregistrer mes clés secrètes et le mot de passe de manière sécurisée dans mon système de contrôle de version?

- Je conserver les paramètres importants comme les noms d'hôte et les ports de développement et de production de serveurs dans mon système de contrôle de version. Mais je sais que c'est mauvaise pratique de garder secrets (comme des clés privées et de la base de données des mots de passe) dans un dépôt VCS.

Mais des mots de passe, comme tout autre paramètre--semblent comme ils devraient être versionnés. Donc, ce que est la bonne façon de garder les mots de passe de la version contrôlée?

J'imagine qu'il consisterait à maintenir le secrets dans leur propre "secrets" paramètres du fichier et avoir que fichier crypté et la version contrôlée. Mais quelles technologies? Et comment le faire correctement? Est-il une meilleure façon entièrement d'aller à ce sujet?


Je vous pose la question en général, mais dans mon cas précis, je voudrais stocker des clés secrètes et mots de passe pour un Django/Python site à l'aide de git et github.

Aussi, un idéal solution serait de faire quelque chose de magique quand je push/pull avec git--par exemple, si les mots de passe cryptés modifications du fichier de l'exécution d'un script qui demande un mot de passe et le déchiffre en place.


EDIT: Pour plus de clarté, je suis demandant où stocker production secrets.

  • En fait avant de l'argent pour garder le repo privé.
  • J'ai en fait déjà payer pour un repository privé, mais le fait demeure, vous ne devriez pas conserver les informations sensibles de votre référentiel.
  • Je pense qu'une grande partie de la raison des réponses satisfaisantes seront difficiles à obtenir, c'est que l'ancienne, en clair le mot de passe pour se connecter à une base de données est une relique de moins hostile ère. La bonne réponse est quelque chose comme "votre code ne doit pas avoir besoin d'un secret", mais les systèmes que vous accédez à ne pas vous donner beaucoup de choix.
  • Aurez-vous accès à ces données confidentielles uniquement à partir de Python? Alors je vous recommande d'un fichier spécial de l'objet.
  • un fichier spécial de l'objet? Qu'est-ce que cela? Où puis-je trouver de la documentation?
  • Pourquoi? Il n'y a rien de valeur dans la version de contrôle des mots de passe pour les services extérieurs. La valeur principale de contrôle de version, c'est que vous pouvez inspecter l'historique des révisions de votre application appelée à être en ordre de marche et de les exécuter. Cependant, d'anciens mots de passe sont inutiles pour vous. Si ils ont été révoqué, ils ne jamais travailler à nouveau.
  • ce que vous dites est logique, mais dans ce cas, que recommandez-vous?
  • Double Possible: programmers.stackexchange.com/questions/205606/...

InformationsquelleAutor Chris W. | 2012-07-20