Aller au contenu principal

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.mode sur le mode SSL de votre choix parmi disable, allow, prefer, require, verify-ca et verify-full
  • Pour Redis, définissez redis.tls.requireServerCert sur 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
attention

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