Alors, un collègue a examiné mon travail et m'a dit que je devrais toujours signer mes commits et tags de manière cryptographique. Lorsqu'on lui a demandé pourquoi, il n'a pas su me l'expliquer et a répondu: "C'est juste une bonne chose à faire".
En essayant d'éviter un scénario évident concernant les chimpanzés , pourquoi devrais-je vraiment? Existe-t-il vraiment autant d'avantages distincts et aucun inconvénient?
Quelles sont les raisons pratiques qui me donneraient envie de signer chaque commit et tag que je fais?
git
cryptography
Madara Uchiha
la source
la source
Réponses:
(Ceci est largement basé sur une histoire d'horreur Git: Intégrité du référentiel avec des validations signées - une très bonne lecture et plus d'informations que je ne pourrais en donner pour répondre.)
Un référentiel git peut être compromis de différentes manières (il ne s'agit pas d'une faille de sécurité, mais d'une réalité, il ne faut pas éviter d'utiliser git pour cette raison). Par exemple, quelqu'un peut avoir poussé dans votre référentiel en prétendant être vous. Ou d'ailleurs, quelqu'un aurait pu pousser dans le référentiel de quelqu'un d' autre prétendant être vous (quelqu'un pourrait également accéder à son propre référentiel prétendant être vous). Cela fait partie de la vie dans un DVCS.
Juste à titre d'exemple:
Là, j'ai changé ma configuration git pour prétendre que je suis toi. Et maintenant, je peux m'engager et laisser ces commissions s'intégrer d'une manière ou d'une autre dans la production, et il semblerait que vous l'ayez fait.
Avec la signature des commits (et des balises), vous pouvez prouver que certains commits et balises venaient de vous (et les éléments non signés n'auraient pas dû figurer dans la version de production). C'est vraiment la clé de tout. En signant des engagements, vous dites que c'est votre travail.
L'aspect "votre travail" est particulièrement important dans le noyau Linux (et donc git) qui est parfois frappé de poursuites pour atteinte aux droits d'auteur. En signant des commits, vous indiquez que vous avez le droit d'accéder au logiciel: il en suit l'origine. Il se peut que vous n’ayez pas accès à la source faisant l’objet du droit d’auteur et que cette revendication soit sans fondement. Il se peut que la société ait oublié que vous travailliez pour eux il y a quelques années et, sous leur direction, a ajouté de la matière au noyau, ou peu importe.
Il y a un débat quant à savoir si chaque commit doit être signé. De GPG signant pour git commit? (retour en '09), Linus a écrit:
Vous pouvez lire beaucoup plus d'informations sur la connexion à git ici.
Cela dit, il a quand même fait son chemin.
Il semble y avoir un consensus majoritaire selon lequel la signature des commits n'est pas nécessaire, mais la signature des balises est très bonne. Cet article de blog lié en haut suggère qu'il faut tout signer de toute façon. Comme je l'ai dit, il y a un débat sur la question de savoir si chaque engagement est nécessaire ou non.
La clé du débat "signer chaque engagement" a probablement à voir avec le flux de travail que vous utilisez. La plupart des gens font une série de commits dans leur rapport local, puis poussent cet ensemble. Il devrait suffire de marquer la collection finale (en supposant que vous vous assurez que toutes les modifications sont correctes). Si vous travaillez dans un environnement où de nombreux commits simples se déplacent, la distinction entre une balise et un commet devient moins… distincte - et la signature des commits peut devenir plus utile.
la source
commit.gpgsign = true
aucun inconvénient. Bien que cela puisse paraître idiot, cela ne semble pas être trop cher.