Passer au contenu principal

Sécurité et Gouvernance (GitLab)

Tokens GitLab et rotation

GitLab utilise plusieurs types de tokens selon les contextes. Leur gestion - creation, perimetre, expiration et rotation - est un enjeu de securite important, particulierement dans les environnements avec de nombreuses integrations automatisees.

Inventaire des tokens

  • Personal Access Token (PAT) : acces API au nom d'un utilisateur, scopes configurables, expiration optionnelle (obligatoire depuis GitLab 16.0 en self-hosted si configure)
  • Project Access Token : PAT lie a un projet, agit comme un membre fictif
  • Group Access Token : PAT lie a un groupe (EE)
  • Deploy Token : acces en lecture au depot et au registry, sans lien a un utilisateur
  • Deploy Key : cle SSH en lecture (ou ecriture) sur un projet
  • CI Job Token : token temporaire genere pour chaque job CI, expire a la fin du job
  • Runner Authentication Token : token d'authentification du runner, format glrt-...
  • Pipeline Trigger Token : pour declencher des pipelines via API
  • Webhook Token : secret partage pour valider les requetes webhook entrantes
  • SCIM Token : pour le provisioning automatique des utilisateurs

Expiration et rotation

GitLab 16.0 introduit l'expiration obligatoire des PAT (configurable par l'admin, minimum 1 jour, maximum illimite mais avec avertissement). Les tokens proches de l'expiration declenchent des notifications par email. GitLab 17 ajoute la rotation automatique de tokens via l'API.

Bonne pratique : tous les tokens d'integration (CI/CD, webhooks, deploy tokens) doivent avoir une date d'expiration. Mettre en place un processus de rotation regulier (au moins annuel, trimestiel pour les tokens critiques).

Minimisation du perimetre

Chaque token doit avoir le scope minimum necessaire :

  • Un script qui fait uniquement des lectures n'a pas besoin du scope api complet : utiliser read_api
  • Un deploy script qui pousse uniquement sur le registry : scope write_registry seulement
  • Un runner CI : utiliser un Runner Authentication Token, pas un PAT

Audit des tokens

L'admin peut lister tous les tokens actifs de l'instance via l'API (/api/v4/personal_access_tokens?state=active). Les tokens sans expiration ou expiration lointaine sont a revoir en priorite. GitLab EE permet un audit centralise des tokens de groupe.

Sources