Git Deploy Key
Pour le projet d’un client, j’ai besoin de déployer du code sur un serveur à partir d’un dépôt git. N’étant pas l’administrateur du serveur, je ne souhaite pas y laisser trainer une de mes clefs privées.
J’utilise Gitlab — qui est une très bonne altérnatives aux bitbucket et github. Malheureusement, on ne peut pas sur gitlab avoir plusieurs clefs privées avec des permissions distinctes.
Car face à un admin peut scrupuleux ou simplement à une compromission du serveur, l’usurpateur aurait alors accès à tous mes projets.
C’est également l’application d’un bonne pratique en sécurité : réduire les privilèges au maxium.
Il existe plusieurs techniques pour palier ce problème, en voici deux :
- créer un utilisateur chez gitlab.com (juste pour le serveur) et lui donner uniquement les droits en lecture
- utiliser une clef de déploiement (deploy key) qui est en lecture seule
La deuxième, utiliser une clef de déploiement à l’avantage d’être fait pour ça et sera probablement plus facile à gérer dans le temps.
Pour la mettre en œuvre, rien de bien particulier : un ssh-keygen pour générer un .ssh/id_rsa.pub et .ssh/id_rsa dans la session de l’utilisateur sur le serveur qui va faire le git pull. Il ne reste plus qu’à confier la clef publique (id_rsa.pub) à l’hebergeur du dépot (via l’interface web généralement).
Un peu plus sur le sujet :
Et voilà !