HomePower AppsRôles de sécurité multi-divisions

Rôles de sécurité multi-divisions

Voilà plusieurs fois que je vois la question passée. Les gens se retrouvent un peu coincés à travers la pile de rôles de sécurité et s’ajoutent à cela les divisions. Comment faire pour avoir le même rôle de sécurité pour 2 utilisateurs dans 2 divisions différentes. Pour cela, il faut d’abord prendre un recul et revoir comment le processus d’attribution de rôle fonctionne.

Qu’est-ce qu’un rôle dans PowerPlatform ?

Ici, je ne referrai pas la grande explication de ce qu’est un rôle de sécurité. J’irais directement à la mécanique et vous allez comprendre (pour certain) ce qui vous échappait.

Un rôle de sécurité est un composant qui agit comme conteneur pour y ordonner des privilèges sur les tables et autres composants de votre système dans un environnement. Ce rôle de sécurité est, en quelque sorte, un patron qui permet la configuration simple de la sécurité. Lorsque vous attribuez un rôle à un utilisateur, vous créez un enregistrement d’un rôle utilisateur du système (table systemuserroles). Cet enregistrement capture le patron du rôle de sécurité, l’identifiant de l’utilisateur/équipe pointé et l’identificateur de la division concernée (voir plus loin). Ensuite, le système se basera sur les enregistrements de la sorte pour octroyer les accès nécessaires à l’utilisateur.

Chaque utilisateur possède une division. Le rôle attribué utilisera cette division pour l’enregistrement de rôle utilisateur système.

Donc, suivant cette logique, pour donner un rôle à un utilisateur dans une division autre que la sienne, vous allez devoir forcer la création de l’enregistrement, soit avec XrmToolBox ou autre. Cela reste possible, mais reste très compliqué à maintenir et à ordonner. Sans oublier que si vous avez un grand nombre de rôle à attribuer, la tâche sera colossale, malheureusement.

Alternative ? Équipe!

Lorsque vous vous retrouvez dans un contexte avec des utilisateurs possédant plusieurs rôles dans différentes divisions (ou même si ce n’est pas le cas, la solution fonctionne très bien pour toute circonstance!), une solution simple et efficace reste l’utilisation d’équipe pour orchestrer tout cela. Comment ? En ajoutant simplement une équipe qui agit comme conteneur pour appliquer les rôles à vos utilisateurs.

On reprend le fonctionnement ci-haut en y ajoutant l’équipe, voilà ce que cela donne.

-Vous créez un composant Rôle de sécurité (ou utilisez ceux existants);
-Une fois ce rôle « patron » créé, vous créez une/des équipe(s) que vous baptiserez logiquement selon la fonction du rôle de sécurité (par exemple: « Gestionnaire des demandes publiques », « Agent de service », etc);
-Vous attribuez maintenant une division à cet enregistrement d’Équipe;
-Vous attribuez un/des rôles à cette équipe;
-Voilà, il ne reste qu’à ajouter les utilisateurs souhaités comme membre de cette équipe pour qu’ils bénéficient des rôles par héritage!

Les utilisateurs sont également reliés à des divisions, mais dans ce contexte, l’information n’est pas pertinente pour l’attribution par héritage d’équipe

Ça ne règle pas l’idée d’avoir des rôles dans 2 divisions différentes pour un même utilisateur ? Biensûr que oui, il ne suffit que de créer une nouvelle équipe qui aura une division différente, ayant les mêmes rôles (ou pas) et vous ajoutez l’utilisateur concerné, même s’il se trouve dans une division différente. Gardez, comme concept de sécurité, que vous fonctionnez maintenant par « Fonction ». Ainsi, vous dites qu’une fonction possède un ou plusieurs rôles et concerne une division uniquement, mais vous pouvez créer plusieurs équipes avec la même fonction pour plusieurs divisions. Une fois votre modélisation de fonction complétée et intégrée sous forme d’équipes dans votre système, la jonglerie avec les utilisateurs et leurs rôles devient une tâche simple et agréable à exécuter.

De cette façon, vous pouvez octroyer l’ensemble de vos rôles confortablement et ce, en gardant une souplesse et une maintenance agréable.


Bon développement!

Gabriel Gadoury
Gabriel Gadoury
Avec plus de 11 ans d'expérience en développement d'application d'envergure, d'automatisations et de formation. Je me spécialise maintenant en Power Platform depuis plus de 6 ans, offrant du soutien et des idées à la communauté pour la faire grandir, faire connaître Power Platform et repousser les limites de cette techno encore plus loin.