Cifrado en tránsito (TLS) de ElastiCache
Para ayudar a proteger los datos, Amazon ElastiCache y Amazon EC2 disponen de medidas que impiden el acceso no autorizado a los datos del servidor. Al contar con una funcionalidad de cifrado en tránsito, ElastiCache brinda una herramienta que puede utilizar para ayudar a proteger los datos cuando se mueven de una ubicación a otra.
Todas las cachés de Valkey o Redis OSS sin servidor tienen habilitado el cifrado en tránsito. En los clústeres basados en nodos, puede habilitar el cifrado en tránsito en un grupo de replicación estableciendo el parámetro TransitEncryptionEnabled en true (CLI: --transit-encryption-enabled) cuando cree el grupo de replicación. Puede crear el grupo de reproducción a través de la Consola de administración de AWS, la AWS CLI o la API de ElastiCache.
Todas las cachés sin servidor tienen activado el cifrado en tránsito. Para los clústeres basados en nodos, puede habilitar el cifrado en tránsito en un clúster configurando el parámetro TransitEncryptionEnabled en true (CLI: --transit-encryption-enabled) al crear el clúster mediante la operación CreateCacheCluster (CLI: create-cache-cluster).
Temas
Información general sobre el cifrado en tránsito
El cifrado en tránsito de Amazon ElastiCache es una característica que permite reforzar la seguridad de los datos en sus momentos más vulnerables: cuando se trasladan de una ubicación a otra. Como se requiere cierto procesamiento para cifrar y descifrar los datos en los puntos de enlace, habilitar el cifrado en tránsito puede afectar al rendimiento. Debe comparar los datos con y sin cifrado en tránsito para determinar el impacto en el rendimiento de los casos de uso.
El cifrado en tránsito de ElastiCache implementa las siguientes características:
-
Conexiones de cliente cifradas: las conexiones de cliente a los nodos de caché están cifradas con TLS.
-
Conexiones de servidor cifradas: los datos que se mueven entre los nodos de un clúster están cifrados.
-
Autenticación de servidores: los clientes pueden autenticar que se encuentran conectados al servidor correcto.
-
Autenticación de clientes: con la característica AUTH de Valkey o Redis OSS, el servidor puede autenticar a los clientes.
Condiciones del cifrado en tránsito (Valkey y Redis OSS)
Cuando planee la implementación de un clúster basado en nodos, debe tener en cuenta las siguientes limitaciones sobre el cifrado en tránsito de Amazon ElastiCache:
-
El cifrado en tránsito es compatible con grupos de replicación que ejecuten Valkey 7.2 y versiones posteriores, y Redis OSS versiones 3.2.6, 4.0.10 y posteriores.
-
Para un clúster existente, la modificación de la configuración del cifrado en tránsito es compatible con los grupos de replicación que ejecutan Valkey 7.2 y versiones posteriores, y Redis OSS versión 7 y posteriores.
-
El cifrado en tránsito solo es compatible con los grupos de reproducción que se ejecutan en una Amazon VPC.
-
El cifrado en tránsito no es compatible con los grupos de replicación que ejecutan los siguientes tipos de nodos: M1, M2.
Para obtener más información, consulte Tipos de nodos compatibles.
-
El cifrado en tránsito se habilita estableciendo explícitamente el parámetro
TransitEncryptionEnabledentrue. -
El cliente de almacenamiento en caché debe ser compatible con la conectividad TLS y esta debe estar habilitada en la configuración del cliente.
-
A partir del 26 de enero de 2026, AWS se actualizará a la versión mínima de TLS admitida que es la 1.2 en ElastiCache para Valkey versión 7.2 y posteriores, y ElastiCache para Redis OSS versión 6 y posteriores. Los clientes deben actualizar su software cliente antes de esa fecha. Esta actualización ayuda a cumplir los requisitos normativos, de seguridad y de conformidad.
Condiciones del cifrado en tránsito (Memcached)
Cuando planee la implementación de un clúster basado en nodos, debe tener en cuenta las siguientes limitaciones sobre el cifrado en tránsito de Amazon ElastiCache:
-
El cifrado en tránsito es compatible con los clústeres que ejecutan la versión 1.6.12 y posteriores de Memcached.
-
El cifrado en tránsito admite las versiones 1.2 y 1.3 de seguridad de la capa de transporte (TLS).
-
El cifrado en tránsito solo es compatible con los clústeres que se ejecutan en una Amazon VPC.
-
El cifrado en tránsito no es compatible con los grupos de replicación que ejecutan los siguientes tipos de nodos: M1, M2, M3, R3, T2.
Para obtener más información, consulte Tipos de nodos compatibles.
-
El cifrado en tránsito se habilita estableciendo explícitamente el parámetro
TransitEncryptionEnabledentrue. -
Solamente puede habilitar el cifrado en tránsito de un clúster en el momento de su creación. El cifrado en tránsito no se puede habilitar y desactivar modificando un clúster.
-
El cliente de almacenamiento en caché debe ser compatible con la conectividad TLS y esta debe estar habilitada en la configuración del cliente.
Prácticas recomendadas de cifrado en tránsito
-
Debido al procesamiento requerido para cifrar y descifrar los datos en los puntos de enlace, la implementación del cifrado en tránsito puede reducir el rendimiento. Compare sus datos con y sin cifrado en tránsito para determinar el impacto en el rendimiento de la implementación.
-
Puede reducir el impacto en el rendimiento del cifrado en tránsito al mantener las conexiones TSL existentes, ya que la creación de conexiones nuevas puede consumir muchos recursos.
Más opciones de Valkey y Redis OSS
Para obtener más información sobre las opciones disponibles para Valkey y Redis OSS, consulte los siguientes enlaces.
Habilitación del cifrado en tránsito para Memcached
Para habilitar el cifrado en tránsito al crear un clúster de Memcached a través de la Consola de administración de AWS, seleccione las siguientes opciones:
-
Elija Memcached como motor.
-
Elija la versión del motor 1.6.12 o posterior.
-
En Encryption in transit (Cifrado en tránsito), elija Enable (Habilitar).
Para ver el procedimiento paso a paso, consulte Creación de un clúster para Valkey o Redis OSS.
Conexión a nodos habilitados con el cifrado en tránsito mediante Openssl (Memcached)
Para obtener acceso a los datos desde nodos de ElastiCache para Memcached habilitados con el cifrado en tránsito, se utilizan clientes que utilizan la capa de conexión segura (SSL). También puede utilizar Openssl s_client en Amazon Linux y Amazon Linux 2.
Para utilizar Openssl s_client para conectarse a un clúster de Memcached que tiene habilitado el cifrado en tránsito en Amazon Linux 2 o Amazon Linux:
/usr/bin/openssl s_client -connectmemcached-node-endpoint:memcached-port
Creación de un cliente TLS Memcached mediante Java
Para crear un cliente en modo TLS, haga lo siguiente para inicializar el cliente con el SSLContext apropiado:
import java.security.KeyStore; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; import net.spy.memcached.AddrUtil; import net.spy.memcached.ConnectionFactoryBuilder; import net.spy.memcached.MemcachedClient; public class TLSDemo { public static void main(String[] args) throws Exception { ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder(); // Build SSLContext TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init((KeyStore) null); SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, tmf.getTrustManagers(), null); // Create the client in TLS mode connectionFactoryBuilder.setSSLContext(sslContext); MemcachedClient client = new MemcachedClient(connectionFactoryBuilder.build(), AddrUtil.getAddresses("mycluster.fnjyzo.cfg.use1.cache.amazonaws.com:11211")); // Store a data item for an hour. client.set("theKey", 3600, "This is the data value"); } }
Creación de un cliente TLS Memcached mediante PHP
Para crear un cliente en modo TLS, haga lo siguiente para inicializar el cliente con el SSLContext apropiado:
<?php /** * Sample PHP code to show how to create a TLS Memcached client. In this example we * will use the Amazon ElastiCache Auto Descovery feature, but TLS can also be * used with a Static mode client. * See Using the ElastiCache Cluster Client for PHP (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoDiscovery.Using.ModifyApp.PHP.html) for more information * about Auto Discovery and persistent-id. */ /* Configuration endpoint to use to initialize memcached client. * this is only an example */ $server_endpoint = "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com"; /* Port for connecting to the cluster. * This is only an example */ $server_port = 11211; /* Initialize a persistent Memcached client and configure it with the Dynamic client mode */ $tls_client = new Memcached('persistent-id'); $tls_client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE); /* Add the memcached's cluster server/s */ $tls_client->addServer($server_endpoint, $server_port); /* Configure the client to use TLS */ if(!$tls_client->setOption(Memcached::OPT_USE_TLS, 1)) { echo $tls_client->getLastErrorMessage(), "\n"; exit(1); } /* Set your TLS context configurations values. * See MemcachedTLSContextConfig in memcached-api.php for all configurations */ $tls_config = new MemcachedTLSContextConfig(); $tls_config->hostname = '*.mycluster.fnjyzo.use1.cache.amazonaws.com'; $tls_config->skip_cert_verify = false; $tls_config->skip_hostname_verify = false; /* Use the created TLS context configuration object to create OpenSSL's SSL_CTX and set it to your client. * Note: These TLS context configurations will be applied to all the servers connected to this client. */ $tls_client->createAndSetTLSContext((array)$tls_config); /* test the TLS connection with set-get scenario: */ /* store the data for 60 seconds in the cluster. * The client will decide which cache host will store this item. */ if($tls_client->set('key', 'value', 60)) { print "Successfully stored key\n"; } else { echo "Failed to set key: ", $tls_client->getLastErrorMessage(), "\n"; exit(1); } /* retrieve the key */ if ($tls_client->get('key') === 'value') { print "Successfully retrieved key\n"; } else { echo "Failed to get key: ", $tls_client->getLastErrorMessage(), "\n"; exit(1); }
Para obtener más información sobre el uso del cliente PHP, consulte Instalación de ElastiCache Cluster Client para .PHP.