12
votes

Quelle est la meilleure pratique pour garder les secrets à partir d'un référentiel GIT?

Problème strong>

Considérez cet arbre de fichier comme mon référentiel de développement. P>

 - foo/
   - .git/
     - [...]
   - bar/
     - backupclient.py
   - supersecretstoragecredentials.ini


0 commentaires

5 Réponses :


5
votes

Qu'est-ce que vous décrivez en option 1 est essentiellement couvert par la macule étape d'un contenu pilote de filtre .

pilote de filtrage

Vous avez les deux options présentées dans " Comment travailler sur une bibliothèque de gouttes? "Question.

Le script de tampon prendrait votre supersecrettoragecretientials.ini-Exemple (Versed), copiez-le sous forme de supersecretStorageCreDentials.ini ( pas Versed, ignoré par GIT), et remplissez ses valeurs d'une autre source.

Mais à côté de l'aspect technique de la manière dont vous mettrez en œuvre votre politique, la mesure principale consiste à vous assurer que vos valeurs secrètes ne stockent pas du tout dans un repo git, mais deviennent à partir d'une autre référentielle.


0 commentaires

3
votes

J'utilise votre solution (vos deux solutions sont identiques, seuls les noms de fichiers diffèrent). Avez-vous des problèmes avec cela? Quel type de fonctionnalité attendriez-vous?

En outre, il existe une solution plus intéressante xxx

espérons que c'est ce que vous voulez. Cependant, cela échouerait si l'amont change le fichier et que vous tirez le changement (pas complètement sûr, c'est bon ou mauvais).


0 commentaires

12
votes

Vérifiez le fichier SuperSecretStorAreCreDentials.ini avec certaines valeurs d'espace réservé, puis

git update-index --no-assume-unchanged supersecretstoragecredentials.ini


2 commentaires

Le seul problème avec ces solutions est qu'un git tirer par un autre utilisateur créera des conflits de fusion. Pourtant, c'est une excellente solution tant que votre base de consommation est limitée.


@jwandborg Bon point à noter! a proposé cette solution que ce fichier est utilisé pour stocker des informations d'identification locales.



1
votes

Dans mon expérience, après avoir essayé toutes les options énumérées dans votre question et dans les réponses jusqu'à présent, votre option n ° 2 a prouvé le plus simple et le plus propre. Cela résout le problème de manière fiable, avec la moindre magie et est la plus facile à comprendre. C'est ennuyeux de la meilleure façon.


2 commentaires

Et avec cela, la solution mentionnée dans Stackoverflow.com/a/8309450/202522 est le choix le plus simple et le meilleur choix imo.


Non, vous voulez un fichier .gitingore pour le fichier _local.ini .



1
votes

Quelque chose que je suis essuie pour le moment est des secrets git.

https://github.com/awslabs/git-secrets

Il raccroche dans le processus de validation GIT et vérifie les motifs qui ressemblent à des informations d'identification qui ne doivent pas être vérifiées.

Vous devez vous assurer qu'il est installé sur le système de chaque développeur et configuré pour chaque référentiel GIT. Cela peut être réalisé assez facilement si vous intégrez une vérification dans le processus de construction.


0 commentaires