PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 17/05/2011 11:31:51

mortimer.pw
Membre

Cherche Tuto sur la sécurité, les rôles, les droits

Bonjour à tous,

Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.

Même aprés la lecture de différents chapitres de la Doc, j'ai un peu de mal à mettre en oeuvre la sécurité, à créer les rôles et donner les droits.

Auriez-vous quelques liens vers des Tutos, exemples, ... ?

D'avance merci.

Hors ligne

#2 17/05/2011 11:37:50

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

En ce qui me concerne je n'en connais pas, j'ai toujours travaillé à partir de la doc. Mais c'est vrai qu'elle est assez légère, et un peu fragmentée sur ce sujet.


Marc.

Hors ligne

#3 17/05/2011 11:56:50

jpargudo
Administrateur

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Bonjour Mortimer.pw,

Peut-être que cet article, assez vieux, de notre éminent gleu local pourra faire l'affaire ?

http://blog.postgresql.fr/index.php?post/drupal/137

Tenez nous au courant smile

Bonne journée,

Hors ligne

#4 20/05/2011 12:22:11

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Bonjour à tous,

J'ai une appli JAVA qui toune en local sur la machine de mon Serveur PostgreSQL.
Cette appli posséde un fichier de configuration où est décrit la connexion à la BD test :
        <DATABASE>
                <DRIVER>org.postgresql.Driver</DRIVER>
                <URL>jdbc:postgresql://localhost:5432/test</URL>
                <UID>toto</UID>
                <PWD>titi</PWD>
                <SCHEMA_GEO>monschema</SCHEMA_GEO>
                <SQLSTATE_CONNECTION>S1000</SQLSTATE_CONNECTION>
        </DATABASE>

J'ai ajouté à mon fichier pg_hba.conf la ligne suivante :
     host    test     toto      127.0.0.1/32                    md5

J'ai créé les rôles et donné les droits suivants :
    CREATE ROLE BASIC_monschema NOINHERIT;
    GRANT USAGE ON SCHEMA monschema TO BASIC_monschema;
    GRANT SELECT ON ALL TABLES IN SCHEMA monschema TO BASIC_monschema;
                CREATE ROLE toto NOINHERIT LOGIN ENCRYPTED PASSWORD 'titi' IN ROLE BASIC_monschema;

Lorsque j'exécute l'appli JAVA, j'obtiens le message suivant dans les logs :
     127.0.0.1 20829 2011-05-20 12:11:31 CEST PARSE 1 ERROR:  permission denied for schema monschema at character 166
     127.0.0.1 20829 2011-05-20 12:11:31 CEST PARSE 2 STATEMENT:  select id_test,lib_test from monschema.matabletest;

Est-ce que j'ai oublié quelque chose ?

Dernière modification par mortimer.pw (20/05/2011 12:25:43)

Hors ligne

#5 20/05/2011 12:25:27

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

De ce que je vois, nulle part vous ne dites à PostgreSQL qui toto fait partie de BASIC_monschema


Marc.

Hors ligne

#6 20/05/2011 12:27:26

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Je viens de modifier la précédente réponse pour dire que j'ai également créé le rôle :
     CREATE ROLE toto NOINHERIT LOGIN ENCRYPTED PASSWORD 'titi' IN ROLE BASIC_monschema;

excusez-moi.

Hors ligne

#7 20/05/2011 12:28:55

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Ok. Mettez toto en INHERIT, ça devrait mieux marcher. Sans cela, il n'a pas les privilèges de BASIC_monschema par défaut (il faudrait faire un SET ROLE BASIC_monschema dans la session pour qu'il les ait)


Marc.

Hors ligne

#8 20/05/2011 12:30:56

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Ok cela fonctionne.

Merci Marc de m'aider à progresser.

Hors ligne

#9 20/05/2011 12:31:39

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

C'est bien le principe de ce forum smile


Marc.

Hors ligne

#10 20/05/2011 14:40:34

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Je reçois à présent des mails d'erreur de l'appli JAVA :
          ERROR: permission denied for sequence test_id_seq

Cela laisse penser que mon utilisateur ne peut pas faire d'INSERT dans une table qui possède une séquence.

Je vais donc ajouter le droit : GRANT USAGE on ALL SEQUENCES IN SCHEMA monschema.

La notion USAGE n'est pas claire pour moi. Je lis dans la doc "autorise l'accès aux objets contenus dans le schéma ".
Mon : GRANT USAGE ON SCHEMA monschema TO BASIC_monschema;  n'est-il pas suffisant ?

Hors ligne

#11 20/05/2011 14:46:45

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Non, c'est exactement comme donner le droit de lecture sur un répertoire, et pas sur ces fichiers: vous avez le droit de voir le contenu du répertoire, mais pas d'ouvrir les fichiers pour autant.

Dans un schéma, vous avez des tables, des vues et des séquences. Et chaque objet a ses droits d'accès.

Pour récupérer une valeur d'une séquence, vous n'avez besoin que d'usage.


Marc.

Hors ligne

#12 23/05/2011 12:02:31

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Bonjour à tous,

Je viens de créer un rôle USER_BASIC (cet Utilisateur peut uniquement consulter les tables du schema TEST) :
     CREATE ROLE user_basic INHERIT LOGIN ENCRYPTED PASSWORD 'user_basic1' IN ROLE GROUPE_BASIC;

Le rôle GROUPE_BASIC est défini comme suit :
     CREATE ROLE GROUPE_BASIC NOINHERIT;
     GRANT USAGE ON SCHEMA TEST TO GROUPE_BASIC;
     GRANT SELECT ON ALL TABLES IN SCHEMA TEST TO GROUPE_BASIC;

Cet utilisateur peut utiliser l'outil PgAdmin pour ces consultations.
Est-il possible d'empêcher l'affichage des autres Schémas et de leurs contenus ?

De façon plus générale, est-il possible d'empêcher la consultation de toutes autres informations que celles définies dans les groupes et droits ?
Je pense notamment au PUBLIC.

Hors ligne

#13 23/05/2011 13:29:45

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Il n'y a aucun privilège à révoquer, qui empêcherait de voir la description des tables. Même si on n'a pas USAGE sur le schéma, on pourra voir la liste et la description des tables du schéma. On ne pourra pas voir leur contenu par contre.


Marc.

Hors ligne

#14 23/05/2011 13:43:01

mortimer.pw
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Bonjour Marc,
D'accord, le principal étant qu'un simple utilisateur ne puisse accéder au contenu des tables.
Concernant Public, y-a-t'il des choses à sécuriser ?
Autre exemple, je vois que mon simple utilisateur peut consulter les tables pg_user, pg_stat_activity, ... Est-il possible d'empêcher cela ?

Hors ligne

#15 23/05/2011 13:50:32

Marc Cousin
Membre

Re : Cherche Tuto sur la sécurité, les rôles, les droits

Un utilisateur ne peut pas accéder au contenu des tables s'il n'a pas USAGE sur le schéma et SELECT sur la table.

Public est en usage pour tout le monde, par défaut.

Les tables systèmes, vous ne pourrez pas les «sécuriser», si vous changez les droits dessus, vous allez tout casser. Leur contenu n'est que la description des objets du catalogue.


Marc.

Hors ligne

Pied de page des forums