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