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 Général » création d'une fonction pg_catalog.text » 03/07/2023 10:51:54

laurence
Réponses : 1

Bonjour,

Un fournisseur me demande un compte postgreSQL avec le rôle SUPERUSER, car son application créé les objets ci-dessous :
CREATE FUNCTION pg_catalog.text(integer) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(int4out($1));';
CREATE CAST (integer AS text) WITH FUNCTION pg_catalog.text(integer) AS IMPLICIT;
CREATE FUNCTION pg_catalog.text(numeric) RETURNS text STRICT IMMUTABLE LANGUAGE SQL AS 'SELECT textin(numeric_out($1));';
CREATE CAST (numeric AS text) WITH FUNCTION pg_catalog.text(numeric) AS IMPLICIT;

Je ne comprends pas pourquoi il a besoin de créer des objets dans le schéma pg_catalog, ni à quoi servent ces fonctions.

Est-ce une bonne pratique de réaliser ces opérations ? Ces objets peuvent-ils poser problème en cas de mise à jour de la version de POstgreSQL ?
Y a t'il moyen de les exécuter avec des privilèges moindre que SUPERUSER ? Y a t'il un autre moyen de répondre à leur problématique sans toucher au schéma pg_catalog ?

D'avance merci pour vos réponses.

#3 Général » Problème de jeu de caractères dans le Log de l'instance PostgreSQL » 11/12/2019 09:50:11

laurence
Réponses : 2

Bonjour,

Je remarque un soucis de jeu de caractère dans la log de mont instance postgreSQL (11.5). Elle utilise le jeu de cartactères UTF8. L'utilisateur unix qui démarre cette instance a la variable LANG=fr_FR@euro
Parfois j'obtiens bien des messages avec des accents, parfois non. Par exemple :

"a reçu une demande d'arrêt rapide"
arrêt des connexions suite Ã|  la demande de l'administrateur",,,,,,,,,"pgAdmin 4 - CONN:9109907"
2019-12-10 20:16:25.201 CET,"pgsql","cus_dba",51803,"",5defd4aa.ca5b,4,"idle",2019-12-10 18:23:54 CET,,0,LOG,00000,"déconnexion : durée de la session : 1:52:30.750
utilisateur=pgsql base=cus_dba hÃŽte=hvim0500.cus.fr port=53015",,,,,,,,,"pgAdmin 4 - CONN:9109907"

A priori, le problème de jeu de caractère ne se produit que sur les messages de déconnexion de session ou de kill lors de l'arrêt de l'instance.

Est-ce grave ?

Comment résoudre ce problème.

Merci d'avance.

#4 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 04/04/2019 17:16:15

Bonjour Guillaume et Julien,

Je pense que nous nous comprenons assez bien sur le problème, et le fonctionnement de gssapi.
Du coup, j'ai modifié mon fichier pg_ident.conf en enlevant toutes les ligne pour la map concernée et en ajoutant la ligne suivante :
mamap   0TOTO      0toto

J'obtiens le message d'erreur suivant lorsque j'ouvre ma session en majuscule :
2019-04-04 16:54:29.450 CEST [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<mon_pc> port=62670
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : LOG:  pas de correspondance dans la usermap « mamap » pour l'utilisateur « 0TOTO »
        authentifié en tant que « 0TOTO@MONDOMAINE.FR »
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : FATAL:  authentification GSSAPI échouée pour l'utilisateur « 0TOTO »
2019-04-04 16:54:29.488 CEST [inconnu] siglc 0TOTO : DÉTAIL:  La connexion correspond à la ligne 92 du pg_hba.conf : « host    all             all           192.168.1.1/32         gss include_realm=1 krb_realm=MONDOMAINE.FR map=mamap »

même genre de message avec une connexion en minuscule.

J'en déduis qu'il faut bien mettre le nom de domaine dans le champs SYSTEM-USERNAME. par exemple :
mamap   0TOTO@MONDOMAINE.FR      0toto

Par contre il ne tient absolument pas compte du champ PG-USERNAME. Ce qui rejoint ce que dit Julien dans sa phrase : "Mais le nom du rôle à vérifier n'est pas le nom défini dans le fichier pg_ident.conf (surtoutqu'il peut y en avoir plusieurs) mais celui demandé lors de la connexion".

Il n'y a donc pas de solution (postgresql) à mon problème.

Etes-vous d'accord avec mon analyse ?

Merci par avance.
Laurence.

#5 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 03/04/2019 08:31:22

Merci pour la réponse, mais du coup je n'y comprends plus rien. 
A quoi sert le champ pg-username dans le pg_ident.conf.
Dans ce fichier J'ai bien indiqué que lorsque le compte (kerberos) 0TOTO@MONDOMAINE.FR (en majuscule) se connecte, on le connecte avec le compte postgreSQL 0toto (en minuscule).
Le champ pg-username ne sert donc t-il à rien ?

#6 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 02/04/2019 17:38:44

Justement dans qgis on indique le nom du serveur, de la base de données, du port. Mais on n'indique ni utilisateur, ni mot de passe. C'est le principe de l'authentification intégrée. Ces informations sont reprises de la session Windows. Si on s'est loggué en majuscule, le compte sera en majuscule, si on s'est loggué en minuscule, le compte est en minuscule. Donc pas moyen de transformer le nom du compte en minuscule.

Du coup je m'interroge de l’intérêt du paramètre postgreSQL :krb_caseins_users = on
Pour moi ce paramètre, lorsqu'il est à "on", permet de ne pas tenir compte de la casse de l'utilisateur qui se connecte. Du coup , lorsque l'on utilise l'authentification gsspapi (avec kerberos), j'authorise les comptes en majuscule et en minuscule à venir s'authentifier sur mon instance. Mais à quoi cela sert'il si côté postgreSQL les comptes sont case sensitive ?

Pour ma part, je n'ai jamais réussi à faire fonctionner l'authentification gssapi si ce paramètre est à "off". Même avec un compte en minuscule.

#7 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 02/04/2019 09:52:50

Le message dans la log POstgreSQL est :
2019-04-02 09:47:11.431 CEST [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<monpc> port=54331
2019-04-02 09:47:11.463 CEST [inconnu] siglc 0TOTO : LOG:  connexion autorisée : utilisateur=0TOTO, base de données=siglc
2019-04-02 09:47:11.463 CEST [inconnu] siglc 0TOTO : FATAL:  le rôle « 0TOTO» n'existe pas (i.e en majuscule)

En base il y a un utilisateur 0toto (en minuscule). l'authentification intégrée gssapi fonctionne bien quand je me connecte avec l'utilisateur 0toto au niveau de ma session Windows.
Dès que je me connecte en majuscule côté Windows, j'ai le message ci-dessus. J'ai vraiment l'impression qu'il ne prend pas le nom de l'utilisateur postgreSQL dans le pg_ident.conf.

Contenu du pg_ident.conf :
mamap   0TOTO@MONDOMAIN.FR      0toto
mamap   0toto@MONDOMAINE.FR      0toto

Pour faire mon test, j'utilise le logiciel qgis sur mon pc.

Merci pour votre réponse.

#9 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 29/03/2019 19:08:29

Bonjour,

@gleu, J'ai voulu faire un essai ajoutant laligne suivante dans le pg_ident.conf :
gssmap     0TOTO@MONDOMAINE.FR                  0toto

J'obtiens le message d'erreur suivant : FATAL:  le rôle « 0TOTO» n'existe pas.

Même erreur avec la syntaxe :
gssmap     /^0TOTO@MONDOMAINE\.FR$                  0toto

J'ai beau retourner le problème dans tous les sens, je n'arrive pas à le faire marcher. C'est comme s'il ne prenait pas en compte la colonne 0toto dans le pg_ident.conf.

Est-ce que quelqu'un a une idée ?

Merci par avance.

#11 Re : Sécurité » Problème d'authentification gssapi avec compte en majuscule » 26/03/2019 18:33:44

Bonjour,

Merci pour la réponse. Je créé mes utilisateurs en minuscule, avec des doubles quotes, car certains commencent par des chiffres. Exemple d'ordre SQL utilisé : create user "0toto";
Les authentifications MD5 en minuscule fonctionnent donc bien. Les authentifications MD5 en majuscule ne fonctionnent pas.
J'ai fait le test en créant un utilisateur PostgreSQL en majuscule. L'authentification GSSAPI en majuscule fonctionne avec cet utilisateur. Je ne peux pas doubler tous les utlisateurs postgreSQL en minuscule et en majuscule pour que l'authentification gssapi fonctionne qu'on soit loggué en minuscule ou en majuscule !
N'y aurait t'il pas plutôt une syntaxe dans le fichier pg_ident.conf, qui me permettrait de convertir le nom de l'utilisateur OS en minuscule côté postgreSQL ?
Par exemple :
gssmap     /^(.*)@MONDOMAINE\.FR$                  lower(\1)

#12 Sécurité » Problème d'authentification gssapi avec compte en majuscule » 22/03/2019 14:37:15

laurence
Réponses : 17

Bonjour,

J'ai un serveur PostgreSQL 9.4 sur Redhat 6.
J'ai paramétré l'authentification gssapi sur ce serveur afin de bénéficier de l'authentification intégrée via qgis.
Tout foncitonne parfaitement lorsque l'utlisateur ouvre sa session avec son copte en minuscule.
Lorsqu'il ouvre sa session avec son compte en majuscule, j'obtiens le message d'erreur suivant :
2019-03-22 13:33:01.583 CET [inconnu] [inconnu] [inconnu] : LOG:  connexion reçue : hôte=<monposte> port=60110
2019-03-22 13:33:01.607 CET [inconnu] siglc MATRICULE_UTILISATEUR: LOG:  connexion autorisée : utilisateur=MATRICULE_UTILISATEUR, base de données=bdd
2019-03-22 13:33:01.607 CET [inconnu] siglc MATRICULE_UTILISATEUR: FATAL:  le rôle « MATRICULE_UTILISATEUR » n'existe pas

Voici la configuration mise en place :


postgresql.conf :
# GSSAPI using Kerberos
krb_server_keyfile = '/home/monfic.keytab'
krb_caseins_users = on

pg_hba.conf :
host    all             all           0.0.0.0/0               gss include_realm=1 krb_realm=MONDOMAINE.FR map=gssmap


pg_ident.conf :
gssmap     /^(.*)@MONDOMAINE\.FR$                  \1



Merci d'avance pour votre aide.

Pied de page des forums

Propulsé par FluxBB