Skip to content

Commit 582111c

Browse files
committed
add iam architecture documentation
Signed-off-by: William Phetsinorath <william.phetsinorath@shikanime.studio>
1 parent 6b36f68 commit 582111c

14 files changed

Lines changed: 147 additions & 25 deletions

docs/.vitepress/sidebar.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
"text": "Compatibilité",
4646
"link": "/platform/compatibility"
4747
},
48+
{
49+
"text": "Architecture IAM",
50+
"link": "/platform/iam"
51+
},
4852
{
4953
"text": "Matrice de compétences",
5054
"link": "/platform/skills-matrix"
@@ -244,6 +248,10 @@
244248
"text": "Utilisateurs",
245249
"link": "/administration/utilisateurs"
246250
},
251+
{
252+
"text": "Rôles",
253+
"link": "/administration/roles"
254+
},
247255
{
248256
"text": "Organisations",
249257
"link": "/administration/organisations"

docs/administration/roles.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Rôles plateforme
2+
3+
Les rôles plateforme pilotent les permissions globales de la Console (scope Console). Ils sont distincts des rôles projet, qui ne s’appliquent qu’à un projet.
4+
5+
Si un utilisateur est associé à plusieurs rôles plateforme, ses permissions sont cumulées : il obtient l’ensemble des permissions de tous ses rôles.
6+
7+
Certains rôles plateforme sont préconfigurés (rôles “système”) et sont en lecture seule : leurs permissions, leur type et leur groupe OIDC ne sont pas modifiables depuis l’interface. La gestion des membres reste possible.
8+
9+
## Accéder à la gestion des rôles
10+
11+
Chemin : `Administration``Rôles`.
12+
13+
![Liste des rôles plateforme](/img/iam/admin-roles-list.png)
14+
15+
## Paramétrer un rôle
16+
17+
L’onglet `Général` permet de :
18+
19+
- nommer le rôle ;
20+
- choisir ses permissions (globales) ;
21+
- définir le type ;
22+
- associer le groupe OIDC.
23+
24+
![Paramétrage d’un rôle plateforme](/img/iam/admin-role-general.png)
25+
26+
## Gérer les membres d’un rôle
27+
28+
L’onglet `Membres` permet d’ajouter ou retirer des utilisateurs.
29+
30+
![Membres d’un rôle plateforme](/img/iam/admin-role-members.png)
31+
32+
## Effet sur GitLab
33+
34+
Selon l’intégration et le niveau de synchronisation, l’affectation à un rôle plateforme se traduit par des droits visibles côté GitLab (ex. via l’appartenance à des groupes synchronisés).
35+
36+
![GitLab - membres du groupe](/img/iam/gitlab-group-members.png)
37+
38+
## Voir aussi
39+
40+
- [Gestion des rôles (projet)](/guide/roles)
41+
- [Utilisateurs](/administration/utilisateurs)

docs/administration/utilisateurs.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Utilisateurs
22

3-
Dans le menu Administration > Utilisateurs il est possible de retrouver tous les utilisateurs inscrits sur la plateforme, ainsi que leur statut (utilisateur simple ou administrateur).
3+
Dans le menu `Administration``Utilisateurs`, il est possible de retrouver tous les utilisateurs inscrits sur la plateforme, ainsi que des informations d’administration associées.
44

55
> La création et la suppresion des utilisateurs est à faire directement dans keycloak.
66
@@ -18,3 +18,7 @@ Une fonction de recherche est disponible sur les champs suivants:
1818
## Devenir administrateur
1919

2020
En cochant la case **Administrateur**, la personne choisie devient administrateur de la console DSO.
21+
22+
Selon la configuration, les permissions globales peuvent aussi être gérées via les rôles plateforme (recommandé).
23+
24+
Voir : [Rôles plateforme](/administration/roles).

docs/guide/roles.md

Lines changed: 43 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,44 @@
11
# Gestion des rôles
22

3-
Les rôles permettent d'augmenter ou diminuer les droits de chaque membre de votre équipe.
3+
Cette page explique la gestion des rôles au niveau projet.
44

5-
Si un membre de l'équipe est associé à plusieurs rôles, il prendra les permissions de tous les rôles associés.
5+
Pour les rôles plateforme (scope Console), voir : [Rôles plateforme](/administration/roles).
66

7-
Cliquez sur l'onglet **roles**
8-
![menu-projet-depot](/img/guide/roles/onglets-projet-v9-roles.png)
7+
## Accéder aux onglets Équipe et Rôles
98

10-
## Rôles du projet
9+
Chemin : sélectionner un projet → onglets `Équipe` / `Rôles`.
1110

12-
La page Rôles présente la liste des rôles du projet :
11+
![Onglets du projet](/img/guide/roles/onglets-projet-v9-roles.png)
12+
13+
## Consulter qui a quoi (onglet Équipe)
14+
15+
L’onglet `Équipe` affiche les membres du projet et les rôles qui leur sont associés.
16+
17+
![Membres du projet et rôles](/img/iam/project-members.png)
18+
19+
La capture ci-dessus illustre un exemple avec un utilisateur de test.
20+
21+
## Gérer les rôles (onglet Rôles)
22+
23+
L’onglet `Rôles` présente la liste des rôles du projet.
1324

1425
![default](/img/guide/roles/default.png)
1526

16-
Par défaut le rôle `Tout le monde` regroupe tous les membres de l'équipe avec les permissions suivantes :
27+
Par défaut, le rôle `Tout le monde` regroupe tous les membres de l'équipe avec les permissions suivantes :
1728

1829
- Reprovisionner le projet
1930
- Voir les environnements
2031
- Voir les dépôts
2132

22-
## Créer un rôle
33+
## Créer ou modifier un rôle
2334

2435
Cliquer sur le bouton `Ajouter un rôle`.
2536

2637
![add_role](/img/guide/roles/add.png)
2738

28-
Le champ de texte `Nom du rôle` permet de choisir le nom du rôle à créer.
39+
Le champ `Nom du rôle` permet de choisir le nom du rôle à créer.
2940

30-
Détail des permissions :
41+
### Permissions disponibles
3142

3243
- Projet
3344
- Gérer le projet : Permet de gérer tout le projet et ses ressources associées
@@ -44,31 +55,39 @@ Détail des permissions :
4455
- Gérer les dépôts : Permet de créer, éditer, supprimer des dépôts
4556
- Voir les dépôts : Permet de visualiser tous les dépôts et leurs configurations
4657

47-
Cliquer sur le bouton `Enregistrer` pour créer le rôle.
58+
Cliquer sur `Enregistrer` pour créer le rôle.
4859

49-
## Assigner/Retirer un membre à un rôle
60+
### Ajouter/retirer des membres à un rôle
5061

51-
Cliquer sur le rôle voulu et aller dans l'onglet `Membres`
62+
Après création, sélectionner le rôle puis ouvrir l’onglet `Membres` pour ajouter/retirer des utilisateurs. Les modifications sont sauvegardées automatiquement.
5263

53-
![Menu](/img/guide/roles/membres.png)
64+
![Membres d’un rôle projet](/img/iam/project-role-members.png)
5465

55-
Dans l'exemple, Aurahan est associé au rôle Dev.
66+
## Supprimer un rôle
5667

57-
Les modifications concernant les membres d'un rôle sont sauvegardées automatiquement.
68+
Pour supprimer un rôle, sélectionner celui-ci dans la liste des rôles puis cliquer sur `Supprimer`.
5869

59-
Il est possible de retrouver un récapitulatif des rôles associés aux membres du projet sur la page `Equipes` :
70+
## Règles importantes
6071

61-
![Menu](/img/guide/roles/recap_membres_projet.png)
72+
### Cumul des rôles
6273

63-
Ici :
74+
Les permissions sont cumulatives : un utilisateur obtient l’ensemble des permissions de tous les rôles qui lui sont assignés. Il n’y a pas de mécanisme de “refus” qui viendrait retirer des droits.
6475

65-
- Baptiste est le créateur du projet
66-
- Pierre a le rôle ops
67-
- Aurahan a les rôles dev et PO
76+
Exemple : si un rôle donne `Voir les dépôts` et un autre donne `Gérer les dépôts`, l’utilisateur pourra `Gérer les dépôts`.
6877

69-
## Supprimer un rôle
78+
### Rôles préconfigurés (lecture seule)
79+
80+
Certains rôles sont fournis par la plateforme (rôles “système”). Ils sont en lecture seule : vous ne pouvez pas modifier leurs permissions ni leur nom, mais vous pouvez ajouter/retirer des membres.
81+
82+
Pour les identifier, vérifier que les champs de paramétrage sont non modifiables (grisés) dans l’interface.
83+
84+
![Paramétrage d’un rôle lecture seule](/img/iam/project-role-readonly.png)
85+
86+
## Vérification GitLab (si synchronisation active)
87+
88+
Selon l’intégration et le niveau de synchronisation, l’affectation à un rôle peut se traduire par une appartenance visible côté GitLab (groupe synchronisé).
7089

71-
Pour supprimer un rôle, sélectionner celui-ci dans la liste des rôles et cliquer sur le bouton `Supprimer`
90+
![GitLab - membres du groupe](/img/iam/gitlab-group-members.png)
7291

7392
## Exemple de rôle
7493

docs/platform/iam.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# IAM Console
2+
3+
Cette page présente l’IAM de la Console (Identity & Access Management) : authentification, autorisations et principes de synchronisation des groupes.
4+
5+
## Architecture fonctionnelle
6+
7+
L’IAM repose sur Keycloak pour l’identité (OIDC), une authentification backend via session ou jeton API, et une autorisation calculée côté serveur avec des bitmasks BigInt.
8+
9+
L’authentification navigateur passe par `fastify-keycloak-adapter`, qui extrait l’identité (`sub`, `email`, `given_name`, `family_name`, `groups`) et la stocke en session. Un mode jeton API (`x-dso-token`) existe aussi pour des usages non interactifs.
10+
11+
L’autorisation combine des permissions globales (`ADMIN_PERMS`) et projet (`PROJECT_PERMS`) via OR bitwise, puis applique les décisions avec `AdminAuthorized.*` et `ProjectAuthorized.*`.
12+
13+
## Groupes et rôles
14+
15+
La Console maintient une hiérarchie de groupes Keycloak par projet pour matérialiser les rôles et la séparation RO/RW des environnements :
16+
17+
```txt
18+
/<projectSlug>
19+
/console
20+
/<role-group-path...>
21+
/<environmentName>
22+
/RO
23+
/RW
24+
```
25+
26+
La réconciliation est faite par `KeycloakService` (événements projet + cron), qui crée les groupes manquants, ajuste les memberships et purge les orphelins.
27+
28+
Certains rôles affichés dans la Console sont préconfigurés (rôles “système”) et sont en lecture seule. Dans ce cas, l’interface permet typiquement de gérer les membres, mais pas de modifier le contenu du rôle.
29+
30+
## Parcours (captures)
31+
32+
- Rôles plateforme (scope Console) : [Rôles plateforme](/administration/roles)
33+
- Rôles projet (scope projet) : [Gestion des rôles](/guide/roles)
34+
35+
### Corroboration externe (GitLab)
36+
37+
Selon l’intégration et le niveau de synchronisation, on peut corroborer les accès via GitLab (projets et memberships). Voir des exemples de captures dans [Gestion des rôles](/guide/roles) et [Rôles plateforme](/administration/roles).
38+
39+
## Pour aller plus loin
40+
41+
- [Rôles plateforme](/administration/roles)
42+
- [Gestion des rôles (projet)](/guide/roles)
43+
- [Gestion des équipes](/guide/team)
44+
- [Gestion des projets](/guide/projects-management)
45+
- [Administration : utilisateurs](/administration/utilisateurs)
46+
- [Administration : projets](/administration/projets)
47+
48+
## Sécurité
49+
50+
Ne pas renuméroter les bits de `ADMIN_PERMS`/`PROJECT_PERMS` sans migration contrôlée. Les cookies de session doivent rester `httpOnly` + `secure` en production (HTTPS). Les jetons API sont stockés hashés et doivent être traités comme des secrets.
750 KB
Loading
386 KB
Loading
329 KB
Loading
957 KB
Loading
355 KB
Loading

0 commit comments

Comments
 (0)