Aller au contenu principal

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.mode au mode SSL de votre choix parmi disable, allow, prefer, require, verify-ca et verify-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
attention

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-----