Au canton de Genève on utilise un serveur GitLab pour stocker, partager et versionner les sources des logiciels. Si vous avez déjà parcouru nos précédents billets de ce blog, vous devez être familier de GitHub. GitLab est un outil comparable à GitHub, et même concurrent ; pour des raisons techniques, la canton a choisi GitHub pour publier en open source et GitLab pour le stockage maison.
Comme pour beaucoup d'outils mis à disposition d'équipes entières, les droits d'accès sur GitLab doivent être soigneusement cloisonnés : par exemple, on tient à ce qu'un développeur PHP puisse librement créer, modifier ou détruire des projets PHP, mais qu'il n'ait pas le droit d'en faire autant pour les projets Base de données, ou alors qu'il ait juste le droit de consulter ces derniers. Cette configuration des droits n'est pas extrêmement compliquée, mais elle est vaste : les informaticiens sont nombreux dans la maison (le contribuable en sait quelque chose), les groupes et sous-groupes auxquels ils appartiennent également, sans compter qu'un même utilisateur peut appartenir à plusieurs groupes. On ne veut pas qu'une personne doive passer ses journées à maintenir cette configuration de GitLab.
Or justement, il existe au canton un acteur qui assure déjà toute cette configuration : c'est Gina, héroïne d'un billet précédent. Gina sert à gérer les droits d'accès de tous les utilisateurs de l'État, avec les groupes et sous-groupes auxquels ils sont affiliés. Gina expose ces informations au format technique appelé LDAP.
Le logiciel GitSync a ainsi été créé par le canton pour assurer la copie (on dit parfois "la synchronisation") des droits des utilisateurs, de Gina vers le serveur GitLab. Ceci se fait automatiquement et les droits d'accès à GitLab sont donc gérés sans frais. De plus, ils sont gérés de façon exacte : il n'y pas deux configurations, qui risquent en permanence de diverger, mais une seule, simplement et constamment répliquée d'un système vers l'autre. C'est une grosse épine retirée du pied des gestionnaires du serveur GitLab.
Pourquoi publier GitSync en open source ? Qui s'intéresserait à savoir comment le canton de Genève synchronise un programme purement interne (Gina) avec GitLab ? En fait, le format LDAP sous lequel Gina expose ses données est précisément le format utilisé par les annuaires d'entreprises du monde entier. Et GitLab est une plateforme de plus en répandue. Aussi fournir une solution pour copier les données de Gina vers GitLab peut être intéressant bien en-dehors de chez nous. Voilà pourquoi GitSync a été diffusé sur GitHub.
Toute entreprise ou organisation est libre de reprendre ce projet GitSync, de l'installer chez elle, de le modifier selon ses besoins et, qui sait, de nous proposer, toujours sur GitHub, des amélirations.