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_1RIP_PSQL_2RIP_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_1RIP_PSQL_2RIP_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_1RIP_PSQL_2RIP_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_1RIP_PSQL_2RIP_PSQL_3 |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
TCP 2379 | Port utilisé pour le fonctionnement du cluster et en écoute par ETCD. |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
TCP 2380 | Port utilisé pour le fonctionnement du cluster et en écoute par ETCD. |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
TCP 5432 | Port de connexion SQL porté par PostgreSQL (port par défaut pouvant être modifié). |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
RIP_PSQL_1RIP_PSQL_2RIP_PSQL_3 |
TCP 8008 | Port utilisé pour le fonctionnement du cluster et en écoute par Patroni. |
RIP_PSQL_1RIP_PSQL_2RIP_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_1RIP_PSQL_2RIP_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_1RIP_PSQL_2RIP_PSQL_3 |
TCP 22 | Port d'administration distant SSH. |
| Adresses IP ou plage réseau des postes d'administration | RIP_PSQL_1RIP_PSQL_2RIP_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 Namedoit avoir pour valeur le nom court du serveur (l'indication du FQDN provoquera des défaillances). - L'attribut
Key Usagedoit avoir les valeurscritical,digitalSignatureetkeyEncipherment. - L'attribut
Extended Key Usagedoit avoir les valeursserverAuthetclientAuth. - L'attribut
Subject Alternative Namedoit ê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.