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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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, 15h24
  2. Question : Gestion des droits, rôles
    Par MasterFunk dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/08/2009, 16h18
  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, 18h24
  4. droits à travers une vue
    Par aline dans le forum Oracle
    Réponses: 5
    Dernier message: 05/01/2005, 18h14
  5. Gestion De Droits Grant Revoke
    Par donde dans le forum Informix
    Réponses: 5
    Dernier message: 15/01/2003, 11h59

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