Aller au contenu

Prérequis

Machine

OS

Le cluster PostgreSQL fourni par les appliance repose sur un système d'exploitation Debian 12 (bookworm) 64 bits.

CPU

Il est recommandé d'allouer 4 cœurs CPU par nœud du cluster PosgreSQL.

RAM

Il est recommandé d'allouer 4 Go de RAM par nœud du cluster PostgreSQL.

Disque

L'appliance virtuelle est livrée avec un disque virtuel de 60Go.

Réseau

Un cluster PostgreSQL aura besoin de 4 adresses IP :

  • 1 adresse IP réelle par nœud PostgreSQL
  • 1 adresse IP virtuelle pour le cluster PostgreSQL

Attention !

Les adresses IP réelles et virtuelles des nœuds du cluster PostgreSQL doivent toutes appartenir à un même sous-réseau.

Les nœuds du cluster PostgreSQL sont habituellement placés dans le LAN pour être accédés par cyberelements.io ou cyberelements Cleanroom par des Edges Gateways.

Pour mieux identifier les différentes adresses des machines, elles seront nommées de la ma nière suivante dans la documentation :

Nom de l'adresse IP Signification
RIP_PSQL_1 Adresse IP réelle du nœud PostgreSQL n°1.
RIP_PSQL_2 Adresse IP réelle du nœud PostgreSQL n°2.
RIP_PSQL_3 Adresse IP réelle du nœud PostgreSQL n°3.
VIP_PSQL Adresse IP virtuelle du cluster PostgreSQL.
Source Destinataire Port destinataire Commentaires
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
Dépôts Debian TCP 80 Nécessaire pour l'installation des dépendances de cyberelements Cleanroom et du maintien à jour du système. La documentation et les appliances virtuelles utilisent ftp.fr.debian.org et security.debian.org.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
Serveur DNS UDP 53 Nécessaire pour la résolution DNS. Facultatif si un serveur DNS est disponible dans le LAN ou la DMZ.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
Serveur de temps NTP UDP 123 Facultatif si le serveur doit synchroniser son horloge avec un serveur présent dans le LAN ou la DMZ. Par défaut ce sont les pool Debian qui sont exploités : 0.debian.pool.ntp.org, 1.debian.pool.ntp.org, 2.debian.pool.ntp.org et 3.debian.pool.ntp.org.
Source Destinataire Port destinataire Commentaires
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 2379 Port utilisé pour le fonctionnement du cluster et en écoute par ETCD.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 2380 Port utilisé pour le fonctionnement du cluster et en écoute par ETCD.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 5432 Port de connexion SQL porté par PostgreSQL (port par défaut pouvant être modifié).
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 8008 Port utilisé pour le fonctionnement du cluster et en écoute par Patroni.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
Serveur DNS UDP 53 Nécessaire pour la résolution DNS. Facultatif si un serveur DNS est disponible dans le WAN ou la DMZ.
RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
Serveur de temps NTP UDP 123 Facultatif si le serveur doit synchroniser son horloge avec un serveur présent dans le WAN ou la DMZ. Par défaut ce sont les pool Debian qui sont exploités : 0.debian.pool.ntp.org, 1.debian.pool.ntp.org, 2.debian.pool.ntp.org et 3.debian.pool.ntp.org.
Adresses IP ou plage réseau des postes d'administration RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 22 Port d'administration distant SSH.
Adresses IP ou plage réseau des postes d'administration RIP_PSQL_1
RIP_PSQL_2
RIP_PSQL_3
TCP 5432 Port de connexion SQL porté par PostgreSQL (port par défaut pouvant être modifié).
Adresses IP ou plage réseau des postes d'administration VIP_PSQL TCP 5432 Port de connexion SQL porté par PostgreSQL (port par défaut pouvant être modifié).
Adresses IP des Edges Gateways devant accéder au cluster PostgreSQL VIP_PSQL TCP 5432 Port de connexion SQL porté par PostgreSQL (port par défaut pouvant être modifié).

Certificats

Le cluster PostgreSQL chiffre les flux de communications entre ses nœuds pour le fonctionnement du cluster mais aussi pour la connexion SQL. Ce chiffrement est un chiffrement TLS qui nécessite donc l'utilisation de certificats.
Les informations données ci-dessous récapitulent le paramétrage et options nécessaires aux certificats du cluster PostgreSQL.

Contrainte de sécurité des certificats

Peu importe le certificat utilisé, veillez à ce qu'il respecte le niveau de sécurité 2 d'OpenSSL qui se résume notamment à :

  • Le certificat et les certificats de ses Autorités de certification doivent avoir une clef privée d'un minimum de 2048 bits avec les chiffrements RSA, DSA et DH ; pour les clefs à courbe elliptique (ECC), elles doivent être d'un minimum de 224 bits.
  • La signature du certificat ne doit pas être en MD5 ou SHA-1 (SHA-512 à privilégier).

Chacun des nœuds PostgreSQL utiliseront un seul certificat mais devront aussi importer le certificat de l'Autorité de Certification (AC) racine.
L'AC racine est attendu au format crt encodé en base64.

Le certificat des nœuds PostgreSQL devra respecter le paramétrage suivant :

  • La fonction de hachage utilisée pour la signature doit faire partie la famille SHA-2, nous recommandons SHA-512.
  • Le certificat et les certificats de ses autorités de certification doivent avoir une clef privée d'un minimum de 2048 bits avec les chiffrements RSA, DSA et DH ; pour les clefs à courbe elliptique (ECC), elles doivent être d'un minimum de 224 bits. Nous recommandons une taille de 4096 bits pour RSA et la courbe secp384r1 ECDSA d'une taille de 384 bits.
  • L'attribut Common Name doit avoir pour valeur le nom court du serveur (l'indication du FQDN provoquera des défaillances).
  • L'attribut Key Usage doit avoir les valeurs critical, digitalSignature et keyEncipherment.
  • L'attribut Extended Key Usage doit avoir les valeurs serverAuth et clientAuth.
  • L'attribut Subject Alternative Name doit être défini pour couvrir :
    • Le nom du nœud PostgreSQL associé à l'adresse IP réelle
    • Le nom du cluster PostgreSQL associé à l'adresse IP virtuelle
    • L'adresse IP réelle du nœud PostgreSQL
    • L'adresse IP virtuelle du cluster PostgreSQL

Format du certificat attendu : P12.