Maîtriser les permissions dans GitLab CI
Pourquoi le contrôle d'accès est-il vital ?
Dans une usine logicielle moderne, tout le monde n'a pas besoin de posséder les clés de tous les bureaux. Donner un accès total à un stagiaire qui vient d'arriver ou à un client externe présente un risque de sécurité majeur. GitLab utilise un système de permissions granulaires pour s'assurer que chaque membre de l'équipe possède exactement les droits nécessaires à sa mission.
Imaginez que votre projet est un immeuble sécurisé. Le Guest reste à l'accueil, le Reporter peut visiter les bureaux pour inspecter le travail, le Developer possède son propre bureau pour produire et le Maintainer est le gestionnaire qui possède le pass général de l'immeuble. De nos jours, cette rigueur est le socle de la culture DevSecOps.
Niveaux de permissions des utilisateurs
Le tableau suivant résume les capacités de chaque rôle au sein d'un projet. Notez que de nos jours, le rôle historiquement nommé "Master" est définitivement devenu Maintainer pour plus de clarté.
| Action | Guest | Reporter | Developer | Maintainer |
|---|---|---|---|---|
| Créer des tickets et commenter | ✅ | ✅ | ✅ | ✅ |
| Cloner et télécharger le code | ❌ | ✅ | ✅ | ✅ |
| Créer des branches et Merge Requests | ❌ | ❌ | ✅ | ✅ |
| Pousser vers des branches non protégées | ❌ | ❌ | ✅ | ✅ |
| Gérer les Jalons (Milestones) | ❌ | ❌ | ✅ | ✅ |
| Annuler ou relancer des jobs CI/CD | ❌ | ❌ | ✅ | ✅ |
| Ajouter de nouveaux membres | ❌ | ❌ | ❌ | ✅ |
| Pousser vers des branches protégées (main) | ❌ | ❌ | ❌ | ✅ |
| Gérer les Runners et variables secrètes | ❌ | ❌ | ❌ | ✅ |
Permissions spécifiques à GitLab CI/CD
L'automatisation possède ses propres règles de sécurité. Les permissions CI/CD déterminent qui peut manipuler les Pipelines et accéder aux ressources critiques comme le registre d'images Docker.
Capacités liées aux Jobs
Lorsqu'un pipeline s'exécute, il utilise les droits de l'utilisateur qui a déclenché le commit. Voici les limitations techniques rencontrées :
- Visualisation : Les Guests et Reporters peuvent voir l'état des jobs, mais ne peuvent pas voir les logs détaillés si ceux-ci contiennent des informations sensibles.
- Nettoyage : Seuls les Developers et rôles supérieurs peuvent supprimer les artefacts (fichiers générés) d'un job.
- Sécurité : Seuls les Maintainers peuvent configurer les Shared Runners (Runners partagés) à l'échelle du projet.
Interaction avec le registre de conteneurs
Le stockage des images Docker est très encadré :
- Pull : Autorisé à partir du rôle Reporter (lecture seule).
- Push/Delete : Strictement réservé au rôle Developer et supérieurs.
Échec de permission
Voici ce qui s'affiche dans votre terminal si vous tentez de pousser du code vers la branche protégée main alors que vous ne possédez que le rôle Developer :
Sortie terminal - Erreur de permission :
git push origin main
Sortie terminal - Erreur de permission :
remote: GitLab: You are not allowed to push code to protected branches on this project.
To https://gitlab.example.com/mon-groupe/mon-projet.git
! [remote rejected] main -> main (pre-receive hook declined)
error: failed to push some refs to 'https://gitlab.example.com/mon-groupe/mon-projet.git'
Focus sur le LFS
LFS (Large File Storage) est une extension de Git qui permet de gérer les fichiers volumineux (vidéos, graphiques haute résolution) sans ralentir le dépôt. Les permissions LFS suivent strictement les permissions du dépôt : si vous avez le droit de "Push" sur une branche, vous avez le droit d'envoyer vos fichiers LFS associés.
Conclusion
Bien configurer les Permissions est la première étape pour protéger l'intégrité de votre code. Cela permet d'automatiser vos tests en toute confiance, sachant que seules les personnes habilitées peuvent modifier les réglages critiques ou déployer en production.
Maintenant que vous savez "qui a le droit de quoi", nous allons voir comment donner au système les moyens techniques d'agir. Dans le prochain chapitre, nous apprendrons à configurer les GitLab Runners, ces moteurs qui exécutent vos tâches automatisées.
Espace commentaire
Écrire un commentaire
Rejoignez la discussion
Vous devez être connecté pour poster un message.
29 commentaires
C'est réservé aux
Maintaineruniquement. Si t'es justeDeveloper, tu ne verras même pas l'option ou elle sera grisée. Demande à un admin de te upgrader.Même problème ici. Comment on vérifie qui a les droits pour gérer les
Shared Runners? Je suis bloqué dans le menu paramètres.Vérifie si le pipeline n'est pas bloqué par une protection sur la branche ou si le job n'est pas configuré avec
when: manualsur une branche où tu n'as pas les droits de push. Si c'est un job de déploiement, c'est souvent là que ça coince.Super article. J'ai un souci avec mon rôle
Developer, je n'arrive pas à relancer un job CI/CD alors que l'article dit que c'est possible. Une idée ?