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

Administration Oracle Discussion :

Gestion de droit à travers un rôle [11gR2]


Sujet :

Administration Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut Gestion de droit à travers un rôle
    Bonjour,
    J'ai un petit problème que je n'arrive pas à résoudre concernant un problème de gestion de droits.

    Un utilisateur paul a été créé et possède les rôles CONNECT RESOURCE.

    Un utilisateur pierre a été créé et possède les rôles CONNECT RESOURCE et CREATE ROLE.
    Ce dernier a créé une table de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE tb_localites
      (
    	pk_loc	NUMBER		CONSTRAINT ct_pk_loc		PRIMARY KEY,
    	npa_loc	VARCHAR2(10)	CONSTRAINT ct_nn_npa_loc	NOT NULL,
    	nom_loc	VARCHAR2(25)	CONSTRAINT ct_nn_nom_loc 	NOT NULL,
    	CONSTRAINT ct_un_npa_nom_loc	UNIQUE (npa_loc, nom_loc)
      );
    L'utilisateur pierre attribue le droit de lecture à paul sur la table tb_localites de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT SELECT ON tb_localites TO paul;
    L'utilisateur paul a accès sans problèmes aux données par la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM pierre.tb_localites;
    Par contre, si l'utilisateur pierre passe par un rôle de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CREATE ROLE superviseur;
    GRANT SELECT ON tb_localites TO superviseur;
    GRANT superviseur TO paul;
    Et que paul essaie d'accéder aux données de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM pierre.tb_localites;
    Il n'est pas possible d'accéder à la table, ci dessous le message d'erreur.
    ORA-00942: table or view does not exist
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:
    Je pense que je dois faire une erreur de débutant mais cela fait plusieurs heures que je cherche et je ne trouve pas la solution.
    J'ai pourtant souvent utilisé cette approche sans problème... me semble-t-il !
    Quelqu'un saurait il ou est l'erreur dans mon approche ?

    Merci pour vos réponses et bon week-end !

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT SELECT ON pierre.tb_localites TO superviseur;
    il se passe quoi? Je pense que via le rôle le schéma de l'objet doit être précisé, surtout si tu n'as pas créé de synonyme public pour tb_localites.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut
    Même problème...

    Ce qui est étrange est que si je transmets les droits de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT SELECT ON tb_localites TO paul;
    Et que je vais voir les droits de paul par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM USER_TAB_PRIVS;
    J'obtiens :
    GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE
    ------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------------------------------------- --- ---
    PAUL PIERRE TB_LOCALITES PIERRE SELECT NO NO

    Lorsque pierre fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE ROLE superviseur;
    GRANT SELECT ON pierre.tb_localites TO superviseur;
    GRANT superviseur TO paul;
     
    SELECT * FROM USER_TAB_PRIVS;
    aucune ligne sélectionnée !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut
    La solution se précise :

    Dans mes premiers tests, j'ai créé les utilisateurs avec SQL Developer.
    Dans un deuxième temps, le les ai créé à la main de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CONNECT system/mdp
    CREATE USER pierre IDENTIFIED BY pierre;
    CREATE USER paul IDENTIFIED BY paul;
     
    GRANT CONNECT, RESOURCE, CREATE ROLE TO pierre, paul;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    -- Utilisateur pierre :
    connect pierre/pierre
     
    CREATE TABLE tb_localites
      (
    	pk_loc	NUMBER		CONSTRAINT ct_pk_loc		PRIMARY KEY,
    	npa_loc	VARCHAR2(10)	CONSTRAINT ct_nn_npa_loc	NOT NULL,
    	nom_loc	VARCHAR2(25)	CONSTRAINT ct_nn_nom_loc 	NOT NULL,
    	CONSTRAINT ct_un_npa_nom_loc	UNIQUE (npa_loc, nom_loc)
      );
     
    INSERT INTO tb_localites VALUES (1, '90000', 'Belfort');
    INSERT INTO tb_localites VALUES (2, '90100', 'Delle');
    Commit;
     
    CREATE ROLE superviseur;
    GRANT SELECT ON tb_localites TO superviseur;
    GRANT superviseur TO paul;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    connect paul/paul
    SELECT * FROM pierre2.tb_localites;
    Et la ça fonctionne !
    Mais je ne trouve pas la différence entre la création à la main et la création dans SQL Developer
    Une idée ?

    Merci pour vos réponses

  5. #5
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Tu as marqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM pierre2.tb_localites;
    Pourquoi c'est pierre2 et pas pierre?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut
    Erreur de frappe
    (En fait j'ai fait en parallèle sur SQL Developer et à la main avec pierre et paul sur SQL Developer et pierre2 et paul2 à la main et j'ai oublié de corriger lorsque j'ai posté)
    Milles excuses

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut
    Il fallait donc bien lire
    SELECT * FROM pierre.tb_localites; et pas SELECT * FROM pierre2.tb_localites; (Désolé)
    Je recherche actuellement la différence en terme de création de l'utilisateur, c'est là que se trouve le problème.
    Je recherche un outil permettant de visualiser les utilisateurs graphiquement afin de comparer les deux situations et détecter la (les) différence(s).
    Quelqu'un connaît-il un outil de la sorte pour Oracle 11 XE installé sur plateforme Windows ? SQL Developer ne permet pas ce genre de comparaison, à ma connaissance...
    Meric

  8. #8
    Membre chevronné
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 395
    Par défaut Gestion de droit via un role
    Si tu verifie sous l'utilisateur paul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from session_roles ;
    Afin de vérifier le role superviseur est bien actif ?
    et normalement il y a aucun problème sur la première manip

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 11
    Par défaut
    Bonjour,
    Je reviens de vacances et je reprends le fil de la discussion.
    Le problème provenait du fait que l'utilisateur paul a été créé via SQLDevelopper.
    Le rôle superviseur était bien attribuer à paul mais l'option par défaut non activée ! Une fois celle-ci activée, plus de problèmes d'accès de paul vers la table de pierre.
    Merci pour votre aide

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

Discussions similaires

  1. Cube : gestion des droits (rôles) sur les données
    Par classal dans le forum Pentaho
    Réponses: 1
    Dernier message: 02/09/2013, 16h24
  2. Question : Gestion des droits, rôles
    Par MasterFunk dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/08/2009, 17h18
  3. A propos de gestion de droits d'accès à base de rôle
    Par kymior23 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 29/04/2009, 19h24
  4. droits à travers une vue
    Par aline dans le forum Oracle
    Réponses: 5
    Dernier message: 05/01/2005, 19h14
  5. Gestion De Droits Grant Revoke
    Par donde dans le forum Informix
    Réponses: 5
    Dernier message: 15/01/2003, 12h59

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