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 :

Accès en lecture à un seul schéma


Sujet :

Administration Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 41
    Points
    41
    Par défaut Accès en lecture à un seul schéma
    Bonjour est il possible de creer un utilisateur Oracle avecun 'acces en lecture sur un seul schema ?

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    Bonjour,

    Quelle est ta version d'Oracle?
    Il n'existe pas de privilège "read only" sur tout un schéma pour la création d'un user, il faut que tu octroies les droits sur chaque objet du schéma à ce user. En général on crée un rôle à qui on donne ces privilèges puis on donne le rôle au user concerné.
    A partir de la version 12.1 il vaut mieux attribuer le privilège READ que SELECT, car ce dernier laisse la possibilité de locker la table en ajoutant la clause FOR UPDATE.

  3. #3
    Membre du Club
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 41
    Points
    41
    Par défaut
    Bonjour, je suis en version 11.2.0.4.
    Merci pour ta réponse.

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Impossible à faire, il faudra que tu génères un fichier .sql listant tous les GRANTs que tu veux donner aux objets du schéma.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 'GRANT SELECT ON ' || table_name || ' TO USER2;' FROM DBA_TABLES WHERE owner = 'user1';
    Là où c'est corsé c'est qu'il faudra que tu traites les différents droits (SELECT, UPDATE, INSERT, DELETE, INDEX, REFERENCES...) mais aussi les différents types d'objets (TABLE, VUE, SEQUENCE...) sachant que tel droit n'a pas de sens pour tel objet

    Je te conseille de chercher du code sur le ne, à moins que le contenu de ton schéma soit très simple.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  5. #5
    Membre du Club
    Homme Profil pro
    DBA Oracle
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DBA Oracle

    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Points : 41
    Points
    41
    Par défaut
    Pour une version d'Oracle supérieure cela aurait il été plus simple ?

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    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 : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Pas à ma connaissance.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    C'est une des grosses lacunes d'Oracle. Tous les autres SGBDR pratiquent la sécurisation au niveau des schémas ou des bases.
    Tu doit donc passer par un script listant un a un les tables ET LES VUES....
    Mais le problème c'est que dès qu'une vue ou une table sera rajoutée au schéma, il faudra penser à lui rajouter ces privilèges !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre confirmé Avatar de PaulNero
    Homme Profil pro
    DBA Senior Oracle and SQL SERVER
    Inscrit en
    Octobre 2010
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : DBA Senior Oracle and SQL SERVER
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 416
    Points : 470
    Points
    470
    Par défaut read only on schema
    Bonjour,
    It is possible avec plsql.
    1- create l'utilisateur

    >
    CREATE USER toto
    IDENTIFIED BY toto
    DEFAULT TABLESPACE users
    TEMPORARY TABLESPACE temp;
    2- create le role

    create role p_role ;
    3-give le grant aux objects du schema

    >
    BEGIN
    FOR j IN (SELECT * FROM dba_tables WHERE owner='schema_name')
    LOOP
    EXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || j.table_name ||
    ' TO ro_role';
    END LOOP;
    END;
    4-give le role à user
    grant p_role to toto;

    Vous peut aussi faire plus simple as this:
    create user toto identified by toto; grant create session, select any table, select any dictionary to toto;
    la session qui applique ces commandes est la session du schema visé.
    Cordialement,
    J'ose espérer que m'a contribution vous a été d'une grande aide.
    Pensez tout de Même à dire MERCI et marquer RESOLU en cas de satisfaction.
    Paul

  9. #9
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Mais le problème c'est que dès qu'une vue ou une table sera rajoutée au schéma, il faudra penser à lui rajouter ces privilèges !
    C'est justement pour cette raison que ce n'est pas implémenté je pense: éviter que qqn crée une table et l'expose à quelqu'un d'autre sans le savoir (= sans le faire explicitement). I suffit de faire un DDL trigger si c'est le comportement souhaité:
    https://blog.psftdba.com/2009/03/automatically-granting-privileges-on.html
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 565
    Points
    52 565
    Billets dans le blog
    5
    Par défaut
    Excuse moi, mais là tu te contredis de façon assez amusante ! je te cite :
    1) c'est par sécurité que c'est interdit....
    2) ... on peut le faire en codant un déclencheur DDL
    Question : le fait de la faire par un déclencheur DDL c'est aussi par sécurité que c'est permis !!!!



    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    L'utilisation d'un trigger DDL n'est pas courante pour ce genre de pratiques. Et d'ailleurs la création d'un tel trigger est elle même soumise à privilège, c'est donc un DBA qui créera ce trigger si besoin. Si ton appli est bien faite tu n'en as pas besoin, car les grants nécessaires seront faits au moment de la création de la table.

  12. #12
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Question : le fait de la faire par un déclencheur DDL c'est aussi par sécurité que c'est permis !!!!
    La sécurité ce n'est pas de permettre ou d'interdire, mais d'attribuer une responsabilité.

    Avec la déclaration d'un grant schema, à qui est attribuée la responsabilité si une donnée critique est visible? Celui qui a fait le grant schema? Non car il ne sait pas quelle table va être créée par la suite. Celui qui a créé la table? Non il n'a pas fait le grant.

    Si tu fais le code procédural du trigger, la sécurité deviens ta responsabilité: tu peux filtrer, loguer, auditer,... S'il y a une fuite de donnée, c'est ton code qui en est responsable.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  13. #13
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par vanagreg Voir le message
    L'utilisation d'un trigger DDL n'est pas courante pour ce genre de pratiques. Et d'ailleurs la création d'un tel trigger est elle même soumise à privilège, c'est donc un DBA qui créera ce trigger si besoin. Si ton appli est bien faite tu n'en as pas besoin, car les grants nécessaires seront faits au moment de la création de la table.
    Exactement. C'est celui qui crée la table qui définit sa visibilité. Le grant doit se trouver en source control avec le create table.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

Discussions similaires

  1. [A-03] - accès en lecture seule
    Par Daejung dans le forum Sécurité
    Réponses: 8
    Dernier message: 12/11/2008, 19h44
  2. accès en lecture seule
    Par Melodie dans le forum Windows
    Réponses: 1
    Dernier message: 04/09/2008, 12h40
  3. Réponses: 1
    Dernier message: 11/07/2008, 23h05
  4. Validation et acces en lecture seul
    Par jojodid dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/04/2008, 15h10
  5. Problème de limitation en accès en lecture seule avec ma clé usb
    Par evangeliste dans le forum Administration système
    Réponses: 15
    Dernier message: 10/07/2006, 16h57

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