ElastiCache cifrado en tránsito (TLS) - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

ElastiCache cifrado en tránsito (TLS)

Para ayudar a mantener sus datos seguros, Amazon ElastiCache y Amazon EC2 proporcionan mecanismos para protegerlos del acceso no autorizado a sus datos en el servidor. Al proporcionar la capacidad de cifrado en tránsito, ElastiCache le ofrece una herramienta que puede utilizar para proteger sus datos cuando se mueven de un lugar a otro.

Todas las cachés sin servidor tienen activado el cifrado en tránsito. Para los clústeres de autodiseño, puede habilitar el cifrado en tránsito en un clúster de caché configurando el parámetro TransitEncryptionEnabled en true (CLI:--transit-encryption-enabled) al crear el clúster de caché mediante la operación CreateCacheCluster (CLI: create-cache-cluster).

Información general sobre el cifrado en tránsito

El cifrado ElastiCache en tránsito de Amazon es una función que te permite aumentar la seguridad de tus datos en los puntos más vulnerables, cuando están en tránsito de un lugar a otro. 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.

ElastiCache el cifrado en tránsito implementa las siguientes funciones:

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

Condiciones del cifrado en tránsito

Al planificar la implementación de un clúster de diseño propio, debes tener en cuenta las siguientes restricciones del cifrado en ElastiCache tránsito de Amazon:

  • 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 TransitEncryptionEnabled en true.

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

Habilitación del cifrado en tránsito

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 step-by-step proceso, consulte Creación de un clúster de Memcached (consola).

Conexión a nodos habilitados con el cifrado en tránsito mediante Openssl

Para acceder a los datos desde ElastiCache los nodos de Memcached habilitados con el cifrado en tránsito, debe utilizar clientes que funcionen con Secure Socket Layer (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 -connect memcached-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/mem-ug/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.