Skip to content

Rôles & Permissions

Repod implémente un contrôle d'accès basé sur les rôles (RBAC) avec 5 niveaux de privilèges distincts.


Matrice des permissions

Permission admin maintainer uploader auditor reader
Gestion des utilisateurs
Modification des paramètres
Upload de paquets
Import de paquets
Promotion / suppression
Synchronisation des dépôts
Décision CVE (approuver/rejeter)
Accès aux journaux d'audit
Lecture des paquets
Export SBOM
Gestion des tokens API ✅ (tous) ✅ (propres) ✅ (propres)

Description des rôles

admin

Accès complet à toutes les fonctionnalités. Seul rôle autorisé à : - Créer / modifier / supprimer des comptes utilisateurs - Modifier la configuration système - Configurer les politiques CVE - Approuver ou rejeter des paquets dans la file de revue RSSI

maintainer

Gestion complète du cycle de vie des paquets (upload, import, promotion, suppression, sync). Peut approuver ou rejeter des paquets CVE dans la file de revue. Ne peut pas gérer les utilisateurs ni modifier les paramètres système.

uploader

Peut uniquement uploader et importer des paquets. Conçu pour les pipelines CI/CD nécessitant un accès minimal.

auditor

Accès en lecture seule aux paquets et aux journaux d'audit. Destiné aux équipes de conformité et aux auditeurs externes. Aucune opération d'écriture.

reader

Accès en lecture seule aux paquets uniquement. Pas d'accès aux journaux d'audit. Adapté aux consommateurs passifs du dépôt.


Gestion des utilisateurs

Créer un utilisateur

Paramètres → Utilisateurs → Créer un utilisateur

curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  http://localhost:8000/auth/users \
  -d '{
    "username": "jdupont",
    "password": "MotDePasse1!",
    "role": "uploader",
    "full_name": "Jean Dupont",
    "email": "[email protected]"
  }'

Modifier le rôle d'un utilisateur

curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  http://localhost:8000/auth/users/jdupont \
  -d '{"role":"maintainer"}'

Désactiver un compte

curl -X PATCH -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  http://localhost:8000/auth/users/jdupont \
  -d '{"active":false}'

La désactivation prend effet immédiatement sur toutes les requêtes suivantes, même si un token JWT actif existe.


Tokens API pour CI/CD

# Créer un token pour GitLab CI (rôle uploader, expiration 1 an)
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  http://localhost:8000/auth/api-tokens \
  -d '{"name":"gitlab-ci","role":"uploader","expires_days":365}'

Le token en clair n'est affiché qu'une seule fois dans la réponse.