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 20) 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 répétées de connexion
malveillantes 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.
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.
Lors que vous modifiez cette valeur, pensez également à ajuster max_parallel_workers and max_parallel_workers_per_gather.
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_directories
(string
)
Indique le répertoire pour le(s) socket(s) de domaine Unix sur
lequel le serveur va écouter les connexions des applications
clientes. Plusieurs sockets peuvent être créés en listant plusieurs
répertoires et en les séparant par des virgules. Les espaces blancs
entre les entrées sont ignorés. Entourer un nom de répertoire avec
des guillemets doubles si vous avez besoin d'inclure un espace blanc
ou une virgule dans son nom. Une valeur vide désactive l'utilisation
des sockets de domaine Unix, auquel cas seules les sockets TCP/IP
pourront être utilisées pour se connecter au serveur. La valeur
par défaut est habituellement /tmp
, mais cela
peut se changer au moment de la contruction. Ce paramètre ne peut
être configuré qu'au lancement du serveur.
En plus du fichier socket, qui est nommé
.s.PGSQL.
où
nnnn
nnnn
est le numéro de port du serveur, un
fichier ordinaire nommé
.s.PGSQL.
sera
créé dans chaque répertoire de nnnn
.lockunix_socket_directories
.
Les deux fichiers ne doivent pas être supprimés manuellement.
Ce paramètre n'a pas de sens sur les systèmes qui ignorent complètement
les droits sur les sockets, comme Solaris à partir de la version 10.
Un effet similaire peut être atteint en pointant
unix_socket_directories
vers un répertoire ayant
un droit de recherche limité à l'audience acceptée.
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 des sockets de domaine Unix
(l'utilisateur propriétaire des sockets 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 aux sockets 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 20.
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.
tcp_keepalives_idle
(integer
)
Indique le nombre de secondes d'inactivité avant que TCP envoie un
paquet keepalive au client. 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 socket équivalente 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.
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 après lesquelles un paquet TCP keepalive
qui n'a pas été aquitté par le client doit être retransmis. 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 socket équivalente 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.
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 pouvant être perdus avant
que la connexion au serveur soit considérée comme morte. 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 socket équivalente, 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.
Ce paramètre n'est pas supporté sur Windows et doit donc valoir zéro.
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 18.9 avant de l'utiliser.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
La valeur par défaut est off
.
ssl_ciphers
(string
)
Donne une liste d'algorithmes SSL autorisées à être
utilisés sur des connexions SSL. Voir la page de manuel de
ciphers dans
le paquet OpenSSL pour la syntaxe de ce
paramètre et une liste des valeurs supportées. Seules les connexions
utilisant TLS version 1.2 et antérieures sont impactées. Il n'existe
actuellement pas de paramètre contrôlant le choix des algorithmes
utilisés par les connexions avec TLS version 1.3. La valeur par défaut
est HIGH:MEDIUM:+3DES:!aNULL
. Cette valeur est
généralement raisonnable, sauf si vous avez des besoins spécifiques en
terme de sécurité.
Ce paramètre peut seulement être configuré dans le fichier
postgresql.conf
ou sur la ligne de commande du
serveur.
Voici une explication de la valeur par défaut ;:
HIGH
Algorithmes du groupe HIGH
(par exemple AES,
Camellia, 3DES)
MEDIUM
Algorithmes du groupe MEDIUM
(par exemple RC4,
SEED)
+3DES
L'ordre par défaut dans HIGH
est problématique
car il positionne 3DES avant AES128. Ceci est mauvais parce que
3DES offre moins de sécurité que AES128, et il est aussi bien moins
rapide. +3DES
le réordonne après les algorithmes
des groupes HIGH
et MEDIUM
.
!aNULL
Désactive les algorithmes anonymes qui ne font pas d'authentification. Ces algorithmes sont vulnérables à des attaques de type man-in-the-middle et ne doivent donc pas être utilisés.
Les détails sur les algorithmes varient suivant les versions d'OpenSSL.
Utiliser la commande openssl ciphers -v 'HIGH:MEDIUM:+3DES:!aNULL'
pour voir les détails réels de la version OpenSSL
actuellement installée. Notez que cette liste est filtrée à l'exécution
suivant le type de clé du serveur.
ssl_prefer_server_ciphers
(boolean
)
Précise s'il faut utiliser les préférences du serveur en terme
d'algorithmes, ou celles du client.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
La valeur par défaut est true
.
Les versions plus anciennes de PostgreSQL n'ont pas ce paramètre et utilisent toujours les préférences du client. Ce paramètre a principalement pour but de maintenir une compatibilité ascendante avec ces versions. Utiliser les préférences du serveur est généralement conseillé car il est plus probable que le serveur soit correctement configuré.
ssl_ecdh_curve
(string
)
Indique le nom de la courve à utiliser dans l'échange de clés
ECDH. Elle doit être acceptée par tous les clients
qui se connectent. Il n'est pas nécessaire que la même courbe soit
utilisée par la clé Elliptic Curve.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
La valeur par défaut est prime256v1
.
Noms OpenSSL pour les courbes les plus courantes :
prime256v1
(NIST P-256),
secp384r1
(NIST P-384),
secp521r1
(NIST P-521).
La liste complète des courbes disponibles peut être récupérée avec la
commande openssl ecparam -list_curves
. Toutes ne
sont pas utilisables dans TLS.
ssl_ca_file
(string
)
Indique le nom du fichier contenant l'autorité du certificat serveur SSL
(CA).
Les chemins relatifs sont relatifs par rapport au répertoire de données.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
Par défaut le paramètre est vide, ce qui veut dire qu'il n'y a pas de
fichier d'autorité du certificat chargé, et donc que la vérification du
certificat client n'est pas effectuée.
Dans les précédentes versions de PostgreSQL, le nom de ce fichier était
positionné en dur à root.crt
.
ssl_cert_file
(string
)
Indique le nom du fichier contenant le certificat SSL du serveur.
Les chemins relatifs sont relatifs par rapport au répertoire de données.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
La valeur par défaut est server.crt
.
ssl_crl_file
(string
)
Indique le nom du fichier contenant la liste de révocation de certificat
SSL client (CRL).
Les chemins relatifs sont relatifs par rapport au répertoire de données.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
Par défaut ce paramètre est vide, ce qui veut dire qu'aucune liste de révocation de certificat n'est chargée.
Dans les précédentes versions de PostgreSQL, le nom de ce fichier était
positionné en dur à root.crl
.
ssl_key_file
(string
)
Indique le nom du fichier contenant la clé privée SSL du serveur.
Les chemins relatifs sont relatifs par rapport au répertoire de données.
Ce paramètre peut uniquement être modifié dans le fichier
postgresql.conf
ou indiqué sur la ligne de commande.
La valeur par défaut est server.key
.
password_encryption
(enum
)
Quand un mot de passe est spécifié dansCREATE ROLE ou
ALTER ROLE, ce paramètre détermine l'algorithme à
utiliser pour chiffrer le mot de passe. La valeur par défaut est
md5
, qui a pour effet de stocker le mot de passe comme
un hashage MD5 (on
est également accepté, comme alias
de md5
). Positionner ce paramètre à
scram-sha-256
chiffrera le mot de passe avec
SCRAM-SHA-256. Voir Section 20.3.2 pour plus de détails.
Veuillez noter que des clients plus anciens pourraient ne pas supporter le mécanisme d'authentification SCRAM, et pas conséquent ne fonctionneraient pas avec des mots de passe chiffrés avec SCRAM-SHA-256.
ssl_dh_params_file
(string
)
Indique le nom du fichier contenant les paramètres Diffie-Hellman utilisés
pour la famille DH éphémère des algorithmes SSL. La valeur par défaut est
une chaîne vide, auquel cas les paramètres DH par défaut sont utilisés.
Utiliser des paramètres DH personnalisés réduit l'exposition si un attaquant
réussit à craquer les paramètres DH internes bien connus. Vous pouvez créer
votre propre fichier de paramètre DH avec la commande
openssl dhparam -out dhparams.pem 2048
.
Ce paramètre peut seulement être configuré dans le fichier
postgresql.conf
ou sur la ligne de commande du
serveur.
krb_server_keyfile
(string
)
Configure l'emplacement du fichier contenant la clé secrète du
serveur Kerberos. Voir la Section 20.3.3 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 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.
Cette fonctionnalité, temporaire, sera supprimée lorsqu'une solution complète sera trouvée.