Bonnes pratiques lors de l’activation du chiffrement en transit - Amazon ElastiCache pour Redis

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Bonnes pratiques lors de l’activation du chiffrement en transit

Avant d'activer le chiffrement en transit : veillez à gérer correctement les enregistrements DNS

Note

Nous modifions et supprimons les anciens points de terminaison au cours de ce processus. Une mauvaise utilisation des points de terminaison peut amener le client Redis à utiliser des points de terminaison obsolètes et supprimés, ce qui l'empêche de se connecter au cluster.

Pendant la migration du cluster d'un protocole non compatible avec TLS vers un protocole TLS préféré, les anciens enregistrements DNS par nœud sont conservés et les nouveaux enregistrements DNS par nœud sont générés dans un format différent. Les clusters compatibles avec TLS utilisent un format d'enregistrement DNS différent de celui des clusters non compatibles avec TLS. ElastiCache conserve les deux types d'enregistrement DNS lorsqu'un cluster est configuré en mode chiffrement : mode Préféré pour que les applications et les autres clients Redis puissent passer de l'un à l'autre. Les modifications suivantes sont apportées aux enregistrements DNS au cours du processus de migration TLS :

Description des modifications apportées aux enregistrements DNS lors de l'activation du chiffrement en transit

Pour les clusters CME

Lorsqu'un cluster est réglé sur « mode de chiffrement en transit : préféré » :

  • Les points de terminaison d'origine du cluster pour les clusters non compatibles avec TLS restent actifs. Il n'y a aucun temps d'arrêt lorsque le cluster est reconfiguré du mode de chiffrement TLS « sans » au mode « préféré ».

  • De nouveaux points de terminaison TLS Redis sont générés lorsque le cluster est réglé sur le mode TLS préféré. Ces nouveaux points de terminaison adoptent les mêmes adresses IP que les anciens (non TLS).

  • Le nouveau point de terminaison de configuration TLS Redis est exposé dans la console ElastiCache et dans la réponse à l'API describe-replication-group.

Lorsqu'un cluster est réglé sur « mode de chiffrement en transit : obligatoire » :

  • Les anciens points de terminaison non compatibles avec le protocole TLS sont supprimés. Les points de terminaison de cluster TLS ne sont pas interrompus.

  • Vous pouvez récupérer un nouveau cluster-configuration-endpoint depuis la console ElastiCache ou depuis l'API describe-replication-group.

Pour les clusters CMD avec basculement automatique activé ou désactivé

Lorsqu'un groupe de réplication est réglé sur « mode de chiffrement en transit : préféré » :

  • Le point de terminaison principal d'origine et le point de terminaison du lecteur pour un cluster non compatible avec TLS restent actifs.

  • De nouveaux points de terminaison principaux et du lecteur TLS sont générés lorsque le cluster est réglé sur le mode TLS Preferred. Ces nouveaux points de terminaison adoptent la ou les mêmes adresses IP que les anciens (non TLS).

  • Les nouveaux points de terminaison principaux et du lecteur sont exposés dans la console ElastiCache et dans la réponse à l'API describe-replication-group.

Lorsqu'un groupe de réplication est réglé sur « mode de chiffrement en transit : obligatoire » :

  • Le point de terminaison principal d'origine et le point de terminaison du lecteur pour un cluster non compatible avec TLS restent actifs.

  • Les anciens points de terminaison principaux et du lecteur non compatibles avec TLS sont supprimés. Les points de terminaison de cluster TLS ne sont pas interrompus.

  • Vous pouvez récupérer de nouveaux points de terminaison principaux et du lecteur depuis la console ElastiCache ou depuis l'API describe-replication-group.

L'utilisation suggérée des enregistrements DNS

Pour les clusters CME

  • Utilisez le point de terminaison de configuration du cluster plutôt que les enregistrements DNS par nœud dans le code de votre application. L'utilisation directe de noms DNS par nœud n'est pas recommandée car ils peuvent changer lors de l'ajout ou de la suppression de partitions.

  • Ne codez pas en dur le point de terminaison de configuration du cluster dans votre application car il va changer au cours de ce processus.

  • Il est déconseillé de coder en dur le point de terminaison de configuration du cluster dans votre application car il peut être modifié au cours de ce processus. Une fois le chiffrement en transit terminé, interrogez le point de terminaison de configuration du cluster à l'aide de l'API describe-replication-group (comme indiqué ci-dessus (en gras)) et utilisez le DNS que vous obtenez en réponse à partir de ce moment.

Pour les clusters CMD avec basculement automatique activé

  • Utilisez le point de terminaison principal et le point de terminaison du lecteur plutôt que les noms DNS par nœud dans le code de votre application, car les anciens noms DNS par nœud sont supprimés et de nouveaux sont générés lors de la migration du cluster d'un protocole non compatible avec TLS vers TLS préféré. L'utilisation directe de noms DNS par nœud n'est pas recommandée si vous choisissez d'ajouter des réplicas à votre cluster à l'avenir. De plus, lorsque le basculement automatique est activé, les rôles du cluster principal et des réplicas sont modifiés automatiquement par le service ElastiCache. Il est suggéré d'utiliser le point de terminaison principal et le point de terminaison du lecteur pour vous aider à suivre ces modifications. Enfin, l'utilisation du point de terminaison du lecteur vous permet de répartir vos lectures provenant des réplicas de manière égale entre les réplicas du cluster.

  • Il est déconseillé de coder en dur le point de terminaison principal et le point de terminaison du lecteur dans votre application, car cela peut être modifié au cours du processus de migration TLS. Une fois la migration vers TLS préféré terminée, interrogez le point de terminaison principal et le point de terminaison du lecteur à l'aide de l'API describe-replication-group et utilisez le DNS que vous obtenez en réponse à partir de ce moment. De cette façon, vous pouvez suivre l'évolution des points de terminaison de manière dynamique.

Pour les clusters CMD avec basculement automatique désactivé

  • Utilisez le point de terminaison principal et le point de terminaison du lecteur plutôt que les noms DNS par nœud dans le code de votre application. Lorsque le basculement automatique est désactivé, vous pouvez effectuer vous-même la mise à l'échelle, l'application de correctifs, le basculement et les autres procédures qui sont gérées automatiquement par le service ElastiCache lorsque le basculement automatique est activé. Vous pouvez ainsi plus facilement effectuer un suivi manuel des différents points de terminaison. Puisque les anciens noms DNS par nœud sont supprimés et que de nouveaux sont générés lors de la migration du cluster du mode non compatible avec TLS vers TLS préféré, n'utilisez pas directement les noms DNS par nœud. Cela est obligatoire pour que les clients puissent se connecter au cluster pendant la migration vers TLS. Vous bénéficiez également de la répartition uniforme des lectures entre les réplicas lorsque vous utilisez le point de terminaison du lecteur et du suivi des enregistrements DNS lors de l'ajout ou de la suppression de réplicas dans le cluster.

  • Il est déconseillé de coder en dur le point de terminaison de configuration du cluster dans votre application car il peut être modifié au cours du processus de migration TLS.

Pendant le chiffrement en transit : faites attention à la fin du processus de migration

Le passage au mode de chiffrement en transit n'est pas immédiat et peut prendre un certain temps. Cela est particulièrement vrai pour les grands clusters. Ce n'est que lorsque le cluster termine la migration vers TLS préféré qu'il est en mesure d'accepter et de gérer à la fois les connexions TCP et TLS. Par conséquent, vous ne devez pas créer de clients qui essaient d'établir des connexions TLS avec le cluster tant que le chiffrement en transit n'est pas terminé.

Il existe plusieurs manières d'être averti lorsque le chiffrement en transit est terminé avec succès ou a échoué : (non illustré dans l'exemple de code ci-dessus) :

  • Utilisation du service SNS pour recevoir une notification lorsque le chiffrement est terminé

  • Utilisation de l'API describe-events qui émet un événement lorsque le chiffrement est terminé

  • Affichage d'un message dans la console ElastiCache indiquant que le chiffrement est terminé

Vous pouvez également implémenter une logique dans votre application pour savoir si le chiffrement est terminé. Dans l'exemple ci-dessus, nous avons vu plusieurs manières de nous assurer que le cluster termine la migration :

  • Attendre le début du processus de migration (le statut du cluster passe à « en cours de modification ») et attendre que la modification soit terminée (le statut du cluster redevient « disponible »)

  • Affirmer que le cluster a transit_encryption_enabled défini sur True en interrogeant l'API describe-replication-group.

Après avoir activé le chiffrement en transit : veillez à ce que les clients que vous utilisez soient correctement configurés

Lorsque le cluster est en mode TLS préféré, votre application doit ouvrir des connexions TLS vers le cluster et utiliser uniquement ces connexions. Ainsi, votre application ne connaît pas d'interruption lors de l'activation du chiffrement en transit. Vous pouvez vous assurer qu'il n'existe pas de connexions TCP plus claires au moteur Redis à l'aide de la commande Redis info dans la section SSL.

# SSL ssl_enabled:yes ssl_current_certificate_not_before_date:Mar 20 23:27:07 2017 GMT ssl_current_certificate_not_after_date:Feb 24 23:27:07 2117 GMT ssl_current_certificate_serial:D8C7DEA91E684163 tls_mode_connected_tcp_clients:0 (should be zero) tls_mode_connected_tls_clients:100