Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/administration/rbac/console-cpin.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ Ce que chaque rôle peut réellement faire dans la Console CPiN. Les chemins `/c
| Administrateur projet | `/<slug>/console/admin` | Gérer le projet : membres, environnements, dépôts, suppression |
| DevOps | `/<slug>/console/devops` | Gé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/developer` | Gé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/reader` | Lister environnements et dépôts uniquement |
| Lecture seule (administration) | `/console/reader` | Lecture transverse (tous projets) |
| Lecture seule (projet) | `/<slug>/console/readonly` | Lister environnements et dépôts uniquement |
| Lecture seule (administration) | `/console/readonly` | Lecture transverse (tous projets) |
| Security (projet) | `/<slug>/console/security` | Lecture transverse du projet (audit). _Groupe non créé par défaut : alimenté par les outils qui le référencent_ |
| Security (administration) | `/console/security` | Lecture transverse (tous projets, audit) |
| Guest (utilisateur externe sans groupe) | — | Aucun accès jusqu'à ajout à un projet |
Expand All @@ -38,7 +38,7 @@ Chaque projet reçoit 4 rôles système par défaut, liés aux groupes `/<slug>/
| **Administrateur** | `/<slug>/console/admin` | `MANAGE` (gérer le projet) |
| **DevOps** | `/<slug>/console/devops` | `SEE_SECRETS`, `REPLAY_HOOKS`, `MANAGE_ENVIRONMENTS`, `MANAGE_REPOSITORIES`, `LIST_ENVIRONMENTS`, `LIST_REPOSITORIES` |
| **Développeur** | `/<slug>/console/developer` | `MANAGE_REPOSITORIES`, `LIST_ENVIRONMENTS`, `LIST_REPOSITORIES` |
| **Lecture seule** | `/<slug>/console/reader` | `LIST_ENVIRONMENTS`, `LIST_REPOSITORIES` |
| **Lecture seule** | `/<slug>/console/readonly` | `LIST_ENVIRONMENTS`, `LIST_REPOSITORIES` |

### Bits `PROJECT_PERMS` disponibles

Expand All @@ -53,11 +53,11 @@ Chaque projet reçoit 4 rôles système par défaut, liés aux groupes `/<slug>/
| Admin plateforme (`/console/admin`) | `/console/admin` | `MANAGE` + toutes les `MANAGE_*`, `LIST_*` (admin global) |
| Admin plateforme (nom de groupe `console-admin`) | `console-admin` | identique à `/console/admin` (même périmètre admin global) — nom utilisé côté Vault |
| Security (`/console/security`) | `/console/security` | lecture transverse (portée audit, `*RO`) |
| Lecture seule (`/console/reader`) | `/console/reader` | lecture transverse (`*RO`) |
| Lecture seule (`/console/readonly`) | `/console/readonly` | lecture transverse (`*RO`) |

> **Groupes Keycloak d'administration plateforme** : les seuls chemins Keycloak réels sont `/console/admin`, `/console/security` et `/console/reader` (nommage en sous-groupes conservé et étendu par rétro-compatibilité). Les noms `console-admin`, `console-security`, `console-reader` désignent le _nom_ de groupe (sans `/`) dans certains outils (ex. Vault), mais le chemin Keycloak effectif reste `/console/<rôle>`.
> **Groupes Keycloak d'administration plateforme** : les seuls chemins Keycloak réels sont `/console/admin`, `/console/security` et `/console/readonly` (nommage en sous-groupes conservé et étendu par rétro-compatibilité). Les noms `console-admin`, `console-security`, `console-readonly` désignent le _nom_ de groupe (sans `/`) dans certains outils (ex. Vault), mais le chemin Keycloak effectif reste `/console/<rôle>`.
>
> **`platform-admin` / `platform-security` / `platform-reader` ne sont PAS des groupes Keycloak.** Ce sont les _policies_ internes Vault (`platform--admin` / `platform--security` / `platform--reader`) couplées aux rôles `console-*`, représentant la portée transversale (tous projets).
> **`platform-admin` / `platform-security` / `platform-readonly` ne sont PAS des groupes Keycloak.** Ce sont les _policies_ internes Vault (`platform--admin` / `platform--security` / `platform--readonly`) couplées aux rôles `console-*`, représentant la portée transversale (tous projets).

> **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.

Expand Down
8 changes: 4 additions & 4 deletions docs/administration/rbac/grafana.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ Ce que chaque rôle Console obtient réellement dans Grafana (scopé par environ
| Administrateur projet | `/<slug>/console/admin` | **Editor** (hors-prod + prod) |
| DevOps | `/<slug>/console/devops` | **Editor** (hors-prod + prod) |
| Développeur | `/<slug>/console/developer` | **Viewer** (hors-prod + prod) |
| Lecture seule | `/<slug>/console/reader` | **Viewer** (projet) |
| Lecture seule | `/console/reader` | **Viewer** (globale) |
| Lecture seule | `/<slug>/console/readonly` | **Viewer** (projet) |
| Lecture seule | `/console/readonly` | **Viewer** (globale) |
| Security | `/<slug>/console/security` | **Viewer** (projet) |
| Security | `/console/security` | **Viewer** (globale) |
| Guest | — | Aucun accès |
Expand All @@ -36,12 +36,12 @@ Ce que chaque rôle Console obtient réellement dans Grafana (scopé par environ
| Groupe Keycloak (ADR 014) | Rôle Grafana (mapping OIDC) | Portée |
| -------------------------------------- | --------------------------- | -------------------------- |
| `console-admin` (`/console/admin`) | **Organization Admin** | Globale |
| `/console/security`, `/console/reader` | **Viewer** | Globale (lecture) |
| `/console/security`, `/console/readonly` | **Viewer** | Globale (lecture) |
| `/<slug>/console/admin` | **Editor** | Projet `<name>` |
| `/<slug>/console/devops` | **Editor** | Projet `<name>` |
| `/<slug>/console/developer` | **Viewer** | Projet `<name>` |
| `/<slug>/console/security` | **Viewer** | Projet `<name>` |
| `/<slug>/console/reader` | **Viewer** | Projet `<name>` |
| `/<slug>/console/readonly` | **Viewer** | Projet `<name>` |
| `/<slug>/grafana/hprod-RW` | **Editor** (hors-prod) | Projet `<slug>`, hors-prod |
| `/<slug>/grafana/hprod-RO` | **Viewer** (hors-prod) | Projet `<slug>`, hors-prod |
| `/<slug>/grafana/prod-RW` | **Editor** (prod) | Projet `<slug>`, prod |
Expand Down
12 changes: 6 additions & 6 deletions docs/administration/rbac/harbor.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ Ce que chaque rôle Console obtient réellement dans Harbor. Les chemins `/conso
| Administrateur projet | `/<slug>/console/admin` | **Developer** sur le projet (push/pull d'images) |
| DevOps | `/<slug>/console/devops` | **Guest** sur le projet (pull/lecture, pas de push) |
| Développeur | `/<slug>/console/developer` | **Guest** sur le projet (pull/lecture) |
| Lecture seule | `/<slug>/console/reader` | **Guest** sur le projet (lecture) |
| Lecture seule | `/console/reader` | **Guest** sur **tous** les projets (lecture transverse) |
| Lecture seule | `/<slug>/console/readonly` | **Guest** sur le projet (lecture) |
| Lecture seule | `/console/readonly` | **Guest** sur **tous** les projets (lecture transverse) |
| Security | `/<slug>/console/security` | **Guest** sur le projet (lecture) |
| Security | `/console/security` | **Guest** sur **tous** les projets (lecture transverse) |
| Guest | — | Aucun accès |
Expand All @@ -37,12 +37,12 @@ La Console mappe chaque groupe OIDC vers un **rôle Harbor** et une **portée**
| ---------------------------------- | ------------------ | ------------------------- |
| `console-admin` (`/console/admin`) | **Admin** (global) | Global |
| `/console/security` | **Guest** | Tous projets (plateforme) |
| `/console/reader` | **Guest** | Tous projets (plateforme) |
| `/console/readonly` | **Guest** | Tous projets (plateforme) |
| `/<slug>/console/admin` | **Developer** | Projet `<name>` |
| `/<slug>/console/devops` | **Guest** | Projet `<name>` |
| `/<slug>/console/developer` | **Guest** | Projet `<name>` |
| `/<slug>/console/security` | **Guest** | Projet `<name>` |
| `/<slug>/console/reader` | **Guest** | Projet `<name>` |
| `/<slug>/console/readonly` | **Guest** | Projet `<name>` |

> Le groupe racine du projet (`/<slug>`) est ajouté en tant que membre avec un niveau **Limited Guest** (lecture seule : pull d'images sans administration) pour l'ensemble de ses membres.

Expand All @@ -51,8 +51,8 @@ La Console mappe chaque groupe OIDC vers un **rôle Harbor** et une **portée**
## 3. Points d'attention

- **Admin plateforme = Admin global Harbor.** `console-admin` (`/console/admin`) obtient le rôle **Admin** Harbor (gestion de tous les projets), pas un simple rôle de projet.
- **Seul `/<slug>/console/admin` pousse des images.** Tous les autres rôles projet (`devops`, `developer`, `security`, `reader`) sont en **Guest** (pull/lecture uniquement).
- **Groupes `security`/`reader` = Guest transverse.** Ils sont ajoutés en Guest sur **tous** les projets Harbor (portée plateforme), ce qui donne une lecture globale des registres.
- **Seul `/<slug>/console/admin` pousse des images.** Tous les autres rôles projet (`devops`, `developer`, `security`, `readonly`) sont en **Guest** (pull/lecture uniquement).
- **Groupes `security`/`readonly` = Guest transverse.** Ils sont ajoutés en Guest sur **tous** les projets Harbor (portée plateforme), ce qui donne une lecture globale des registres.

---

Expand Down
16 changes: 8 additions & 8 deletions docs/administration/rbac/keycloak.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ En tant qu'IdP, Keycloak ne « donne » pas d'écran de droits : il place chaque
| Administrateur projet | `/<slug>/console/admin` | Admin du projet partout |
| DevOps | `/<slug>/console/devops` | RW projet (sauf admin) |
| Développeur | `/<slug>/console/developer` | Lecture/projet (selon outil) |
| Lecture seule | `/<slug>/console/reader` | Lecture transverse du projet |
| Lecture seule | `/console/reader` | Lecture transverse plateforme |
| Lecture seule | `/<slug>/console/readonly` | Lecture transverse du projet |
| Lecture seule | `/console/readonly` | Lecture transverse plateforme |
| Security | `/<slug>/console/security` | Audit/lecture transverse du projet |
| Security | `/console/security` | Audit/lecture transverse plateforme |
| Guest | — | Aucun droit jusqu'à ajout manuel à un projet |
Expand All @@ -37,25 +37,25 @@ La Console crée et réconcilie automatiquement l'arborescence suivante (noms ca
| ---------------------------------------- | ------------------------------------------------------------------- | ----------------------------------------- |
| `console-admin` | Groupe plateforme **admin** | Tous les outils (Admin global) |
| `/console/security` | Groupe plateforme **sécurité** | Tous les outils (audit/security) |
| `/console/reader` | Groupe plateforme **lecture** | Tous les outils (lecture, `*RO`) |
| `/console/readonly` | Groupe plateforme **lecture** | Tous les outils (lecture, `*RO`) |
| `/<slug>/console/admin` | Groupe projet **admin** | Tous les outils (admin projet) |
| `/<slug>/console/devops` | Groupe projet **devops** | Tous les outils (RW projet) |
| `/<slug>/console/developer` | Groupe projet **developer** | Tous les outils (selon outil) |
| `/<slug>/console/security` | Groupe projet **security** | Tous les outils (audit/lecture) |
| `/<slug>/console/reader` | Groupe projet **reader** | Tous les outils (lecture) |
| `/<slug>/console/readonly` | Groupe projet **readonly** | Tous les outils (lecture) |
| `/<slug>/console/<env>/<RO\|RW>` | Sous-groupes **environnement** (membres en RO, propriétaires en RW) | ArgoCD (`/<slug>/console/<env>/<RO\|RW>`) |
| `/<slug>/grafana/<hprod\|prod>-<RO\|RW>` | Sous-groupes **Grafana** (environnement-scoped) | Grafana |
| Groupes `AdminRole` liés via `oidcGroup` | Rôles admin Console | — |

> ℹ️ Les **rôles projet Console** (`Administrateur`, `DevOps`, `Développeur`, `Lecture seule`) sont systématiquement créés avec le projet et liés aux groupes `/<slug>/console/{admin,devops,developer,reader}`. Le groupe `/<slug>/console/security` n'existe pas par défaut : il n'est alimenté que si un outil (ou un admin) le référence. Les rôles admin (`AdminRole`) sont les **seuls** pouvant être liés à un groupe Keycloak **existant** via `oidcGroup` (le préfixe `/` est obligatoire).
> ℹ️ Les **rôles projet Console** (`Administrateur`, `DevOps`, `Développeur`, `Lecture seule`) sont systématiquement créés avec le projet et liés aux groupes `/<slug>/console/{admin,devops,developer,readonly}`. Le groupe `/<slug>/console/security` n'existe pas par défaut : il n'est alimenté que si un outil (ou un admin) le référence. Les rôles admin (`AdminRole`) sont les **seuls** pouvant être liés à un groupe Keycloak **existant** via `oidcGroup` (le préfixe `/` est obligatoire).

---

## 3. Points d'attention

- **`/console/admin` (nom `console-admin`) est le seul groupe plateforme admin.** `platform-admin`, `platform-security`, `platform-reader` ne sont pas des groupes Keycloak : ce sont des _policies_ internes Vault attachées aux groupes `/console/*`.
- **Groupes environnement vs groupes projet.** ArgoCD et Grafana s'appuient sur des sous-groupes **environment-scoped** (`<env>/RO|RW`, `grafana/<hprod|prod>-RO|RW`). Les autres outils s'appuient sur les groupes **projet-role** (`/<slug>/console/{admin,devops,developer,reader,security}`).
- **Security / Reader sont des portées de lecture/audit**, jamais d'écriture, sur la plupart des outils.
- **`/console/admin` (nom `console-admin`) est le seul groupe plateforme admin.** `platform-admin`, `platform-security`, `platform-readonly` ne sont pas des groupes Keycloak : ce sont des _policies_ internes Vault attachées aux groupes `/console/*`.
- **Groupes environnement vs groupes projet.** ArgoCD et Grafana s'appuient sur des sous-groupes **environment-scoped** (`<env>/RO|RW`, `grafana/<hprod|prod>-RO|RW`). Les autres outils s'appuient sur les groupes **projet-role** (`/<slug>/console/{admin,devops,developer,readonly,security}`).
- **Security / Readonly sont des portées de lecture/audit**, jamais d'écriture, sur la plupart des outils.
- **Utilisateurs tiers (IDP externe).** Aucun groupe par défaut n'est attribué ; ils n'ont aucun droit tant qu'un membre les ajoute à un projet avec le niveau adéquat.

---
Expand Down
Loading
Loading