Maîtriser les permissions GitLab CI/CD pour la sécurité

Comprenez comment les rôles utilisateurs impactent vos pipelines GitLab et sécurisez vos branches protégées.

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

ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, utilise Terraform avec le provider GitLab. C'est la seule façon propre de gérer ça à grande échelle sans cliquer partout.

22/05/2026 à 19:00

On peut automatiser la gestion des rôles via un script ?

22/05/2026 à 11:24
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

T'essaies de pousser sur une branche protégée. Utilise une branche de feature :

git checkout -b ma-nouvelle-feature
git push origin ma-nouvelle-feature
22/05/2026 à 05:51
corinne37
Membre Actif Rédacteur Secouriste
Avatar de corinne37
corinne37
Membre Actif Rédacteur Secouriste

Mon pipeline échoue systématiquement sur le git push, le message dit pre-receive hook declined. J'ai pourtant bien fait mon git add.

22/05/2026 à 00:24
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

C'est impossible. Si la variable est marquée Protected, elle n'est injectée que sur les branches protégées, mais le Maintainer est le seul à pouvoir la modifier.

21/05/2026 à 18:59

Comment je peux empêcher un Developer de modifier les variables CI/CD protégées ?

21/05/2026 à 12:20
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Pas de souci. Pense à bien auditer tes membres chaque trimestre.

21/05/2026 à 05:09
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, il peut modifier le .gitlab-ci.yml et potentiellement exposer des secrets. Sois prudent avec les upgrades de rôle.

21/05/2026 à 00:11

Si je passe un Reporter en Developer, il peut tout casser sur la CI ?

20/05/2026 à 19:35
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, dans les réglages de visibilité du projet. Settings > General > Visibility. Mais attention, ça expose tes noms de branches.

20/05/2026 à 15:13
nath-pinto
Membre Actif
Avatar de nath-pinto
nath-pinto
Membre Actif

J'ai vu que certains Guest peuvent voir les pipelines. C'est configurable ?

20/05/2026 à 07:15
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Tu dois être Developer minimum. Sinon, lance ça via l'API ou supprime le pipeline complet si t'as les droits.

20/05/2026 à 00:39
allard-charlotte
Membre Actif
Avatar de allard-charlotte
allard-charlotte
Membre Actif

J'ai besoin de supprimer des artefacts de build pour libérer de l'espace, comment faire ?

19/05/2026 à 17:28
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Le Owner peut supprimer le projet et gérer la facturation. Le Maintainer gère juste le code et la CI. Ne donne jamais Owner à quelqu'un qui n'a pas besoin de gérer le groupe.

19/05/2026 à 12:09
noel-celina
Membre
Avatar de noel-celina
noel-celina
Membre

C'est quoi la différence entre Maintainer et Owner au final ?

19/05/2026 à 05:36
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

T'es peut-être sur un projet privé. Vérifie ton login Docker :

docker login registry.gitlab.com -u  -p 
18/05/2026 à 21:58

J'ai un souci avec mon Docker Registry, j'ai une erreur 403. Je suis Developer pourtant.

18/05/2026 à 14:13
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, si les logs contiennent des secrets ou des infos sensibles, GitLab restreint la visibilité. Passe Developer pour tout voir.

18/05/2026 à 07:22
louis-pages
Membre Actif
Avatar de louis-pages
louis-pages
Membre Actif

Je suis Reporter et je vois pas les logs de mon job. C'est normal ?

17/05/2026 à 23:38
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Tu ne peux pas vraiment via Git. Utilise l'API GitLab avec un Personal Access Token :

curl --header "PRIVATE-TOKEN: " "https://gitlab.com/api/v4/projects//members/"
17/05/2026 à 17:20
jean-millet
Membre
Avatar de jean-millet
jean-millet
Membre

Comment je peux lister mes permissions actuelles via le CLI ?

17/05/2026 à 12:37
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Exactement. Si ton push est rejeté, le transfert LFS échouera aussi. C'est lié au même hook pre-receive.

17/05/2026 à 05:42
richard34
Membre Actif
Avatar de richard34
richard34
Membre Actif

Question bête, le LFS suit bien les mêmes règles que le push standard ?

17/05/2026 à 00:22
ajdaini-hatim
Auteur Rédacteur Secouriste Actif
Avatar de ajdaini-hatim
ajdaini-hatim
Auteur Rédacteur Secouriste Actif

Oui, main est protégé par défaut. En tant que Developer, tu dois bosser sur des branches secondaires et faire une Merge Request. Ne pousse jamais directement sur main.

16/05/2026 à 19:32
smarques
Membre
Avatar de smarques
smarques
Membre

J'ai une erreur remote: GitLab: You are not allowed to push code alors que je suis bien Developer. C'est normal sur main ?

16/05/2026 à 14:07

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire