Limitation d’Accès
Cette section décrit les différents mécanismes permettant de limiter et personnaliser l’accès utilisateur au sein de la plateforme Centiloc.
Ces mécanismes permettent aux administrateurs de :
- Restreindre l’accès à certaines données (basé sur les labels)
- Contrôler les fonctionnalités visibles dans les applications web (enrolui, dataui)
Toutes les configurations sont réalisées via des attributs de groupe dans Keycloak.
Comme décrit dans Limiter l’accès utilisateur, il est possible de restreindre les données accessibles par un utilisateur en fonction des labels.
Le principe est simple :
- Un groupe peut définir un attribut :
- clé :
labels - valeur : une expression de filtre sur les labels
- clé :
- Les utilisateurs appartenant à ce groupe ne verront que les objets correspondant à ce filtre
Cela s’applique à tous les objets portant des labels, notamment :
- items
- boards
- products
- (bientôt) boxes et autres ressources
L’usage le plus simple consiste à définir une valeur de label unique.
Exemple :
labels = "site::paris"
Cette configuration signifie :
L’utilisateur ne verra que les objets contenant le label
site::paris
Cette syntaxe correspond à une recherche de type “contient”.
Une valeur simple commefoo::barest interprétée comme “contientfoo::bar”.
Pour des cas d’usage plus avancés, l’attribut labels supporte des expressions logiques.
Cela permet de combiner plusieurs conditions à l’aide d’opérateurs logiques.
| Symbole | Signification |
|---|---|
& |
ET |
| |
OU |
! |
NON |
Les parenthèses ( et ) permettent de regrouper des sous-expressions.
Les guillemets " permettent de définir les limites d’un label.
Les ancres (^ et $) permettent de définir le type de correspondance :
| Syntaxe | Signification |
|---|---|
"foo" |
contient foo |
^"foo" |
commence par foo |
"foo"$ |
se termine par foo |
^"foo"$ |
correspond exactement à foo |
(^"site::cholet" | ^"site::nantes"$) & !"secret"
Cette expression signifie :
- commence par
site::cholet - OU est exactement
site::nantes - ET ne contient pas
secret
- les labels doivent être entre guillemets lorsqu’ils sont utilisés avec des opérateurs
^doit être placé immédiatement avant un label entre guillemets$doit être placé immédiatement après un label entre guillemets- un label ne peut pas contenir
"
La logique de filtrage est identique à celle utilisée dans les filtres des objets.
En complément du filtrage des données, il est possible de masquer certaines fonctionnalités dans les applications web.
Cela se fait via les attributs de groupe suivants :
enrolui.hidedataui.hide
Ces attributs contrôlent la visibilité des tuiles (fonctionnalités) dans l’interface.
L’attribut enrolui.hide permet de masquer certaines tuiles dans enrolui.
Valeurs possibles :
| Valeur | Fonctionnalité masquée |
|---|---|
product |
Tuile Product |
dpp |
Tuile DPP |
build |
Tuiles Furniture, Shelf et Location |
enrol |
Tuile Enrolment / Configure UID |
L’attribut dataui.hide permet de masquer certaines tuiles dans dataui.
Valeurs possibles :
| Valeur | Fonctionnalité masquée |
|---|---|
inventory |
Tuile Inventory |
product |
Tuile Production |
tracking |
Page Tracking |
map |
Page Geomap |
Il est possible de masquer plusieurs fonctionnalités en séparant les valeurs avec un ;.
enrolui.hide = "product;dpp;build"
dataui.hide = "tracking;map"
Avec cette configuration :
-
Dans enrolui, l’utilisateur ne verra que :
Configure UID
-
Dans dataui, l’utilisateur ne verra que :
InventoryProduction
Toutes les autres tuiles seront masquées.
Ce mécanisme vise à simplifier l’expérience utilisateur et à limiter l’accès aux fonctionnalités.
Cependant, il ne constitue pas une barrière de sécurité à lui seul. Il doit toujours être combiné avec une configuration correcte des rôles et des accès aux données.
-
Utilisez les groupes pour gérer les accès, plutôt que les utilisateurs individuellement
-
Combinez :
- le filtrage par labels (restriction des données)
- le masquage UI (restriction des fonctionnalités)
-
Gardez des configurations simples et explicites
-
Évitez les hiérarchies de groupes complexes lorsque vous utilisez des labels