Skip to content

Utilisateurs, groupes et droits Console CPiN

Ce document décrit le modèle d'accès de la Console CPiN elle-même : comment ses rôles admin et projet se traduisent en permissions, et comment ils sont propagés vers Keycloak.


Vue par rôle

Ce que chaque rôle peut réellement faire dans la Console CPiN. Les chemins /console/<rôle> sont réservés à l'administration plateforme et distincts des rôles projet /<slug>/console/<rôle> :

Rôle ConsoleGroupe KeycloakCe que je peux faire
Admin plateforme (administration)/console/adminAdministration globale : tous les projets, utilisateurs, plugins
Administrateur projet/<slug>/console/adminGérer le projet : membres, environnements, dépôts, suppression
DevOps/<slug>/console/devopsGérer environnements + dépôts, rejouer les hooks, voir les secrets. Pas de déploiement applicatif ni de gestion des membres
Développeur/<slug>/console/developerGérer et lister les dépôts, lister les environnements. Pas d'accès aux secrets ni de rejeu du projet
Lecture seule (projet)/<slug>/console/readerLister environnements et dépôts uniquement
Lecture seule (administration)/console/readerLecture transverse (tous projets)
Security (projet)/<slug>/console/securityLecture transverse du projet (audit). Groupe non créé par défaut : alimenté par les outils qui le référencent
Security (administration)/console/securityLecture transverse (tous projets, audit)
Guest (utilisateur externe sans groupe)Aucun accès jusqu'à ajout à un projet

1. Authentification : OIDC via Keycloak

  • La Console authentifie ses utilisateurs via OIDC Keycloak.
  • Les permissions effectives d'un utilisateur = agrégation (OU binaire) des permissions de tous ses rôles (admin + projet).

2. Rôles projet et permissions

Chaque projet reçoit 4 rôles système par défaut, liés aux groupes /<slug>/console/*.

Rôle ConsoleGroupe KeycloakPermissions (bits PROJECT_PERMS)
Administrateur/<slug>/console/adminMANAGE (gérer le projet)
DevOps/<slug>/console/devopsSEE_SECRETS, REPLAY_HOOKS, MANAGE_ENVIRONMENTS, MANAGE_REPOSITORIES, LIST_ENVIRONMENTS, LIST_REPOSITORIES
Développeur/<slug>/console/developerMANAGE_REPOSITORIES, LIST_ENVIRONMENTS, LIST_REPOSITORIES
Lecture seule/<slug>/console/readerLIST_ENVIRONMENTS, LIST_REPOSITORIES

Bits PROJECT_PERMS disponibles

GUEST(0), MANAGE(1), MANAGE_MEMBERS(2), MANAGE_ENVIRONMENTS(3), MANAGE_REPOSITORIES(4), MANAGE_ROLES(5), SEE_SECRETS(6), REPLAY_HOOKS(7), LIST_ENVIRONMENTS(8), LIST_REPOSITORIES(9), LIST_MEMBERS(10), LIST_ROLES(11), MANAGE_DEPLOYMENTS(12), LIST_DEPLOYMENTS(13).


3. Rôles admin et permissions

Rôle ConsoleGroupe Keycloak (chemin)Permissions (ADMIN_PERMS)
Admin plateforme (/console/admin)/console/adminMANAGE + toutes les MANAGE_*, LIST_* (admin global)
Security (/console/security)/console/securitylecture transverse (portée audit, *RO)
Lecture seule (/console/reader)/console/readerlecture transverse (*RO)

Groupes Keycloak d'administration plateforme : le chemin plateforme d'administration est /admin, groupe d'amorçage géré en dehors de la Console ; /console/admin (admin), /console/security (audit) et /console/reader (lecture) sont les groupes plateforme réconciliés, propagés vers les outils.

Axe ABAC userType : indépendamment des groupes, certains endpoints restreignent l'accès selon le type d'utilisateur (human / bot / ghost, colonne User.type). Cet axe s'ajoute au masque de bits admin/projet.

Chemin Keycloak réel des rôles projet : la Console crée /<slug>/console/<rôle> (ex. /monprojet/console/admin), sous le groupe racine /<slug>. Ce chemin est l'identité OIDC effective — il ne porte pas le nom project-<name>-<rôle> (qui n'existe pas côté Keycloak).

Seul un rôle admin peut être lié à un groupe Keycloak existant via un groupe d'application externe (chemin commençant par /). Les rôles projet ont leur groupe d'application préfixé automatiquement par /<slug>.


4. Points d'attention

  • Permissions = masque de bits. Un rôle est la somme de permissions ; l'agrégation inter-rôles se fait en OU binaire.
  • /admin donne l'administration globale. Groupe d'amorçage géré en dehors de la Console.
  • Le développeur n'accède pas aux secrets. Le rôle developer couvre la gestion des dépôts et la lecture des environnements ; ni SEE_SECRETS ni REPLAY_HOOKS ne lui sont accordés (contrairement à DevOps).
  • DevOps sans déploiement applicatif. Le déploiement applicatif n'est pas couvert par le rôle DevOps par défaut ; ses droits portent sur les environnements, dépôts, hooks et secrets.
  • Groupe everyonePerms. Un projet peut définir des permissions pour Tout le monde, appliquées au-delà des rôles nominatifs.

5. Qui gère quoi ?

ÉlémentGéré par
Identité OIDCKeycloak
Rôles admin / projet, permissionsConsole (base de données)
Groupes Keycloak dérivésConsole (automatique)
Application des droitsConsole + outils consommateurs