Configurer TLS
Installation basée sur KOTS
PostgreSQL
Pour configurer TLS pour un PostgreSQL externe, vous disposez des options de configuration suivantes :
- Mode TLS PostgreSQL : le serveur PostgreSQL prend en charge les modes TLS suivants :
- Allow : essaie d'abord une connexion SSL ; si elle échoue, essaie une connexion non-SSL.
- Require : essaie uniquement une connexion SSL. Si un fichier d'autorité de certification racine est présent, vérifie le certificat de la même manière que si Verify Certificate Authority avait été spécifié.
- Verify Certificate Authority : essaie uniquement une connexion SSL, et vérifie que le certificat du serveur est émis par une autorité de certification (CA) de confiance.
- Verify Certificate Authority and Hostname : essaie uniquement une connexion SSL, et vérifie que le certificat du serveur est émis par une CA de confiance et que le nom d'hôte du serveur demandé correspond à celui du certificat.
- Autorité de certification personnalisée : autorité de certification personnalisée à utiliser pour authentifier l'identité du serveur PostgreSQL.
- Authentification du client requise : serveur PostgreSQL configuré pour authentifier un client.
- Clé TLS du client PostgreSQL.
- Certificat TLS du client PostgreSQL.
Pour désactiver la configuration TLS, vous devez d'abord définir « Postgres TLS mode » sur Allow dans l'Admin Console et déployer la configuration. Vous pouvez ensuite désactiver TLS sur le serveur PostgreSQL. Enfin, désactivez la configuration TLS dans l'Admin Console.
Redis
Pour configurer TLS pour Redis, vous disposez des options de configuration suivantes :
- Exiger l'authentification du serveur Redis : force l'application à exiger que le serveur Redis s'authentifie avec un certificat valide. En cochant ce paramètre, vous pouvez fournir une autorité de certification personnalisée pour valider le certificat du serveur Redis.
- Authentification du client requise : si le serveur Redis est configuré pour exiger
l'authentification du client, vous devez cocher cette case et fournir :
- une clé TLS,
- un certificat TLS.
Pour les recommandations de dimensionnement, reportez-vous à la documentation sur les prérequis matériels.
Installation basée sur Helm
Avec les installations basées sur Helm, au lieu de définir les paramètres dans la console, ceux-ci doivent être placés dans un fichier YAML fourni lors de l'installation. Il existe 2 méthodes pour gérer les certificats, mais dans les deux cas :
- Pour PostgreSQL, définissez
postgresql.tls.modesur le mode SSL de votre choix parmidisable,allow,prefer,require,verify-caetverify-full - Pour Redis, définissez
redis.tls.requireServerCertsur true si vous souhaitez exiger une vérification du certificat du serveur Redis.
Certificats sous forme de secret
Il s'agit de la méthode recommandée.
- Créez un secret Kubernetes contenant votre autorité de certification personnalisée, votre certificat TLS et votre clé.
kubectl create secret generic gitguardian-(postgresql|redis)-tls-secret \
--from-file client.crt=/path/to/pg-tls-cert \
--from-file client.key=/path/to/pg-tls-key \
--from-file ca.crt=/path/to/ca-cert
Auparavant, les secrets TLS de PostgreSQL et Redis étaient référencés directement dans (postgresql|redis).existingSecret en spécifiant les clés dans (postgresql|redis).existingSecretKeys.tls.(crt|key|caCrt), ils doivent désormais être référencés dans (postgresql|redis).tls.existingSecret en spécifiant les clés dans (postgresql|redis).tls.existingSecretKeys.(crt|key|caCrt).
Ce changement permet l'utilisation de secrets dédiés au TLS.
- Référencez ce secret dans le fichier YAML sous
(postgresql|redis).tls.existingSecret - Spécifiez les clés utilisées dans le secret sous
(postgresql|redis).tls.existingSecretKeys.(crt|key|caCrt)
Le fichier devrait ressembler à cet extrait :
postgresql:
tls:
# Possible values: disable, allow, prefer, require, verify-ca, verify-full
mode: require
existingSecret: gitguardian-postgresql-tls-secret
existingSecretKeys:
crt: client.crt
key: client.key
caCrt: ca.crt
redis:
main:
tls:
requireServerCert: true
existingSecret: gitguardian-redis-tls-secret
existingSecretKeys:
crt: client.crt
key: client.key
caCrt: ca.crt
Certificats en ligne
Ajoutez les certificats en ligne sous (postgresql|redis).tls.(crt|key|caCrt)
Le fichier devrait ressembler à cet extrait :
postgresql:
tls:
# Possible values: disable, allow, prefer, require, verify-ca, verify-full
mode: require
crt: |
-----BEGIN CERTIFICATE-----
My certificate
-----END CERTIFICATE-----
key: |
-----BEGIN RSA PRIVATE KEY-----
My key
-----END RSA PRIVATE KEY-----
caCrt: |
-----BEGIN CERTIFICATE-----
My CA certificate
-----END CERTIFICATE-----
redis:
main:
tls:
requireServerCert: true
crt: |
-----BEGIN CERTIFICATE-----
My certificate
-----END CERTIFICATE-----
key: |
-----BEGIN RSA PRIVATE KEY-----
My key
-----END RSA PRIVATE KEY-----
caCrt: |
-----BEGIN CERTIFICATE-----
My CA certificate
-----END CERTIFICATE-----