Configurer TLS
Installation via 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 de Certificate Authority 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 hostname du serveur demandé correspond à celui du certificat.
- Custom certificate authority : autorité de certification personnalisée à utiliser pour authentifier l'identité du serveur PostgreSQL.
- Client authentication required : le serveur PostgreSQL est configuré pour authentifier un client.
- Clé TLS du client PostgreSQL.
- Certificat TLS du client PostgreSQL.
Pour désactiver la configuration TLS, vous devriez d'abord définir « Postgres TLS mode » sur Allow dans la console d'administration et déployer la configuration. Vous pouvez ensuite désactiver TLS sur le serveur PostgreSQL. Enfin, désactivez la configuration TLS dans la console d'administration.
Redis
Pour configurer TLS pour Redis, vous disposez des options de configuration suivantes :
- Require Redis server authentication : force l'application à exiger que le serveur Redis s'authentifie avec un certificat valide. En cochant cette option, vous pouvez fournir une autorité de certification personnalisée pour valider le certificat du serveur Redis.
- Client authentication required : si le serveur Redis est configuré pour exiger
une authentification client, vous devez cocher cette case et fournir :
- une clé TLS,
- un certificat TLS.
Pour les recommandations de scaling, consultez la documentation des prérequis matériels.
Installation via Helm
Avec les installations Helm, plutôt que d'être définis dans la console, les paramètres doivent être placés dans un fichier YAML servi à l'installation. Il existe 2 méthodes pour gérer les certificats, mais dans les deux cas :
- Pour PostgreSQL, définissez
postgresql.tls.modeau mode SSL de votre choix parmidisable,allow,prefer,require,verify-caetverify-full - Pour Redis, définissez
redis.tls.requireServerCertà true si vous souhaitez requérir un contrôle du certificat du serveur Redis.
Certificats dans un secret
C'est 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 PostgreSQL et Redis étaient référencés directement dans (postgresql|redis).existingSecret en spécifiant des 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 des clés dans (postgresql|redis).tls.existingSecretKeys.(crt|key|caCrt).
Ce changement permet l'utilisation de secrets dédiés à 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 inline
Ajoutez les certificats inline 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-----