-
Notifications
You must be signed in to change notification settings - Fork 12
add iam architecture documentation #94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| # Rôles plateforme | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| Pour les identifier, vérifier que les champs du rôle sont non modifiables (grisés) dans l’onglet `Général`. | ||
|
|
||
| ## Accéder à la gestion des rôles | ||
|
|
||
| Chemin : `Administration` → `Rôles`. | ||
|
|
||
|  | ||
|
|
||
| ## Paramétrer un rôle | ||
|
|
||
| L’onglet `Général` permet de : | ||
|
|
||
| - nommer le rôle ; | ||
| - choisir ses permissions (globales) ; | ||
| - définir le type ; | ||
| - associer le groupe OIDC. | ||
|
|
||
|  | ||
|
|
||
| ## Gérer les membres d’un rôle | ||
|
|
||
| L’onglet `Membres` permet d’ajouter ou retirer des utilisateurs. | ||
|
|
||
|  | ||
|
|
||
| ## Effet sur les services intégrés (exemple GitLab) | ||
|
|
||
| La Console est la source de vérité des rôles et permissions. Selon les intégrations actives et le niveau de synchronisation, ces droits peuvent être projetés vers des services externes. | ||
|
|
||
| À ce jour, GitLab est le service intégré pour ce contrôle. | ||
|
|
||
| Vérifier les points suivants : | ||
|
|
||
| - l’intégration du service concerné est active ; | ||
| - le mapping des groupes/rôles est configuré pour ce service ; | ||
| - la synchronisation est terminée. | ||
|
|
||
| ### Correspondance Console → GitLab (par défaut) | ||
|
|
||
| La correspondance ci-dessous reflète la configuration par défaut. Elle peut être adaptée via la configuration du plugin GitLab. | ||
|
|
||
| Rôles plateforme (scope Console) : | ||
|
|
||
| | Rôle Console (groupe OIDC) | Droits GitLab | | ||
| | --- | --- | | ||
| | `/console/admin` | Administrateur GitLab | | ||
| | `/console/readonly` | Auditeur GitLab | | ||
|
|
||
| Rôles projet (scope projet) : | ||
|
|
||
| | Rôle Console (groupe OIDC) | Droits GitLab sur le groupe du projet | | ||
| | --- | --- | | ||
| | `/<projectSlug>/console/admin` | Maintainer | | ||
| | `/<projectSlug>/console/devops` | Developer | | ||
| | `/<projectSlug>/console/developer` | Developer | | ||
| | `/<projectSlug>/console/readonly` | Reporter | | ||
| | Propriétaire du projet (Console) | Owner | | ||
|
|
||
| Paramètres de configuration utiles (plugin GitLab) : | ||
|
|
||
| | Clé | Rôle | | ||
| | --- | --- | | ||
| | `adminGroupPath` | Groupe OIDC donnant les droits d’administrateur GitLab | | ||
| | `auditorGroupPath` | Groupe OIDC donnant les droits d’auditeur GitLab | | ||
| | `projectMaintainerGroupPathSuffix` | Suffixe OIDC donnant l’accès Maintainer | | ||
| | `projectDeveloperGroupPathSuffix` | Suffixe OIDC donnant l’accès Developer | | ||
| | `projectReporterGroupPathSuffix` | Suffixe OIDC donnant l’accès Reporter | | ||
|
|
||
| ## Voir aussi | ||
|
|
||
| - [Gestion des rôles (projet)](/guide/roles) | ||
| - [Utilisateurs](/administration/utilisateurs) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,66 @@ | ||
| # IAM Console | ||
|
|
||
| Cette page présente l’IAM de la Console (Identity & Access Management) : authentification, autorisations et principes de synchronisation des groupes. | ||
|
|
||
| ## Architecture fonctionnelle | ||
|
|
||
| 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. | ||
|
|
||
| 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. | ||
|
|
||
| L’autorisation combine des permissions globales et projet par cumul : les droits attribués à l’utilisateur sont calculés à partir de l’ensemble de ses rôles. | ||
|
|
||
| La Console reste la source de vérité des droits ; les services externes consomment une projection synchronisée de ces droits selon les intégrations actives. | ||
|
|
||
| ## Groupes et rôles | ||
|
|
||
| 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 : | ||
|
|
||
| ```txt | ||
| /<projectSlug> | ||
| /console | ||
| /<role-group-path...> | ||
| /<environmentName> | ||
| /RO | ||
| /RW | ||
| ``` | ||
|
|
||
| La Console maintient ces groupes automatiquement (création des groupes manquants, mise à jour des appartenances et nettoyage des groupes orphelins). | ||
|
|
||
| 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. | ||
|
|
||
| ## Parcours | ||
|
|
||
| - Rôles plateforme (scope Console) : [Rôles plateforme](/administration/roles) | ||
| - Rôles projet (scope projet) : [Gestion des rôles](/guide/roles) | ||
|
|
||
| ### Corroboration externe (exemple GitLab) | ||
|
|
||
| Selon les intégrations actives et le niveau de synchronisation, on peut corroborer les accès dans les services externes (projets et memberships). À ce jour, GitLab est le service intégré pour ce contrôle. | ||
|
|
||
| Voir des exemples de captures dans [Gestion des rôles](/guide/roles) et [Rôles plateforme](/administration/roles). | ||
|
|
||
| Pour que cette vérification soit pertinente : | ||
|
|
||
| - l’intégration du service concerné doit être active ; | ||
| - le mapping des groupes/rôles doit être configuré pour ce service ; | ||
| - la synchronisation doit être terminée. | ||
|
|
||
| ## Pour aller plus loin | ||
|
|
||
| - [Rôles plateforme](/administration/roles) | ||
| - [Gestion des rôles (projet)](/guide/roles) | ||
| - [Gestion des équipes](/guide/team) | ||
| - [Gestion des projets](/guide/projects-management) | ||
| - [Administration : utilisateurs](/administration/utilisateurs) | ||
| - [Administration : projets](/administration/projets) | ||
|
|
||
| ## Sécurité | ||
|
|
||
| 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. | ||
|
|
||
| Contrôles opératoires recommandés : | ||
|
|
||
| - vérifier régulièrement les rôles à privilèges élevés ; | ||
| - valider les appartenances aux groupes synchronisés ; | ||
| - auditer périodiquement les jetons API actifs. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.