ElastiCache 転送中の暗号化 (TLS) - Amazon ElastiCache

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ElastiCache 転送中の暗号化 (TLS)

データを安全に保護するために、Amazon ElastiCache と Amazon EC2はサーバー上のデータの不正アクセスから保護するメカニズムを提供しています。転送中の暗号化機能を提供することで、 は、ある場所から別の場所に移動する際にデータを保護するために使用できるツール ElastiCache を提供します。

すべての Valkey または Redis OSSサーバーレスキャッシュでは、転送中の暗号化が有効になっています。独自設計のクラスターでは、レプリケーショングループの作成時に パラメータTransitEncryptionEnabledtrue (CLI:--transit-encryption-enabled) に設定することで、レプリケーショングループの転送中の暗号化を有効にできます。これは、、 AWS Management Console、 AWS CLIまたは を使用してレプリケーショングループを作成するかどうかにかかわらず行うことができます ElastiCache API。

すべてのサーバーレスキャッシュで、転送時の暗号化が有効になっています。自己設計型クラスターの場合、 true (CLI: --transit-encryption-enabled) オペレーションを使用してキャッシュクラスターを作成するときに、 パラメータTransitEncryptionEnabledCreateCacheCluster (CLI: create-cache-cluster) に設定することで、キャッシュクラスターで転送中の暗号化を有効にできます。

転送時の暗号化の概要

Amazon ElastiCache 転送中の暗号化は、ある場所から別の場所への転送中に、最も脆弱なポイントでデータのセキュリティを高める機能です。エンドポイントでデータの暗号化と復号を行うにはある程度の処理が必要であるため、転送時の暗号化を有効にするとパフォーマンスに影響を及ぼす可能性があります。転送時の暗号化の使用時と未使用時でデータのベンチマークを取得して、ユースケースにおけるパフォーマンス影響を判断する必要があります。

ElastiCache 転送中の暗号化では、次の機能を実装します。

  • 暗号化されたクライアント接続 — キャッシュノードへのクライアント接続はTLS暗号化されます。

  • 暗号化されたサーバー接続 — クラスター内のノード間を移動するデータは暗号化されます。

  • [サーバー認証] — クライアントは、適切なサーバーに接続していることを認証できます。

  • クライアント認証 — Valkey と Redis OSSAUTH機能を使用して、サーバーはクライアントを認証できます。

転送中の暗号化条件 (Valkey と Redis OSS)

Amazon ElastiCache の転送中の暗号化に関する以下の制約事項は、独自設計のクラスター実装を計画する際に考慮する必要があります。

  • 転送中の暗号化は、Valkey 7.2 以降、および Redis OSSバージョン 3.2.6、4.0.10 以降を実行するレプリケーショングループでサポートされています。

  • 既存のクラスターの転送中の暗号化設定を変更することは、Valkey 7.2 以降、および Redis OSSバージョン 7 以降を実行するレプリケーショングループでサポートされています。

  • 転送中の暗号化は、Amazon で実行されているレプリケーショングループでのみサポートされていますVPC。

  • 転送中の暗号化はM1, M2 のノードタイプを実行するレプリケーショングループではサポートされていません。

    詳細については、「サポートされているノードの種類」を参照してください。

  • 転送時の暗号化は、パラメータ TransitEncryptionEnabledtrue に明示的に設定することで有効化されます。

  • キャッシュクライアントがTLS接続をサポートし、クライアント設定で有効にしていることを確認します。

  • 古い TLS 1.0 および TLS 1.1 の使用は、 ElastiCache バージョン 6 以降のすべての AWS リージョンで廃止されます。ElastiCache は、2025 TLS 年 5 月 8 日まで 1.0 と 1.1 を引き続きサポートします。お客様は、その日より前にクライアントソフトウェアを更新する必要があります。

転送中の暗号化条件 (Memcached)

Amazon ElastiCache の転送中の暗号化に関する以下の制約事項は、独自設計のクラスター実装を計画する際に考慮する必要があります。

  • 転送時の暗号化は、Memcached バージョン 1.6.12 以降を実行するクラスターでサポートされます。

  • 転送中の暗号化は、Transport Layer Security (TLS) バージョン 1.2 および 1.3 をサポートしています。

  • 転送中の暗号化は、Amazon で実行されているクラスターでのみサポートされますVPC。

  • 転送中の暗号化は、M1, M2, M3, R3, T2 のノードタイプを実行するレプリケーショングループではサポートされていません。

    詳細については、「サポートされているノードの種類」を参照してください。

  • 転送時の暗号化は、パラメータ TransitEncryptionEnabledtrue に明示的に設定することで有効化されます。

  • 転送時の暗号化は、クラスターの作成時にのみクラスターで有効にできます。クラスターを変更して転送時の暗号化のオンとオフを切り替えることはできません。

  • キャッシュクライアントがTLS接続をサポートし、クライアント設定で有効にしていることを確認します。

転送時の暗号化のベストプラクティス

  • エンドポイントでデータの暗号化と復号を行うにはある程度の処理が必要であるため、転送時の暗号化の実装によりパフォーマンスが低下する可能性があります。自身のデータで転送時の暗号化使用時のベンチマークを暗号化なしの場合と比較して、実装におけるパフォーマンスの影響を判断してください。

  • 新しい接続の作成にはコストがかかる可能性があるため、TLS接続を保持することで、転送中の暗号化のパフォーマンスへの影響を軽減できます。

その他の Valkey および Redis OSSオプション

Valkey および Redis で使用できるオプションの詳細についてはOSS、以下のリンクを参照してください。

Memcached の転送中の暗号化の有効化

AWS マネジメントコンソールを使用して Memcached クラスターの作成時に転送時の暗号化を有効にするには、以下のように選択します。

  • エンジンとして Memcached を選択します。

  • エンジンバージョン 1.6.12 以降。

  • [Encryption in transit] (転送時の暗号化) で、[Enable] (有効化) を選択します。

プロセスについては、 step-by-step「」を参照してくださいValkey または Redis 用のクラスターの作成 OSS

Openssl (Memcached) を使用した転送中の暗号化で有効化されたノードへの接続

転送中の暗号化が有効になっている ElastiCache (Memcached) ノードからデータにアクセスするには、Secure Socket Layer () を使用するクライアントを使用する必要がありますSSL。Amazon Linux や Amazon Linux 2 で、Openssl s_client を使用することもできます。

Openssl s_client を使用して、Amazon Linux 2 または Amazon Linux で送信中の暗号化を有効にした Memcached クラスターに接続するには:

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

Java を使用した TLS Memcached クライアントの作成

TLS モードでクライアントを作成するには、以下を実行して、適切な を使用してクライアントを初期化します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"); } }

を使用した TLS Memcached クライアントの作成 PHP

TLS モードでクライアントを作成するには、以下を実行して、適切な を使用してクライアントを初期化します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/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); }

PHP クライアントの使用の詳細については、「」を参照してくださいElastiCache Cluster Client for PHP のインストール