転送中の暗号化について

このページでは、Memorystore for Redis の転送中の暗号化の概要を説明します。

送信中の暗号化による接続の暗号化する手順については、送信中の暗号化の有効化をご覧ください。

Memorystore for Redis は、TLS プロトコル バージョン 1.2 以降のみをサポートしています。

はじめに

Memorystore for Redis は、Transport Layer Security(TLS)プロトコルを使用してすべての Redis トラフィックを暗号化することをサポートしています。転送中の暗号化が有効になっている場合、Redis クライアントは安全なポート接続を介してのみ通信を行います。TLS 用に構成されていない Redis クライアントはブロックされます。転送中の暗号化を有効にする場合は、Redis クライアントが TLS プロトコルを使用できることを確認する必要があります。

転送中の暗号化の前提条件

Memorystore for Redis で転送中の暗号化を使用するには、次のものが必要です。

  1. TLS またはサードパーティの TLS サイドカーをサポートする Redis クライアント
  2. Redis インスタンスにアクセスするクライアント マシンにインストールされた認証局

オープンソースの Redis バージョン 6.0 より前のネイティブ TLS はサポートされていません。そのため、すべての Redis クライアント ライブラリで TLS がサポートされているわけではありません。TLS をサポートしていないクライアントを使用している場合は、クライアントの TLS を有効にする stunnel サードパーティ プラグインを使用することをおすすめします。stunnel を使用して Redis インスタンスに接続する方法の例については、stunnel と telnet を使用した Redis インスタンスへの安全な接続をご覧ください。

認証局

転送中の暗号化を使用する Redis インスタンスには、サーバーの ID の確認に使用される 1 つ以上の一意の認証局(CA)があります。CA は、Redis インスタンスにアクセスするクライアントに対して、ダウンロードしてインストールする必要がある文字列です。CA は、作成日から 10 年間有効です。サービスの継続性を維持するために、前の CA の有効期限が切れる前に、新しい CA を Redis インスタンスのクライアントにインストールする必要があります。

認証局のローテーション

CA はインスタンスの作成時から 10 年間有効です。また、新しい CA は、インスタンスの作成から 5 年間利用できます。

古い CA は、有効期限まで有効です。このため、Redis インスタンスに接続するクライアントに新しい CA をダウンロードしてインストールできる期間は 5 年間となります。古い CA は、有効期限が切れたらクライアントからアンインストールできます。

CA のローテーション手順については、認証局のローテーションの管理をご覧ください。

サーバー証明書のローテーション

サーバー側の証明書のローテーションは 180 日ごとに発生し、数秒間、接続の一時的な不通が生じます。接続を再確立するためには、指数バックオフ使用した再試行ロジックを備えている必要があります。証明書のローテーションが、スタンダード ティア インスタンスのフェイルオーバーを引き起こすことはありません。

転送中の暗号化の接続上限

Redis インスタンスで転送中の暗号化を有効にすると、インスタンスで可能な最大クライアント接続数が設定されます。この上限は、インスタンスのサイズによって異なります。現在の容量階層でサポートされている数よりも多くの接続が必要な場合は、Redis インスタンスのサイズを大きくすることを検討してください。

容量ティア Redis バージョン 4.0、5.0、6.x の最大接続数1 Redis バージョン 7.0 以降の最大接続数1
M1(1-4GB) 1,000 65,000
M2(5-10GB) 2,500 65,000
M3(11-35GB) 15,000 65,000
M4(36-100GB) 30,000 65,000
M5(101+GB) 65,000 65,000

1 この接続上限は概算値であり、Redis コマンドの送信速度と複雑さによって接続ごとに異なります。

接続のモニタリング

転送中の暗号化を使用する Redis インスタンスには一定の接続上限があるため、redis.googleapis.com/clients/connected 指標をモニタリングして、接続上限を超えないようにしてください。上限を超えると、Redis インスタンスは、新たな接続の試行を拒否します。このような場合は、インスタンスを必要な接続数に対応できるサイズにスケールアップすることをおすすめします。アイドル状態の接続がかなりの数を占めていると思われる場合、timeout 構成パラメータを使用してこれらの接続を事前に終了できます。

転送中の暗号化を有効にした場合のパフォーマンスへの影響

転送中の暗号化機能では、処理にオーバーヘッドを伴うデータの暗号化と復号を行います。このため、転送中の暗号化を有効にすると、パフォーマンスの低下を招く可能性があります。また、転送中の暗号化では、追加の接続のそれぞれに関連リソースのコストがかかります。転送中の暗号化に関連するレイテンシを判断するには、転送中の暗号化が有効になっている Redis インスタンスと無効になっている Redis インスタンスの両方でアプリケーションのパフォーマンスを比較します。

パフォーマンスを改善するためのガイドライン

  • 可能なときは、クライアントの接続数を減らします。オンデマンドの有効期間が短い接続を作成するのではなく、長期の接続を確立してそれを再利用します。
  • Memorystore インスタンスのサイズを増やします(M4 以上をおすすめします)。
  • Memorystore クライアント ホストマシンの CPU リソースを増やします。CPU 数の多いクライアント マシンでは、パフォーマンスが向上します。Compute Engine VM を使用している場合は、コンピューティング最適化インスタンスをおすすめします。
  • ペイロードが大きければ大きいほど、より多くの往復が必要となるため、アプリケーション トラフィックに関連付けられたペイロード サイズを減らします。

転送中の暗号化のメモリ使用量への影響

転送中の暗号化を有効にすると、この機能用に Redis インスタンスのメモリの一部が予約されます。転送中の暗号化が有効なこと以外がすべて同じ場合は、この機能が使用するメモリのオーバーヘッド分が追加されて System Memory Usage Ratio 指標の値が高くなります。

Redis バージョン 7.0 のパフォーマンスの改善

Memorystore for Redis で Redis バージョン 7.0 を使用すると、転送中の暗号化のパフォーマンスが向上します。これらのパフォーマンスの向上を活用するには、Redis バージョン 7.0 を使用するようにインスタンスをアップグレードすることを検討してください。

次のステップ