ElastiCache crittografia in transito () TLS - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

ElastiCache crittografia in transito () TLS

Per aiutarti a proteggere i tuoi dati, Amazon ElastiCache e Amazon EC2 forniscono meccanismi di protezione contro l'accesso non autorizzato ai tuoi dati sul server. Fornendo funzionalità di crittografia in transito, ti ElastiCache offre uno strumento che puoi utilizzare per proteggere i tuoi dati quando vengono spostati da una posizione all'altra.

Tutte le cache serverless dispongono della crittografia dei dati in transito abilitata. Per i cluster progettati autonomamente, è possibile abilitare la crittografia in transito su un cluster di cache impostando il parametro TransitEncryptionEnabled su true (CLI:--transit-encryption-enabled) quando si crea il cluster di cache utilizzando l'operazione CreateCacheCluster (CLI:). create-cache-cluster

Panoramica della crittografia dei dati in transito

La crittografia ElastiCache in transito di Amazon è una funzionalità che consente di aumentare la sicurezza dei dati nei punti più vulnerabili, quando sono in transito da una posizione all'altra. Poiché la crittografia e la decrittografia dei dati richiede l'elaborazione a livello di endpoint, l'abilitazione della crittografia dei dati in transito può in parte influire sulle prestazioni. È opportuno creare un riferimento per i dati con o senza crittografia dei dati in transito per determinare l'impatto sulle prestazioni per i propri casi d'uso.

ElastiCache la crittografia in transito implementa le seguenti funzionalità:

  • Connessioni client crittografate: le connessioni client ai nodi di cache sono crittografate. TLS

  • Connessioni server crittografate: i dati che si spostano tra i nodi di un cluster sono crittografati.

  • Autenticazione del server: i client possono autenticare che si stanno connettendo al server giusto.

Condizioni di crittografia dei dati in transito

I seguenti vincoli sulla crittografia ElastiCache in transito di Amazon devono essere tenuti presenti quando pianifichi l'implementazione del cluster progettata autonomamente:

  • La crittografia in transito è supportata su cluster che eseguono Memcached versione 1.6.12 e successive.

  • La crittografia in transito supporta le versioni 1.2 e 1.3 di Transport Layer Security (TLS).

  • La crittografia in transito è supportata solo per i cluster in esecuzione in Amazon. VPC

  • La crittografia in transito non è supportata per i gruppi di replica che eseguono i seguenti tipi di nodi: M1, M2, M3, R3, T2.

    Per ulteriori informazioni, consulta Tipi di nodi supportati.

  • La crittografia dei dati in transito è abilitata impostando in maniera esplicata il parametro TransitEncryptionEnabled su true.

  • Puoi abilitare la crittografia in transito su un cluster solo durante la creazione del cluster. Non puoi attivare o disattivare la crittografia in transito modificando un cluster.

  • Assicurati che il tuo client di caching supporti la TLS connettività e di averlo abilitato nella configurazione del client.

Best practice per la crittografia in transito

  • A causa dell'elaborazione richiesta per crittografare e decrittografare i dati a livello degli endpoint, l'implementazione della crittografia dei dati in transito può ridurre le prestazioni. Raffronta la crittografia dei dati in transito con l'assenza di crittografia sui dati per determinare il suo impatto sulle prestazioni per l'implementazione.

  • Poiché la creazione di nuove connessioni può essere costosa, è possibile ridurre l'impatto sulle prestazioni della crittografia in transito mantenendo le connessioni persistenti. TLS

Abilitazione della crittografia dei dati in transito

Per abilitare la crittografia in transito creando un cluster Memcached tramite AWS Management Console, effettua le selezioni seguenti:

  • Scegli Memcached come motore.

  • Scegli la versione del motore 1.6.12 o successiva.

  • In Encryption in transit (Crittografia in transito), scegli Enable (Abilita).

Per il step-by-step processo, vedi Creazione di un cluster Memcached (console).

Connessione a nodi con crittografia in transito abilitata tramite Openssl

Per accedere ai dati dai nodi ElastiCache (Memcached) abilitati con crittografia in transito, è necessario utilizzare client che funzionano con Secure Socket Layer (). SSL Su Amazon linux e Amazon Linux 2, puoi utilizzare anche Openssl s_client.

Per utilizzare Openssl s_client per la connessione a un cluster Memcached con crittografia in transito abilitata su Amazon Linux 2 o Amazon Linux:

/usr/bin/openssl s_client -connect memcached-node-endpoint:memcached-port

Creazione di un client TLS Memcached utilizzando Java

Per creare un client in TLS modalità, effettuate le seguenti operazioni per inizializzare il client con la modalità appropriata: SSLContext

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"); } }

Creazione di un client TLS Memcached utilizzando PHP

Per creare un client in TLS modalità, procedi come segue per inizializzare il client con la modalità appropriata: SSLContext

<?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); }

Per ulteriori informazioni sull'utilizzo del PHP client, vedereInstallazione del client del cluster ElastiCache per PHP.