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

PostgreSQL Discussion :

Gestion des droits


Sujet :

PostgreSQL

  1. #1
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut Gestion des droits
    Bonjour

    Il y a très longtemps que je n'ai pas utilisé PostgreSQL
    depuis la sortie de la V8.0 si ma mémoire ne me fait pas défaut.

    bref une éternité et le passage par MySQL et Oracle font que je ne sais plus comment m'y prendre pour gérer les droits.

    J'ai installé la V9.0.1.1 J'ai créé un rôle "Test" qui a le droit de créer des bases
    mais ne peux pas ce connecter
    J'ai créer un rôle de connexion "perso" (user) qui est membre de "Test" et qui peut se connecter de plus il hérite des droits. et à ma surprise il ne peut créer de base.
    je n'ai donc visiblement pas compris la notion de rôle et d'héritage
    je lui ai donné les droit de création de base.

    j'ai créé un rôle de connexion "other" qui est membre de "Test"qui peut se connecter mais pas créer de base.

    je me suis connecté "Perso" j'ai créé une base et j'ai fixé les droit par défaut
    j'ai ajouté "other" avec tous les droits sur les tables, les fonctions etc.

    puis j'ai crée un table et l'utilisateur "other" ne peut y accéder
    la encore je ne comprends pas le fonctionnement des droits par défaut
    en ajoutant "other" dans les droits par défaut pour les tables je m'attendait à ce que lorsque je créé une table elle hérite de ces droits par défaut ce qui n'est pas le cas.

    la façon de gérer les droits d'un outils de base à un autre est tellement différents que je me suis perdu.

    voici ce que j'ai l'habitude de faire.
    L'admin à tous les droits.
    pour chaque projets je crée un user projectAdm et un groupe project
    et un ou plusieurs user dev
    tous les utilisateurs du projet sont dans le groupe project.
    le projectAdmin est le seul à pouvoir créer des bases dans le projet
    les utilisateurs dev peuvent créer des tables, des vues, des fonction etc.
    et tous les dev peuvent voir les création des autres dev
    enfin je crée un ou plusieurs user simpleUser qui peut lire et écrire des données utiliser les fonctions etc.

    je n'ai visiblement pas bien saisie les évolution du modèle de postgreSQL et je n'obtient pas les effets désirés. c'est comme si à chaque fois que je créais quelque chose sous un nom donnée je dois objet par objet re donner tous les droits à chaque utilisateur.

    en lisant la doc je me disait que la notion de group (rôle) me permettrait de définir un groupe "projet" un groupe "dev" du projet un groupe "simpleuser" et ainsi créer des user et le mettre dans un groupe.

    soit ce n'est pas possible et j'ai vraiment mal compris la doc.
    soit ça l'est mais là je n'ai pas compris comment le mettre en oeuvre.

    A+JYT

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    J'ai créer un rôle de connexion "perso" (user) qui est membre de "Test" et qui peut se connecter de plus il hérite des droits. et à ma surprise il ne peut créer de base.
    Si l'utilisateur a le privilège CREATEDB (qui se positionne par CREATE USER ou ALTER USER, mais pas par GRANT), il a le droit de créer une base, sinon non. Il n'y a pas d'héritage de cette notion.

    je me suis connecté "Perso" j'ai créé une base et j'ai fixé les droit par défaut
    j'ai ajouté "other" avec tous les droits sur les tables, les fonctions etc.
    puis j'ai crée un table et l'utilisateur "other" ne peut y accéder
    Le problème est peut-être qu'on ne peut pas mettre des droits sur des objets non encore créés. Mais quand un objet est créé on peut le transférer à quelqu'un d'autre avec une commande du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE nomtable OWNER TO projet
    Dans ton cas ça peut être une solution plus simple que de faire des GRANT, à voir.

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    A quoi sert alors la notion de groupe (rôle qui ne peut se connecter) ?

    merci tout de même
    A+JYT

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    A centraliser tout un ensemble de droits.
    Imaginons que t'aies 500 utilisateurs (user1, user2, user3, ..., user500) qui aient besoin de faire de l'update sur ta table toto
    2 solutions
    solution 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create table toto (...);
    grant update on toto to user1;
    grant update on toto to user2;
    grant update on toto to user3;
    ...
    grant update on toto to user500;
    Ok, tu me diras "c'est pas la mort". Mais oups, l'user18 et l'user55 disparaissent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    revoke update on toto from user18;
    revoke update on toto from user55;
    drop role user18;
    drop role user55;
    Et oups, il faut aussi qu'ils aient le droit delete. Et aussi les mêmes droits sur une table titi. Là, ça commence déjà doucement à bien me faire ch...

    solution 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create table toto (...);
    grant update on toto to groupUser;
    Puis, à chaque utilisateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    create role userX login in role groupUser;  => chaque userX héritera des droits du groupe "groupUser"
    Ou à chaque suppression
    Oups, il faut aussi une table titi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create table titi (...);
    grant update on titi to groupUser;   => tous les userX appartenant au groupe "groupUser" hériteront du droit update sur titi
    Oups, il faut aussi du delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grant delete on toto to groupUser;
    grant delete on titi to groupUser;
    Oups, ils n'ont maintenant plus le droit update sur toto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    revoke update on toto from groupUser;
    Et c'est maintenant beaucoup plus simple (enfin pour moi quoi)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Gestion des droits Samba
    Par mask66 dans le forum Réseau
    Réponses: 9
    Dernier message: 25/05/2005, 11h56
  2. quel SGBD possible pour telle gestion des droits
    Par meufeu dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 14/04/2005, 09h17
  3. gestion des droits d'accès : pg_hda.conf et autres
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 12/02/2005, 07h57
  4. Gestion des droits
    Par totop dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/01/2005, 09h49
  5. Gestion des droits d'accès
    Par soulryo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/01/2005, 10h50

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