Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
alors question toute bête. Comment gérer le rôle postgres? est il encore vraiment nécessaire si je supprime la db 'postgres'?
Je veux éviter à ce rôle par défaut qui permet de se connecter et avoir accès aux bdd.
Hors ligne
Le rôle postgres n'est pas plus nécessaire que la base de données postgres. Attention cependant, si vous supprimez le role postgres et que vous n'avez pas d'autre rôle super utilisateur, cela va être compliqué à réparer.
La base postgres quand a elle est uniquement là pour simplifier l'utilisation des outils clients, qui ont un nom de base à utiliser par défaut. On peut faire sans, mais cela nécessite de spécifier un nom de base de maintenance à chaque fois, ce qui peut être éreintant.
Pour en revenir à votre question initiale, le rôle postgres ne permet pas "de se connecter et avoir avec aux bases". Si vous avez un problème de ce côté là, il faut le régler du côté de l'authentification, c'est-à-dire le pg_hba.conf.
Julien.
https://rjuju.github.io/
Hors ligne
ok merci de la réponse,
je comprend l'idée de restriction des adresses ip avec pg_hba.conf.
Seulement, si j'autorise une adresse ip, je fournie à l'utilisateur son user et password mais si il s'y connait un peu, il peut se connecter en tant que user:postgres et password:postgres .
A moins de changer le password du user postgres?
Je veux juste connaitre les bonne pratiques.
merci d'avance
Hors ligne
Je ne suis pas certain de comprendre votre question. Si le mot de passe de votre superutilisateur "postgres" est "postgres", alors oui clairement ce n'est pas une bonne pratique, et non filtrer les IP pouvant se connecter n'est pas la solution, mais cela vaut pour n'importe quel outil ayant une authentification.
Vous devriez commencer par https://docs.postgresql.fr/13/client-au … ation.html pour avoir plus d'information sur la gestion de l'authentification sur postgres.
Julien.
https://rjuju.github.io/
Hors ligne
merci,
voici une config auquel j'ai pensé
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all postgres ::1/128 reject
host all all ::1/128 scram-sha-256
l'idée est de bloquer l'utilisateur postgres uniquement sur une connexion distante.
Dernière modification par Rizcola62 (23/03/2021 22:24:55)
Hors ligne
Je ne suis pas certain de comprendre. Cette configuration n'autorise aucune connexion distante, et pour postgres ne rejette que les connexion locales en ipv6.
Julien.
https://rjuju.github.io/
Hors ligne
c'est parce que ma base de donnée est sur un NAS.
# "local" is for Unix domain socket connections only
local all all scram-sha-256
# IPv4 local connections:
host all postgres 127.0.0.1/32 reject
host all all 127.0.0.1/32 scram-sha-256
# IPv6 local connections:
host all postgres ::1/128 reject
host all all ::1/128 scram-sha-256
désolé de ne pas être très claire.
si j'ai instauré une règle pour ipv6 je dois la mettre pour ipv4?
Hors ligne
Quel problème cherchez-vous à régler exactement, ou quelle configuration voulez-vous avoir ? Pourquoi vouloir empêcher l'utilisateur postgres de se connecter localement ? Voulez-vous vous connecter depuis un client distant ou depuis un service hébergé sur votre nas ?
Julien.
https://rjuju.github.io/
Hors ligne
sur mon NAS, j'utilise docker avec une sauvegarde automatique via cron schedule qui utilise l'utilisateur postgres.
je voudrais empêcher un client du réseau de remonter au serveur en utilisant l'utilisateur postgres.
les utilisateur utilise QGIS.
C'est pourquoi mon intention de rejeter toutes tentatives via l'utilisateur postgres.
ce rôle postgres se révèlerait être exclusivement dédié à une intervention en local sur le serveur.
j'espère que c'est un peu plus claire.
Hors ligne
C'est pourquoi mon intention de rejeter toutes tentatives via l'utilisateur postgres.
Quand il y a 127.0.0.1/32 dans le masque réseau, ça ne rejette les connexions que d'une seule IP: 127.0.0.1.
Et comme c'est une IP locale, c'est les connexions de la machine vers elle-même, donc pas les connexions du réseau au sens où on l'entend souvent, c'est-à-dire venant d'autres machines.
Pour rejeter toutes les connexions du réseau avec l'utilisateur postgres, on peut mettre:
host all postgres 0.0.0.0/0 reject
Il faut aussi savoir que les règles sont interprétées dans l'ordre, comme si c'était une cascade de IF...THEN...ELSIF
c.a.d IF règle1 .. THEN méthode de la règle1 ELSE IF règle 2 THEN. méthode de la règle 2 ELSEIF règle 3 THEN méthode de la règle 3... etc...
Donc si on a deux règles dans cet ordre là:
host all postgres 127.0.0.1/32 scram-sha-256
host all postgres 0.0.0.0/0 reject
elles ne sont pas incompatibles, elles se complètent. Ca dit que si postgres se connecte via l'IP localhost, c'est OK (moyennant fourniture du bon mot de passe quand même), mais que toute autre origine de connexion est rejetée.
Si le serveur utilise aussi IPv6, alors il faut répéter les règles avec les équivalents IPv6 parce que les masques réseau en colonne 4 n'ont pas la même syntaxe.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Merci beaucoup pour votre aide.
Hors ligne
Pages : 1