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 を使用してレプリケーショングループを作成する場合でも実行できます。

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

転送時の暗号化の概要

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

ElastiCache 転送時の暗号化では、次の機能が実装されます。

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

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

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

  • [クライアント認証] — Valkey および Redis OSS の AUTH 機能を使用して、サーバーはクライアントを認証できます。

転送中の暗号化の条件 (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 接続を有効にしていることを確認します。

  • 古い TLS 1.0 および TLS 1.1 の使用は、ElastiCache バージョン 6 以降のすべての AWS リージョンで廃止されました。ElastiCache は、2025 年 5 月 8 日まで TLS 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 接続を有効にしていることを確認します。

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

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

  • 新しい接続の作成には高い負荷がかかる場合があるため、TLS 接続を持続させることで転送時の暗号化のパフォーマンスへの影響を軽減させることができます。

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

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

Memcached で転送時の暗号化を有効にする

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

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

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

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

ステップバイステップの手順については、「Valkey または Redis OSS 用のクラスターの作成」を参照してください。

Openssl を使用して、転送時の暗号化が有効なノードに接続する (Memcached)

送信中の暗号化を有効にした Memcached ノードの ElastiCache のデータにアクセスするには、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"); } }

PHP を使用して TLS Memcached クライアントを作成する

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 のインストール」を参照してください。