Conception d'une matrice d'autorisations pour outils internes : rôles et périmètres
La conception d'une matrice d'autorisations vous aide à cartographier rôles, périmètres et exceptions avant de construire les écrans et l'API, réduisant le retravail et les erreurs d'accès par la suite.

Quel problème résout une matrice d'autorisations
Un outil interne est le logiciel que votre équipe utilise pour faire tourner le business au quotidien. Pensez aux panneaux d'administration, tableaux de bord opérationnels, consoles de support, écrans de revue financière, et aux petites applis qui aident les gens à approuver du travail, corriger des données ou répondre aux clients.
Ces outils touchent des données sensibles et proposent des actions puissantes. Un agent support peut avoir besoin de voir le profil d'un client sans jamais accéder aux informations de paiement complètes. Un collaborateur finance peut exporter des factures mais ne doit pas modifier les paramètres de compte. Un responsable ops peut faire les deux, mais seulement pour sa région.
Les permissions deviennent vite compliquées parce que les outils internes croissent par couches. De nouveaux rôles apparaissent, d'anciens rôles se divisent, et des exceptions ponctuelles s'accumulent : « Autoriser Maria à rembourser », « Bloquer les contractuels pour les notes », « Permettre aux chefs d'équipe d'approuver seulement jusqu'à 500 $ ». Quand les règles vivent seulement dans les têtes (ou dans des tickets épars), les écrans et les endpoints d'API divergent, et des failles de sécurité apparaissent.
La conception d'une matrice d'autorisations règle cela en créant une carte unique et partagée de qui peut faire quoi, sur quelles données et sous quelles limites. Elle devient la source de vérité pour les décisions UI (quels écrans, boutons et champs afficher) et les décisions backend (ce que le serveur autorise réellement, même si quelqu'un tente de contourner l'interface).
Ce n'est pas réservé aux développeurs. Une bonne matrice est un document de travail sur lequel produit, opérations et équipes techniques peuvent s'accorder. Si vous construisez avec une plateforme no-code comme AppMaster, la matrice reste essentielle : elle guide la configuration des rôles, la définition des ressources et permet de garder cohérents les écrans visuels et les endpoints générés.
Une matrice simple vous aide à :
- Rendre les règles explicites avant de construire
- Réduire le chaos des « cas particuliers »
- Garder l'alignement entre UI et API
- Revoir les changements d'accès sans conjectures
Termes clés : rôles, ressources, actions, périmètres, exceptions
La bonne conception d'une matrice d'autorisations commence par un vocabulaire partagé. Si votre équipe utilise ces termes de la même façon, vous éviterez des règles confuses plus tard.
Un rôle est un groupe lié à une fonction dont les membres ont généralement le même type d'accès. Pensez Support, Finance, Ops ou Manager. Les rôles doivent décrire ce que quelqu'un fait la plupart du temps, pas son niveau hiérarchique. Une personne peut avoir plusieurs rôles, mais gardez cela rare.
Une ressource est la chose que vous protégez. Dans les outils internes, les ressources courantes sont clients, tickets, factures, rapports, intégrations et paramètres. Nommez les ressources comme des noms (noms communs). Cela aide quand vous transformerez plus tard les règles en écrans et endpoints API.
Une action est ce que quelqu'un peut faire sur une ressource. Gardez les verbes cohérents pour que la matrice reste lisible. Actions typiques :
- view
- create
- edit
- delete
- approve
- export
Un périmètre répond à « quels enregistrements ? » sans créer plus de rôles. Les périmètres sont souvent la différence entre un accès sûr et dangereux. Périmètres courants :
- own (enregistrements que vous avez créés ou qui vous sont assignés)
- team (votre groupe)
- region (votre territoire)
- all (tout)
Une exception est une dérogation qui casse les règles normales de rôle et de périmètre. Les exceptions peuvent être temporaires (pour un service), spécifiques à un utilisateur (un spécialiste a besoin d'une action supplémentaire), ou spécifiques à un enregistrement (un client VIP est verrouillé). Traitez les exceptions comme une dette contrôlée : suivez qui les a approuvées, pourquoi elles existent et quand elles expirent.
Exemple : un agent Support peut « view tickets » avec le périmètre « team », mais obtient une exception courte pour « export tickets » lors d'une revue d'incident. Dans un outil construit avec AppMaster, ce type de règle est beaucoup plus facile à maintenir si vous nommez rôles, ressources, actions et périmètres de façon cohérente dès le départ.
Décisions à prendre avant de dessiner la matrice
Commencez par vous mettre d'accord sur ce que vous protégez réellement. Listez les zones de l'outil interne en tant que ressources, pas en tant qu'écrans. Un écran peut afficher « Commandes », « Remboursements » et « Clients » au même endroit, mais ce sont des ressources différentes avec des risques différents.
Avant d'écrire une permission, standardisez vos verbes d'action. De petites différences de formulation créent des règles dupliquées plus tard (edit vs update, remove vs delete, view vs read). Choisissez un petit ensemble partagé et tenez-vous-y sur toutes les ressources. Pour la plupart des outils internes, un ensemble simple comme view, create, update, delete, approve, export suffit.
Les périmètres sont la décision suivante, et ils doivent correspondre à la façon dont votre entreprise pense déjà. Trop de périmètres rendent la matrice illisible ; trop peu créent des exceptions constantes. Visez un petit ensemble qui correspond à votre organisation, comme :
- own (enregistrements que vous avez créés)
- team (enregistrements de votre équipe)
- location (une agence ou région)
- all (tout)
- none (aucun accès)
Vous devez aussi définir clairement ce que signifie « non ». Décidez ce qui est explicitement interdit versus implicitement refusé. Le refus implicite (tout ce qui n'est pas listé est refusé) est plus sûr et plus simple. L'interdiction explicite est utile quand vous avez un accès large mais souhaitez bloquer une action spécifique, comme « Finance peut accéder à toutes les factures sauf delete ».
Enfin, identifiez tôt les actions sensibles en conformité, avant qu'elles ne se perdent dans la grille. Exports, suppressions, paiements, changement de rôles et accès aux données personnelles méritent une attention particulière, de la journalisation et souvent une étape d'approbation. Par exemple, vous pouvez permettre à un responsable support de mettre à jour un profil client, mais exiger l'approbation de finance avant de lancer un paiement ou une exportation.
Si vous construisez avec AppMaster, ces décisions se traduisent proprement en endpoints backend et en logique Business Process plus tard, mais la matrice doit d'abord être claire.
Étape par étape : construire la matrice d'autorisations depuis zéro
Commencez par le travail que font les gens, pas par les écrans que vous prévoyez de construire. Si vous démarrez par les écrans, vous reproduirez l'UI d'aujourd'hui et manquerez les vraies règles (comme qui peut approuver des remboursements, ou qui peut modifier un enregistrement client après verrouillage).
Une façon simple de concevoir la matrice est de la traiter comme une carte des tâches vers les accès, puis de la convertir dans votre appli plus tard.
Un ordre pratique de construction
-
Listez les tâches métier en langage clair. Exemple : « Émettre un remboursement », « Changer l'email d'un client », « Exporter les factures du mois dernier ». Restez concis et concret.
-
Transformez les tâches en ressources et actions. Les ressources sont des noms (Invoice, Ticket, Customer), les actions sont des verbes (view, create, edit, approve, export). Assignez un propriétaire pour chaque ressource : une personne qui peut expliquer les cas limites et dire « oui, c'est correct ».
-
Définissez des rôles basés sur des équipes stables. Utilisez des groupes comme Support, Finance, Operations, Team Lead. Évitez les titres qui changent souvent (Senior, Junior) sauf s'ils modifient réellement l'accès.
-
Remplissez la matrice avec l'accès minimal dont chaque rôle a besoin pour accomplir les tâches. Si Support n'a besoin que de voir des factures pour répondre, ne donnez pas l'accès « export » par défaut. Vous pouvez ajouter l'accès plus tard, mais le retirer plus tard casse les habitudes.
-
Ajoutez des périmètres seulement là où ils comptent. Au lieu d'une permission « edit » unique, notez des périmètres comme « edit own », « edit assigned » ou « edit all ». Cela garde les règles claires sans créer 50 rôles.
Consignez les exceptions dans une table séparée, et non comme des notes en pagaille dans la matrice. Chaque exception nécessite un champ raison clair (conformité, risque de fraude, séparation des tâches) et un propriétaire unique qui l'approuve.
Une fois cela fait, des outils comme AppMaster facilitent la transformation de la matrice en endpoints protégés et en écrans d'administration sans deviner les règles pendant la construction.
Comment structurer la matrice pour qu'elle reste utilisable
Une matrice d'autorisations n'est utile que si les gens peuvent la lire rapidement. Si elle devient un énorme mur de cellules, les équipes arrêtent de l'utiliser et les permissions divergent de ce que vous aviez prévu.
Commencez par séparer la matrice par domaine. Au lieu d'une seule feuille pour tout, utilisez un onglet par domaine métier, comme Clients, Facturation et Contenu. La plupart des rôles ne touchent que quelques domaines, ce qui accélère les revues et réduit les changements accidentels.
Utilisez un schéma de nommage cohérent entre les onglets. Un format simple comme Resource.Action.Scope rend évident le sens de chaque permission, et évite les doublons qui se ressemblent mais diffèrent. Par exemple, Invoice.Approve.Department se lit de la même façon que Customer.Edit.Own.
Quand vous tombez sur un cas limite, résistez à la tentation de créer un nouveau rôle. Ajoutez une note courte à côté de la cellule décrivant l'exception et son application. Exemple : Support peut voir les factures, mais seulement après vérification de l'identité du client. La note peut aussi pointer vers l'étape UI supplémentaire nécessaire, sans changer le modèle de rôles.
Identifiez les permissions à haut risque pour qu'elles ressortent lors des revues. Ce sont des actions comme remboursements, approbations, exports et suppressions de données. Marquez ces cellules et indiquez la vérification supplémentaire requise, par exemple approbation à deux, ou confirmation par un manager.
Pour garder la matrice maintenable dans le temps, versionnez-la comme un véritable artefact :
- v1, v2, etc. plus date
- owner (une personne responsable)
- court résumé des changements
- ce qui a déclenché le changement (nouveau workflow, constat d'audit)
Une fois la matrice stable, il est beaucoup plus simple de construire écrans et endpoints dans un outil comme AppMaster, parce que chaque bouton et action API correspond à un nom de permission clair.
Transformer la matrice en écrans et endpoints
Une matrice d'autorisations n'est utile que si elle devient des règles réelles à deux endroits : votre API et votre UI. Commencez par traiter chaque ressource de la matrice (comme Tickets, Invoices, Users) comme un groupe d'endpoints. Gardez les actions alignées avec vos verbes de matrice : view, create, edit, approve, export, delete.
Côté API, appliquez les permissions à chaque requête. Les vérifications UI sont utiles pour la clarté, mais elles ne sont pas de la sécurité. Un bouton caché n'empêche pas un appel API direct.
Une manière simple de traduire la matrice en permissions API est de nommer les permissions de façon cohérente et de les attacher au point frontière où l'action se produit :
- tickets:view, tickets:edit, tickets:export
- invoices:view, invoices:approve, invoices:delete
- users:view, users:invite
Puis utilisez les mêmes noms de permission pour piloter les portes UI : éléments de menu, accès aux pages, boutons et même champs. Par exemple, un agent Support peut voir la liste des Tickets et ouvrir un ticket, mais le champ « Refund » reste en lecture seule sauf s'il possède aussi invoices:approve.
Faites attention à l'accès liste vs détail. Les équipes ont souvent besoin de « voir qu'un élément existe » sans voir l'enregistrement complet. Cela signifie que vous pouvez autoriser les résultats de liste avec des colonnes limitées, mais bloquer l'ouverture de la vue détail sauf si l'utilisateur a la permission détail (ou satisfait à un contrôle de périmètre comme « assigned to me »). Décidez-en tôt pour ne pas construire un écran liste qui fuit des données sensibles.
Enfin, mappez la journalisation d'audit sur les actions importantes. Export, delete, approve, changements de rôle et téléchargements de données doivent créer des événements d'audit indiquant qui, quoi, quand et la cible. Si vous construisez dans AppMaster, vous pouvez refléter cela dans la logique des endpoints et des Business Processes afin que la même règle déclenche à la fois l'action et son entrée d'audit.
Erreurs et pièges courants
La façon la plus rapide de casser une matrice d'autorisations est de modéliser l'UI au lieu du métier. Un écran peut afficher plusieurs choses, et la même chose peut apparaître sur plusieurs écrans. Si vous traitez chaque écran comme une ressource distincte, vous finirez par dupliquer des règles, rater des cas limites et débattre sur le nommage au lieu de l'accès.
Un autre piège courant est la prolifération de rôles. Les équipes ajoutent sans cesse des rôles (Support Niveau 1, Support Niveau 2, Support Manager, etc.) alors qu'un jeu restreint de rôles avec des périmètres clairs suffirait. Des périmètres comme « own team », « assigned region » ou « accounts you manage » expliquent souvent mieux la différence qu'un nouveau rôle.
Voici quelques erreurs réelles qui apparaissent dans des outils internes :
- Définir seulement « view » et « edit », puis oublier des actions comme export, bulk edit, refund, impersonate ou « change owner ».
- Utiliser des exceptions comme rustine à long terme. Des accès ponctuels (« donner à Sam l'accès Finance pour une semaine ») deviennent vite permanents et cachent un modèle de rôles cassé.
- Cacher des boutons dans l'UI en supposant que le système est sûr. L'API doit toujours rejeter la requête, même si un utilisateur trouve l'endpoint.
- Ne pas décider ce qui se passe quand le périmètre d'une personne change, comme un transfert d'équipe ou un changement de région. Les permissions doivent se mettre à jour de façon prévisible, pas dériver.
- Traiter « admin » comme illimité sans garde-fous. Même les admins ont souvent besoin de séparation, par exemple « peut gérer les utilisateurs » mais « ne peut pas approuver les paiements ».
Les exceptions méritent une attention particulière. Elles sont utiles pour des situations temporaires, mais doivent expirer ou être revues. Si les exceptions s'accumulent, c'est le signe que vos rôles ou périmètres ne sont pas correctement cartographiés.
Un exemple rapide : dans un outil support et finance, Support peut voir les profils clients et créer des tickets, mais Finance peut exporter les factures et émettre des remboursements. Si vous ne sécurisez que les pages, un agent Support pourrait encore appeler directement un endpoint d'export. Que vous développiez en code ou avec une plateforme comme AppMaster qui génère des endpoints backend, la règle doit vivre côté serveur, pas seulement dans l'UI.
Checklist rapide avant de commencer
Une matrice d'autorisations n'est utile que si elle se transforme en règles claires et applicables. Avant de créer votre premier écran ou endpoint, parcourez cette checklist. Elle vous aide à éviter des configurations « presque sécurisées » qui cassent dès qu'un nouveau rôle ou cas limite apparaît.
Construire les règles, puis l'UI
Commencez avec une mentalité de refus par défaut : tout ce qui n'est pas explicitement autorisé est bloqué. C'est la base la plus sûre et cela évite des accès surprises quand vous ajoutez des fonctionnalités plus tard.
Assurez-vous d'avoir une source unique de vérité pour les permissions. Qu'elle soit dans un document, une table en base ou votre configuration no-code, toute l'équipe doit savoir où se trouvent les règles actuelles. Si le tableau dit une chose et l'app une autre, vous déploierez des bugs.
Voici une checklist compacte à utiliser avant la construction :
- Le refus par défaut est appliqué partout (UI, endpoints API, exports, jobs background).
- Chaque action a une définition de périmètre claire (own record, team, region, all, ou un sous-ensemble nommé).
- Les capacités admin sont séparées des actions métier (gestion des rôles ≠ « approuver un remboursement »).
- Les actions sensibles requièrent des contrôles renforcés (étapes d'approbation, journalisation et idéalement alertes pour activité inhabituelle).
- Les exceptions ont un propriétaire et une date d'expiration, pour éviter que l'« accès temporaire » ne devienne permanent.
Après cela, validez les règles avec un scénario réaliste. Par exemple : « Un agent support peut voir une commande et ajouter une note pour sa région, mais ne peut pas modifier les prix ni émettre des remboursements. Finance peut émettre des remboursements, mais seulement après une approbation manager, et chaque remboursement est journalisé. » Si vous ne pouvez pas le dire en une ou deux phrases, vos périmètres et exceptions ne sont pas encore clairs.
Si vous construisez avec AppMaster, traitez ces éléments comme des exigences à appliquer à la fois aux écrans et à la logique métier, pas seulement à l'UI. Les boutons peuvent masquer des actions, mais seules des règles backend les font réellement respecter.
Scénario d'exemple : un outil interne Support et Finance
Imaginez une entreprise de taille moyenne avec un outil interne utilisé par Support et Finance. La même base de données contient Customers, Tickets, Refunds, Payouts et une petite zone Settings (modèles, intégrations, etc.). Ici, un simple contrôle de connexion ne suffit pas.
Voici les rôles initiaux qu'ils choisissent :
- Support Agent : traite les tickets d'une file
- Support Lead : aide sur plusieurs files et approuve certaines actions
- Finance : gère les opérations monétaires
- Ops Admin : gère l'accès et les paramètres système
Une conception pratique commence par écrire les actions par ressource, puis les affiner avec des périmètres.
Pour les Tickets, les Support Agents peuvent view et update le statut seulement pour les tickets de leur file assignée. Ils peuvent ajouter des notes, mais ne peuvent pas changer le propriétaire du ticket. Les Support Leads peuvent tout faire comme un Support Agent, plus réassigner les tickets dans leur région.
Pour les Refunds, Finance peut créer et approuver des remboursements, mais seulement jusqu'à un montant fixé. Support peut créer une demande de remboursement, mais ne peut pas l'approuver. L'approbation d'un remboursement est une action distincte de la création, donc elle reste visible dans la matrice et ne peut pas être accordée par inadvertance.
Pour Payouts et Settings, l'outil reste strict : seul Finance peut voir les payouts, et seul Ops Admin peut modifier les Settings. Support ne voit pas ces écrans, ce qui réduit tentation et erreurs.
Ajoutez maintenant une règle d'exception : un Support Lead couvre une autre région pendant deux semaines. Au lieu de lui donner un rôle large comme Ops Admin, la matrice peut inclure une extension de périmètre temporaire (Support Lead + Région B, expirant à une date). Cette seule exception est plus sûre que de dupliquer des permissions entre rôles.
Si vous construisez cela dans AppMaster, la même matrice peut guider l'affichage des pages dans l'UI et ce que les endpoints autorisent côté backend, empêchant l'accès aux Payouts ou Settings par simple devinette d'API.
Comment tester et maintenir les permissions dans le temps
Les permissions échouent souvent de manière petite et ennuyeuse : un écran oublie de masquer un bouton, un endpoint oublie un contrôle, une règle de périmètre est trop large. Une bonne conception de matrice devient beaucoup plus utile quand vous la transformez en tests répétables et en routine de maintenance simple.
Commencez par un petit jeu d'utilisateurs de test. Vous n'avez pas besoin de dizaines de comptes. Créez un utilisateur par rôle, plus un utilisateur « cas limite » pour chaque exception courante (par exemple « agent Support avec approbation de remboursement »). Gardez ces comptes stables pour que l'équipe puisse les réutiliser sprint après sprint.
Transformez ensuite la matrice en cas de test. Pour chaque règle, écrivez un chemin « autorisé » et un chemin « refusé ». Rendre le chemin refusé précis (ce qui doit arriver) évite que l'on balaye le problème d'un revers de main.
- Rôle : Support Agent. Action : Refund. Attendu : refusé avec message clair, aucune donnée modifiée.
- Rôle : Finance. Action : Refund. Attendu : autorisé, crée un enregistrement refund, journalise l'acteur et la raison.
- Rôle : Manager. Action : View tickets. Périmètre : team only. Attendu : peut voir les tickets de l'équipe, ne peut pas ouvrir les tickets d'autres équipes.
Testez la même règle deux fois : dans l'UI et dans l'API. Si l'UI bloque une action mais que l'API l'autorise, quelqu'un peut contourner l'interface. Si vous développez avec un outil comme AppMaster, vérifiez que la logique UI et les endpoints backend appliquent la règle.
Les périmètres exigent des données réelles pour être testés. Créez des enregistrements de test qui diffèrent par ownership, équipe et région. Vérifiez que vous ne pouvez pas « deviner » un ID d'un autre périmètre et y accéder.
Enfin, décidez quoi journaliser pour les actions sensibles (remboursements, exports, changements de rôle). Journalisez qui a fait quoi, quand et depuis où. Revuez les journaux régulièrement et ajoutez des alertes pour les actions rares, comme les modifications de permissions ou les exports en masse.
Prochaines étapes : passer de la matrice à un outil interne opérationnel
Traitez votre matrice d'autorisations comme un plan de construction, pas comme un document archivé. La façon la plus rapide d'en tirer de la valeur est de valider les bases avec les propriétaires des données et des processus.
Commencez par un atelier court (30 minutes suffisent) avec un représentant par rôle plus les « owners » de ressources (personnes responsables des customers, invoices, payouts, tickets, etc.). Parcourez rôles, ressources, actions et périmètres, et notez les « cas particuliers ». Si une exception semble fréquente, c'est peut-être un périmètre manquant.
Puis rédigez une matrice v1 et faites une revue ciblée avec les owners de ressources. Restez pratique : « Support peut-il voir les factures ? » « Finance peut-il modifier les détails client ? » Si quelqu'un hésite, capturez la règle en langage clair d'abord. Vous pourrez la formaliser ensuite.
Une fois la v1 acceptée, construisez un domaine de bout en bout avant d'étendre. Choisissez une tranche mince qui touche données, logique et UI (par exemple : Ticketing ou approbation de factures). Vous devez pouvoir répondre : qui peut voir, qui peut changer, et que se passe-t-il s'ils tentent.
Si vous utilisez AppMaster, mappez la matrice aux parties du produit avant de générer quoi que ce soit :
- Data Designer : alignez les ressources avec les entités (tables) et les champs clés qui affectent le périmètre (comme team_id, region_id)
- Business Processes : appliquez les règles là où les changements se produisent (create, update, approve, export)
- Règles de visibilité UI : masquer les actions impossibles et afficher un message clair quand l'accès est refusé
- Endpoints : n'exposez que ce dont chaque rôle a besoin, et gardez les opérations admin séparées
Un exemple simple : construisez un flux « Demande de remboursement » avec deux rôles (Support crée, Finance approuve). Quand cela fonctionne proprement, ajoutez les cas limites comme « Support peut annuler seulement sous 30 minutes. »
Essayez un petit outil interne dans AppMaster pour valider tôt rôles et flux, puis itérez depuis la matrice. L'objectif est de détecter les incompréhensions avant d'avoir 20 écrans et une pile de corrections de permissions.


