IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

PL/SQL Oracle Discussion :

Gestion des habilitations


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut Gestion des habilitations
    Bonjour à tous


    Je travaille actuellement sur une base de données Oracle qui contient les données d'une société dans domaine médical, prochainement cette même base accueillera les données d'autres sociétés, dans l'expression de besoin il est bien précisé que une gestion des habilitations doit être mise en place afin d'empêcher les utilisateurs d'une société donnée de visualiser les données d'autres société

    Pour l'instant j'ai pensé à deux solutions possibles :

    01) Intégration de toutes les sociétés dans la base actuelle + création des vues matérialisée par société

    - Avantages :
    - Facile à mettre en place
    - Inconvénients
    - Vu la volumétrie des données, les temps de traitements vont êtres longs

    02) Séparation des données par schéma

    - Avantages :
    - Temps de traitements faibles
    - Plus sécurisé
    - Inconvénients
    - la mise en place est extrêmement complexe


    Que en pensez-vous ?

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    D'autres informations seraient nécessaires pour vous faire des suggestions :
    - Quelle est votre version d'Oracle ?
    - Êtes-vous en édition Entreprise ?
    - Combien de sociétés environ allez-vous avoir ?
    - Y a-t-il des périodes (la nuit notamment) sans activité applicative qui permettent de faire des opérations de maintenance ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut Quelques informations
    Merci de votre réponse et voici quelques informations utiles :

    - La version oracle est 9.2, Edition entreprise
    - Pour la volumétrie :
    - La base contient une 40 de tables environ, parmi ces tables il y a 4 grosse tables (environ 20 millions de lignes pour chacune), le reste c'est du référentiel et des tables de paramétrage
    - Pour les Indexes : les temps de réponses actuellement restent acceptables
    - la base est alimentée quotidiennement la nuit (temps de traitement ne dépasse pas les 20 minutes)
    - la base se trouve sur une instance qui contient d'autres schémas
    - les statistiques de traitement (DBMS_STAT) sont calculées quotidiennement pour alimenter la table (Plan_table)
    - le Plan d'exécution des principales requêtes, passe principalement par les index
    - la volumétrie moyenne du fichier source est 100 Mo Quotidiennement (20 chargement/mois)
    - 6 Nouvelles sociétés à intégrer dans la base (Même volumétrie et même procédure d'alimentation)
    - La purge de la base est faite tous les 4 ans

    Cordialement.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    La solution industrielle adaptée à votre contexte, c'est typiquement les prédicats dynamiques à la VPD.
    Soit la table T1, dans laquelle vous avez vos données, toutes sociétés confondues.
    On peut se débrouiller pour que les requêtes qui touchent T1 soient transformées à la volée pour ajouter un filtrage dépendant de l'utilisateur qui les a lancées.

    Par exemple, si l'utilisateur S1 exécute "SELECT * FROM T1", ça se transforme en "SELECT * FROM T1 WHERE SOCIETE='S1'".
    Si c'est S2, ça se transforme en "SELECT * FROM T1 WHERE SOCIETE='S2'".
    Voir le tutoriel suivant pour plus de détails : http://schelabi.developpez.com/securitegranulaire/

    L'avantage de cette formule, c'est que vous avez un seul schéma de données, que vous n'avez aucun objet à dupliquer, et que ça sera facilement évolutif indépendamment du nombre de sociétés.

    Si vous faites un schéma applicatif par société, il faudra bien sûr dupliquer tous les objets (tables, procédures, déclencheurs) à chaque nouvelle société ; mais de plus, il faudra reporter chaque petite correction ou évolution dans tous les schémas. Ça complexifie aussi la procédure de chargement des données.
    Je doute que cela soit très viable pour 7 sociétés, mais imaginez si vous en avez 50.

    Du point de vue du PL/SQL, on peut néanmoins s'alléger la tâche en utilisant les procédures en mode AUTHID CURRENT USER. De cette sorte, un seul exemplaire des procédures serait suffisant, au lieu de les dupliquer dans chaque schéma. Par contre, il faudrait gérer les droits, donc il n'est pas certain que le jeu en vaille la chandelle.

    Quant aux vues matérialisées, bienvenue au pays de l'usine à gaz !
    Si je vous suis bien, vous auriez une VM différente par société, ce qui veut donc dire que toutes vos requêtes devront être construites dynamiquement pour aller attaquer la VM adaptée, selon l'identité de l'utilisateur.
    En outre, vous serez à la merci des problématiques de rafraîchissement (ATOMIC_REFRESH qui ne fonctionne pas en V9, etc), du besoin de modifier vos données au lieu de faire du SELECT pur...
    A mon avis, à fuir comme la peste !

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    J'ajouterai que vous pouvez également partitionner vos grosses tables par société !

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Par défaut Des précisions très précieuses
    Merci pour toutes ces précisions

    • Je trouve la solution vraiment intéressante, sur tous les cotés (Mise en place, maintenance, fiabilité ....)
    • Je pense qu'une restructuration des index sera nécessaire puisque la requête fera un filtrage supplémentaire sur la colonne société (Varchar2) ..!!!
    • Pensez-vous que le partitionnement de ces tables volumineuses sera nécessaire pour éviter les ralentissements qui seront liés à l'augmentation de la taille des tables ?


    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2008] Gestion des Habilitations
    Par Crackos dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 18/08/2011, 10h50
  2. Centraliser la gestion des habilitations (roles, permissions)
    Par erwan.bodere dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 28/05/2010, 09h53
  3. Gestion des habilitations
    Par kymior23 dans le forum Général Java
    Réponses: 3
    Dernier message: 10/03/2009, 12h22
  4. [MCD] Gestion des habilitations de personnels
    Par sozie9372 dans le forum Schéma
    Réponses: 3
    Dernier message: 19/09/2006, 14h57
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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