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 :

Distribution de droits sur des tables via des roles [12c]


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 65
    Points
    65
    Par défaut Distribution de droits sur des tables via des roles
    Bonjour à tous,

    Sur une base 12c que je viens d'installer, je n'arrive pas à distribuer des droits sur des tables via des rôles.
    Voici mon scénario type :

    SYSTEM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create user USER1 identified by azerty default tablespace users temporary tablespace temp;
    grant connect, resource to USER1;
    grant unlimited tablespace to USER1;
    grant create role, drop any role to USER1 with admin option;
     
    create user USER2 identified by azerty default tablespace users temporary tablespace temp;
    grant connect, resource to USER2;
    grant unlimited tablespace to USER2;
    USER1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    create role role1 identified by azerty;
    set role role1 identified by azerty;
    grant select on client to ROLE1;
    grant role1 to USER2;
    USER2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from USER1.client;
    Erreur commençant à la ligne: 1 de la commande -
    select * from USER1.client
    Erreur à la ligne de commande: 1 Colonne: 23
    Rapport d'erreur -
    Erreur SQL : ORA-00942: Table ou vue inexistante
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:
    Evidemment la table CLIENT existe et si je donne directement les droits select sur la table client à user1, il voit bien la table !
    Ma question :
    Que dois-je faire pour que cela fonctionne ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    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 460
    Points : 8 073
    Points
    8 073
    Par défaut
    C'est normal, votre rôle n'est pas activé chez USER2.
    L'activation du rôle doit se faire dans la session de celui qui a besoin de l'utiliser (et il faudra recommencer à chaque nouvelle session).

    Donc c'est USER2 quoi doit faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET role role1 IDENTIFIED BY azerty;
    Mais au fait, avez-vous vraiment besoin d'un mot de passe ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 65
    Points
    65
    Par défaut
    Bonjour,
    Merci pour votre réponse.
    Non je n'ai pas vraiment besoin de mettre un mot de passe sur les rôles, si ce n'est que cela rajoute une couche de sécurité.
    Ceci dit, cela ne change rien, j'ai fait ceci :
    USER1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create role role2;
    grant select on article to role2;
    grant role2 to USER2;
    USER2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from user1.article;
    Erreur commençant à la ligne: 1 de la commande -
    select * from user1.article
    Erreur à la ligne de commande: 1 Colonne: 23
    Rapport d'erreur -
    Erreur SQL : ORA-00942: Table ou vue inexistante
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:

    Si je fais activer le rôle par user2 :
    Cela fonctionne, mais jusqu'à la version 10, il n'était pas nécessaire d'activer les rôles.
    Du coup ma question devient, comment activer automatiquement les rôles à la connexion ?
    J'ai bien essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter user user2 default role connect, resource, role2;
    Mais cela ne fonctionne pas, je n'ai de message d'erreur, mais seuls les rôles système sont activés par défaut !

    Merci,

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 169
    Points : 65
    Points
    65
    Par défaut
    Re,
    Je pense avoir trouvé. Comme d'habitude, poser une question, c'est déjà cheminer vers un début de réponse ...
    Donc il semblerait que ceci fonctionne correctement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter user user2 default role all;
    Merci,

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

Discussions similaires

  1. [2K5] Droits d'accès sur les tables; via une stored procedure
    Par cavo789 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2008, 07h57
  2. Réponses: 3
    Dernier message: 30/08/2007, 16h41
  3. Réponses: 3
    Dernier message: 23/01/2007, 09h14
  4. libellé des tables via les vues systèmes
    Par petit arbre dans le forum DB2
    Réponses: 2
    Dernier message: 17/10/2006, 19h28
  5. [MySQL] Perte des droits sur une table ??
    Par Mystic eyes dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 05/07/2006, 17h40

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