PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

18.3. Connexions et authentification

18.3.1. Paramètres de connexion

listen_addresses (string)

Indique les adresses TCP/IP sur lesquelles le serveur écoute les connexions en provenance d'applications clientes. La valeur prend la forme d'une liste de noms d'hôte ou d'adresses IP numériques séparés par des virgules. L'entrée spéciale * correspond à toutes les interfaces IP disponibles. L'enregistrement 0.0.0.0 permet l'écoute sur toutes les adresses IPv4 et :: permet l'écoute sur toutes les adresses IPv6. Si la liste est vide, le serveur n'écoute aucune interface IP, auquel cas seuls les sockets de domaine Unix peuvent être utilisées pour s'y connecter. La valeur par défaut est localhost, ce qui n'autorise que les connexions TCP/IP locales de type « loopback ». Bien que l'authentification client (Chapitre 19, Authentification du client) permet un contrôle très fin sur les accès au serveur, listen_addresses contrôle les interfaces pouvant accepter des tentatives de connexion, ce qui permet d'empêcher des demandes de connexion amlignes sur des interfaces réseau non sécurisées. Ce paramètre ne peut être configuré qu'au lancement du serveur.

port (integer)

Le port TCP sur lequel le serveur écoute ; 5432 par défaut. Le même numéro de port est utilisé pour toutes les adresses IP que le serveur écoute. Ce paramètre ne peut être configuré qu'au lancement du serveur.

max_connections (integer)

Indique le nombre maximum de connexions concurrentes au serveur de base de données. La valeur par défaut typique est de 100 connexions, mais elle peut être moindre si les paramètres du noyau ne le supportent pas (ce qui est déterminé lors de l'initdb). Ce paramètre ne peut être configuré qu'au lancement du serveur.

L'augmentation de ce paramètre peut obliger PostgreSQL™ à réclamer plus de mémoire partagée System V ou de sémaphores que ne le permet la configuration par défaut du système d'exploitation. Voir la Section 17.4.1, « Mémoire partagée et sémaphore » pour plus d'informations sur la façon d'ajuster ces paramètres, si nécessaire.

Lors de l'exécution d'un serveur en attente, vous devez configurer ce paramètre à la même valeur ou à une valeur plus importante que sur le serveur maître. Sinon, des requêtes pourraient ne pas être autorisées sur le serveur en attente.

superuser_reserved_connections (integer)

Indique le nombre de connecteurs (« slots ») réservés aux connexions des superutilisateurs PostgreSQL™. Au plus max_connections connexions peuvent être actives simultanément. Dès que le nombre de connexions simultanément actives atteint max_connections moins superuser_reserved_connections, les nouvelles connexions ne sont plus acceptées que pour les superutilisateurs, et aucune nouvelle connexion de réplication ne sera acceptée.

La valeur par défaut est de trois connexions. La valeur doit être plus petite que la valeur de max_connections. Ce paramètre ne peut être configuré qu'au lancement du serveur.

unix_socket_directory (string)

Indique le répertoire du socket de domaine Unix sur lequel le serveur écoute les connexions des applications client. Par défaut, il s'agit de /tmp mais cela peut être modifié au moment de la construction. Ce paramètre ne peut être configuré qu'au lancement du serveur.

En plus du fichier socket, qui est nommé .s.PGSQL.nnnnnnnn est le numéro de port du serveur, un fichier ordinaire nommé .s.PGSQL.nnnn.lock sera créé dans le répertoire unix_socket_directory. Les deux fichiers ne doivent pas être supprimés manuellement.

Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas de sockets domaine Unix.

unix_socket_group (string)

Configure le groupe propriétaire du socket de domaine Unix (l'utilisateur propriétaire de la socket est toujours l'utilisateur qui lance le serveur). En combinaison avec le paramètre unix_socket_permissions, ceci peut être utilisé comme un mécanisme de contrôle d'accès supplémentaire pour les connexions de domaine Unix. Par défaut, il s'agit d'une chaîne vide, ce qui sélectionne le groupe par défaut de l'utilisateur courant. Ce paramètre ne peut être configuré qu'au lancement du serveur.

Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas de sockets domaine Unix.

unix_socket_permissions (integer)

Configure les droits d'accès au socket de domaine Unix. Ce socket utilise l'ensemble habituel des droits du système de fichiers Unix. Ce paramètre doit être indiqué sous une forme numérique telle qu'acceptée par les appels système chmod et umask (pour utiliser le format octal, ce nombre doit commencer avec un 0 (zéro)).

Les droits par défaut sont 0777, signifiant que tout le monde peut se connecter. Les alternatives raisonnables sont 0770 (utilisateur et groupe uniquement, voir aussi unix_socket_group) et 0700 (utilisateur uniquement) (pour un socket de domaine Unix, seul le droit d'accès en écriture importe ; il n'est donc pas nécessaire de donner ou de révoquer les droits de lecture ou d'exécution).

Ce mécanisme de contrôle d'accès est indépendant de celui décrit dans le Chapitre 19, Authentification du client.

Ce paramètre ne peut être configuré qu'au lancement du serveur.

Ce paramètre n'a aucun intérêt sous Windows car ce système n'a pas de sockets domaine Unix.

bonjour (boolean)

Active la promotion de l'existence du serveur via le protocole Bonjour™. Désactivé par défaut, ce paramètre ne peut être configuré qu'au lancement du serveur.

bonjour_name (string)

Indique le nom du service Bonjour™. Le nom de l'ordinateur est utilisé si ce paramètre est configuré avec une chaîne vide (ce qui est la valeur par défaut). Ce paramètre est ignoré si le serveur n'est pas compilé avec le support Bonjour™. Ce paramètre ne peut être configuré qu'au lancement du serveur.

Ce paramètre n'a pas de sens sur certains systèmes, notamment Solaris depuis la version 10, qui ignore complètement les droits sur les sockets. Il est possible d'arriver au même résultat en faisant pointer unix_socket_directory vers un répertoire ayant des droits limités pour une audience particulière. Ce paramètre est aussi inutile pour Windows qui ne dispose pas des sockets de domaine Unix.

tcp_keepalives_idle (integer)

Indique le nombre de secondes avant l'envoi d'un paquet keepalive sur une connexion qui semble inutilisée. Une valeur de 0 revient à utiliser la valeur système par défaut. Ce paramètre est seulement supporté par les systèmes qui supportent les symboles TCP_KEEPIDLE ou une option équivalente pour la socket et sur Windows ; sur les autres systèmes, ce paramètre doit valoir zéro. Pour les sessions connectées via une socket de domaine Unix, ce paramètre est ignoré et vaut toujours zéro.

[Note]

Note

Sur Windows, une valeur de 0 configurera ce paramètre à deux heures car Windows ne fournit pas un moyen de lire la valeur par défaut du système.

tcp_keepalives_interval (integer)

Indique le nombre de secondes entre chaque envoi d'un paquet keepalives sur une connexion qui semble inutilisée. Une valeur de 0 revient à utiliser la valeur système par défaut. Ce paramètre est seulement supporté par les systèmes qui supportent le symbole TCP_KEEPINTVL ou une option équivalente pour la socket et sur Windows ; sur les autres systèmes, ce paramètre doit valoir zéro. Pour les sessions connectées via une socket de domaine Unix, ce paramètre est ignoré et vaut toujours zéro.

[Note]

Note

Sur Windows, une valeur de 0 configurera ce paramètre à une seconde car Windows ne fournit pas un moyen de lire la valeur par défaut du système.

tcp_keepalives_count (integer)

Indique le nombre de paquets TCP keepalive packets à envoyer sur une connexion qui semble inutilisée. Une valeur de 0 revient à utiliser la valeur système par défaut. Ce paramètre est seulement supporté par les systèmes qui supportent le symbole TCP_KEEPCNT ou une option équivalente pour la socket ; sur les autres systèmes, ce paramètre doit valoir zéro. Pour les sessions connectées via une socket de domaine Unix, ce paramètre est ignoré et vaut toujours zéro.

[Note]

Note

Ce paramètre n'est pas supporté sur Windows et doit donc valoir zéro.

18.3.2. Sécurité et authentification

authentication_timeout (integer)

Temps maximum pour terminer l'authentification du client, en secondes. Si un client n'a pas terminé le protocole d'authentification dans ce délai, le serveur ferme la connexion. Cela protège le serveur des clients bloqués occupant une connexion indéfiniment. La valeur par défaut est d'une minute. Ce paramètre peut être configuré au lancement du serveur et dans le fichier postgresql.conf.

ssl (boolean)

Active les connexions SSL. Lire la Section 17.9, « Connexions tcp/ip sécurisées avec ssl » avant de l'utiliser. Désactivé par défaut. Ce paramètre ne peut être configuré qu'au lancement du serveur. La communication SSL n'est possible qu'avec des connexions TCP/IP.

ssl_ciphers (string)

Indique une liste de chiffrements SSL dont l'utilisation est autorisée sur des connexions sécurisées. Voir la page de manuel openssl pour la liste des chiffrements supportés.

ssl_ca_file (string)

Indique le nom du fichier contenant l'autorité du certificat serveur SSL (CA). Par défaut, ce paramètre est vide, signifiant qu'aucun fichier CA n'est chargé et qu'aucune vérification du certificat client ne sera faite. Dans les précédentes versions de PostgreSQL, le nom de ce fichier était codé en dur (root.crt). Les chemins relatifs sont à considérer à partir du répertoire des données. Ce paramètre ne peut être modifié qu'au démarrage du serveur.

ssl_cert_file (string)

Indique le nom du fichier contenant le certificat SSL du serveur. La valeur par défaut est server.crt. Les chemins relatifs sont à considérer à partir du répertoire des données. Ce paramètre ne peut être modifié qu'au démarrage du serveur.

ssl_crl_file (string)

Indique le nom du fichier contenant la liste de révocation du certificat SSL serveur (CRL). Par défaut, ce paramètre est vide, signifiant qu'aucun fichier CRL n'est chargé. Dans les précédentes versions de PostgreSQL, le nom de ce fichier était codé en dur (root.crl). Les chemins relatifs sont à considérer à partir du répertoire des données. Ce paramètre ne peut être modifié qu'au démarrage du serveur.

ssl_key_file (string)

Indique le nom du fichier contenant la clé privée SSL du serveur. La valeur par défaut estserver.key. Les chemins relatifs sont à considérer à partir du répertoire des données. Ce paramètre ne peut être modifié qu'au démarrage du serveur.

ssl_renegotiation_limit (integer)

Indique la quantité de données pouvant passer sur une connexion SSL avant qu'une renégotiation des clés de session ne prenne place. La renégotiation diminue les chances d'un attaquant de faire de l'analyse du chiffrage lorsque de grandes quantités de trafic peuvent être examinées, mais cela ajoute aussi une grosse pénalité sur les performances. La quantité de trafic envoyé et reçu est utilisé pour vérifier la limite. Si ce paramètre vaut 0, la renégotiation est désactivée. La valeur par défaut est 0.

[Note]

Note

Les bibliothèques SSL d'avant novembre 2009 ne sont pas sécurisées lors de l'utilisation de la renégotiation SSL à cause d'une vulnérabilité dans le protocole SSL. Comme correctif de cette vulnérabilité, certains vendeurs de bibliothèques SSL fournissent des bibliothèques incapables de faire de la renégotiation. Si de telles bibliothèques sont utilisées sur le client ou le serveur, la renégotiation SSL devra être désactivée.

[Avertissement]

Avertissement

À cause de bugs dans l'activation de la renégotiation SSL avec OpenSSL™, configurer une valeur différente de 0 pour ssl_renegotiation_limit a un fort risque d'amener des problèmes comme l'arrêt inattendu de connexions longues.

password_encryption (boolean)

Ce paramètre détermine si un mot de passe, indiqué dans CREATE USER(7) ou ALTER ROLE(7) sans qu'il soit précisé ENCRYPTED ou UNENCRYPTED, doit être chiffré. Actif par défaut (chiffre le mot de passe).

krb_server_keyfile (string)

Configure l'emplacement du fichier contenant la clé secrète du serveur Kerberos. Voir la Section 19.3.5, « Authentification Kerberos » et la Section 19.3.3, « Authentification GSSAPI » pour les détails. Ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande.

krb_srvname (string)

Configure le nom du service Kerberos. Voir la Section 19.3.5, « Authentification Kerberos » pour les détails. Ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande.

krb_caseins_users (boolean)

Indique si les noms des utilisateurs Kerberos et GSSAPI doivent être traités en respectant la casse. Désactivé par défaut (insensible à la casse, valeur off), Ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande.

db_user_namespace (boolean)

Active les noms d'utilisateur par base de données. Désactivé par défaut, ce paramètre ne peut être configuré que dans le fichier postgresql.conf ou indiqué sur la ligne de commande.

Si ce paramètre est activé, les utilisateurs doivent être créés sous la forme nomutilisateur@nom_base. Quand nomutilisateur est passé par un client se connectant, @ et le nom de la base de données sont ajoutés au nom de l'utilisateur et ce nom d'utilisateur spécifique à la base est recherché par le serveur. Lorsque des utilisateurs dont le nom contient un @ sont créés dans l'environnement SQL, ce nom doit être placé entre guillemets.

db_user_namespace permet aux représentations des noms d'utilisateurs du client et du serveur de différer. Les vérifications sont toujours faites avec les noms d'utilisateurs du serveur, ce qui fait que les méthodes d'authentification doivent être configurées pour le nom d'utilisateur du serveur, pas pour celui du client. Comme md5 utilise le nom d'utilisateur comme sel à la fois sur le client et le serveur, md5 ne peut pas être utilisé conjointement avec db_user_namespace.

Ce paramètre activé, il reste possible de créer des utilisateurs globaux ordinaires. Il suffit pour cela d'ajouter @ au nom du client, e.g. joe@. Le @ est supprimé avant que le serveur ne recherche ce nom.

[Note]

Note

Cette fonctionnalité, temporaire, sera supprimée lorsqu'une solution complète sera trouvée.