Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut Regles d'architecture en matière de gestion des utilisateurs
    Bonjour,
    dans notre boîte nous gérons un ensemble d'applications de gestion multi-tenant (style erp pour plusieurs entreprises qui utilisent les mêmes services mais ne partagent pas focément leur données) dédiées à différents domaines :
    gestion clients, facturation, gestion catalogue produit et paramétrage...
    Pour accéder à ces applications l'administrateur doit créer un compte pour l'utilisateur sur une application centralisée de gestion de droits. L'utilisateur se voit donc accorder le droit d'accéder par exemple à l'application de gestion client, ainsi que le droit d'enregistrer un nouveau client...
    Ce système fonctionne assez bien, par contre on a de plus en plus le besoin de modifier l'application de gestion de droits
    afin :
    - de gérer pour chaque applications le droits de travailler que sur les données de tel ou tel tenant.
    - de gérer pour une application des droits plus fins sur tel ou tel objet (par exemple l'utilisateur ne pourra collecter que les fonds de caisse de certains magasins du tenant 124)...
    Du coup, face à ces différentes particularités à gérer pour chaque application, on se demande si on fait vraiement le bon choix d'avoir une application ceentralisée pour les droits : est-ce que par exemple ce ne serait pas à chaque application d'avoir un sous-modulme de gestion de droits pour gérer ces particularités?
    Mais là encore, on a pas encore fait ce choix car on a peur que cela ne deviennent encore moins maintenable avec la synchonisation à faire et l'incompréhension du système que cela pourrait générer (ie. on créer un compte dans une appli et on fixe la liste des autorisations dans une autre...)

    Que pensez-vous de ce type de problématique ?
    Existe-il une règle de l'art en la matière ?

    Merci de votre aide,
    Lek.

  2. #2
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 928
    Points
    2 928
    Par défaut
    Bonjour,

    Je n'ai pas bien compris si l'appli de gestion des droits demande de spécifier le tenant à chaque fois qu'on rajoute un droit à un user. Si c'est le cas ça me parait dangereux, une erreur de manip est vite arrivée...

    Sinon, je ne vois pas trop l'incidence de l'architecture multi-tenant sur le problème. C'est plus une question de modéliser le système de droits de façon générique, et pas en précisant en dur dans le code de l'appli gestion des droits l'ensemble des droits qui existent.

  3. #3
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Merci de ta réponse. Je me suis effectivement peut être mal exprimé. Je vais donner un cas réel en exemple.
    Nous avons une application permettant de gérer les fonds de caisse de certains commerces sur 3 types de caisses enregistreuses que nous distribuons.
    Initialement dans l'application de droit, nous avions donc pour le rôle "gestionnaire de caisse", les droits suivants :
    - droit de consulter l'historique des données de vente de caisse (récupérer depuis les bandes de caisses ayant enregistré les transactions)
    - droit de créer un contrôle de caisse (rapprochement entre théorique en compté en réel)

    A un utilisateur U1 de la compagnie A, nous affectons ce rôle et spécifions qu'il ne peut travailler que sur les données de la compagnie A.

    Ensuite nous avons eu des cas où une entité tierce, effectuait cette opération pour plusieurs compagnies (B,C,D).
    Pour ne pas créer autant de comptes utilisateur que de compagnie, nous avons associé plusieurs fois le rôle exercé à la compagnie pour laquelle ce rôle pouvait être exercé.
    Donc l'utilisateur U2 a :
    le rôle "gestionnaire de caisse" pour la compagnie B
    le rôle "gestionnaire de caisse" pour la compagnie C
    le rôle "gestionnaire de caisse" pour la compagnie D

    Notre application lui permet alors sans ce déloguer d'indiquer qu'il veur travaillier sur les données de la compagnie B,C ou D et ses autorisations sont revérifiées en fonction du rôle qu'il a pour la compagnie sélectionnée.

    Enfin dernièrement, on a d'autre cas qui se présentent :
    on nous demande de pouvoir spécifier que l'utilisateur U3 puisse avoir le rôle de "gestionnaire de caisse" mais seulement sur les caisses d'un certains types de la compagnie E, et assure le même rôle pour d'autres types de caisses pour les compagnies F et G...

    En d'autre terme l'application de gestion des droits n'arrête pas d'évoluer afin de pouvoir couvrir tous les besoins spécifiques de cette application de gestion de caisse. Et d'autres applications pourraient amenées à demander des développements spécifiques...
    D'où la question : est ce que nous nous y preonons mal? Est-ce que l'application de gestion de droits ne devrait pas gérer seulement l'attribution des rôles aux utilisateurs et ce serait ensuite au niveau des applications (la gestion de fonds de caisse) de gérer par utilisiateur l'ensemble des données qui peuvent être consultées et/ou modifiées?

    Bon j'espère que cela sera plus clair avec cet exemple tiré du réel!

    Merci encore pour votre point de vue sur la question.

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 333
    Points : 24 240
    Points
    24 240
    Par défaut
    Salut,

    Citation Envoyé par LEK Voir le message
    Est-ce que l'application de gestion de droits ne devrait pas gérer seulement l'attribution des rôles aux utilisateurs et ce serait ensuite au niveau des applications (la gestion de fonds de caisse) de gérer par utilisiateur l'ensemble des données qui peuvent être consultées et/ou modifiées?
    Plus ou moins.
    Je vous suggère de regarder ce que fait OpenStack/KeyStone dans ce domaine. Ils résolvent le même problème: un administrateur peut avoir le droit de gérer plusieurs "tenants" et donc... avoir certains droits concernant les objets "associés" au "tenant".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 928
    Points
    2 928
    Par défaut
    Une solution serait de créer un système de gestion des droits commun à toutes les applis (du genre droit = user + privilège + ressource cible), mais cette uniformisation n'est pas toujours possible du point de vue métier.

    On peut aussi avoir N applications de gestion des droits mais il va y avoir de la duplication de code entre elles.

    Tout le problème vient du fait que ce besoin n'a pas été perçu dès le départ. C'est toujours plus difficile de rattraper le coup après...

  6. #6
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Bonjour,
    @wiztricks : merci mais malheureusement je n'ai pas compris comment fonctionnait OpenStack/KeyStone, ou simplement la fonction ou la description que j'aurais du trouver sur leur site..


    @Luckyluke34 : justement on a bien une application de droit commune a toute les applications. La question c'est qu'aujourd'hui, on a une certaine lourdeur :
    => on doit synchronyser l'application cliente et l'application de droit dans les deux sens :
    - 1) l'application cliente doit envoyer la liste des données élémentaires qui doivent être utilisées dans la définition du droit
    - 2) l'application de gestion de droit permet alors de créer différent groupes de ces données élementaires
    - 3) l'application de gestion de droit renvoie la définition de ces groupes de données élementaires à l'application cliente
    - 4) on peut alors créer un compte utilisateur pour l'application cliente sur l'application de gestion de droit en, lui associant un privilège sur le groupe de données élémentaires pour l'application cliente.
    - 5) L'utilisateur se connecte sur l'application cliente => celle-ci interroge l'application de droits pour savoir si l'utilisateur est authentifié et quels sont ces droits sur cette applicaiton.
    - 6) L'application de droits renvoie donc : la liste des privilèges possibles pour chaque ID de groupes d'entités élémentaires.

    ==> il y a sûrement plus simple comme manière de faire, non ?



    Lek.

  7. #7
    Membre émérite
    Inscrit en
    janvier 2011
    Messages
    805
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : janvier 2011
    Messages : 805
    Points : 2 928
    Points
    2 928
    Par défaut
    Oui, il y a beaucoup plus simple. Pourquoi synchroniser les applications entre elles (donc, si j'ai bien compris, transférer des données) alors qu'il suffirait d'utiliser des références aux ID des ressources des applications clientes sur lesquelles on donne des droits ?

    La (dé)synchronisation, c'est le mal

  8. #8
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 333
    Points : 24 240
    Points
    24 240
    Par défaut
    Salut,

    Citation Envoyé par LEK Voir le message
    @wiztricks : merci mais malheureusement je n'ai pas compris comment fonctionnait OpenStack/KeyStone, ou simplement la fonction ou la description que j'aurais du trouver sur leur site..
    Essayez de lire et profiter de cette présentation

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2005, 18h18
  2. [Oracle]probleme de gestion des utilisateurs
    Par gentarik dans le forum Oracle
    Réponses: 5
    Dernier message: 09/03/2005, 12h58
  3. [Gestion des utilisateurs] Changer l'interface simplifiée
    Par sekiryou dans le forum Windows XP
    Réponses: 4
    Dernier message: 19/01/2005, 05h42
  4. Administration MySQL gestion des utilisateurs
    Par MaxiMax dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2004, 13h56
  5. Gestion des Utilisateurs depuis une application
    Par LLaurent dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/03/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo