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.