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 30/11/2011 16:43:11

sterfield
Membre

Utilisateur postgresql et accès aux BDD

Bonjour,

J'ai une question concernant les droits que possède un utilisateur donné pour se connecter à une base.

Admettons que j'ai un pg_hba.conf assez ouvert, du genre "host all all 192.168.1.0/24  md5". Donc toute personne sur le réseau 192.168.1.0 pourra accéder aux base de mon server postgresql, à condition qu'il fournisse un bon mot de passe.

J'ai deux bases, appelons les "base1" et "base2", qui appartiennent à l'utilisateur "postgres".

Si je créé un utilisateur "test", muni d'un mot de passe, j'ai manifestement le droit de me connecter à toutes les bases, depuis n'importe quel serveur sur 192.168.1.0/24.

Par exemple, un "psql -h <serveur_pg> -d base1 -U test", en entrant le bon mot de passe, la connexion va s'effectuer, je pourrais lister les tables. Je n'ai toutefois pas le droit de faire un select dessus (encore heureux).

Donc soit j'ai raté une subtilité dans la sécurité sur Postgresql, soit la "vraie" barrière se situe au niveau du pg_hba.conf et qu'une fois passé, c'est accès libre pour la connexion sur les bases.

Existe t'il une option / privilège qui empêche explicitement la connexion à tous les utilisateurs, sauf le owner et les utilisateurs clairement spécifiés ?

Merci pour votre aide.

EDIT : je m'auto-réponds : En faisant un "REVOKE CONNECT ON DATABASE base1 FROM PUBLIC", l'utilisateur test n'a plus le droit de se connecter à base1. Par contre, je suis étonné que ca ne soit pas la "norme" que d'interdire tout le monde sauf spécifié explicitement, plutôt que l'inverse. Il existe une option qui permet de faire ca ?

Dernière modification par sterfield (30/11/2011 16:52:40)

Hors ligne

#2 30/11/2011 16:55:30

rjuju
Administrateur

Re : Utilisateur postgresql et accès aux BDD

Bonjour.

Vous pouvez spécifier dans le pg_hba.conf un utilisateur et une base, donc vous pouvez restreindre par ce biais là. Ex :

host    base1    utilisateur1    192.168.1.0/24    md5
host    base2    utilisateur2    192.168.1.0/24    md5
host    all    all    0.0.0.0/0    reject

Edit : Pour n'autoriser que ceux spécifier et non tout le monde, cela vient du fait que par défaut les databases sont autorisées à public. Vous pouvez changer cela comme vous l'avez fait en retirant les droits à public.

Si vous voulez que cela devienne la norme chez vous, vous pouvez le faire sur le template0 qui est utilisé par défaut lors de la création du base de donnée, ce qui changera donc le comportement pour vos prochaines bases.

Dernière modification par rjuju (30/11/2011 17:00:27)

Hors ligne

Pied de page des forums