第4章 Ceph の伝送時暗号化
messenger バージョン 2 プロトコルを使用して、ネットワーク経由ですべての Ceph トラフィックの暗号化を有効にできます。メッセンジャー v2 の secure
モード設定は、Ceph デーモンと Ceph クライアント間の通信を暗号化し、エンドツーエンドの暗号化を提供します。
Ceph の有線プロトコルの 2 つ目のバージョンである msgr2
には、以下の新機能が含まれています。
- 安全なモードは、ネットワークを介したすべてのデータの移動を暗号化します。
- 認証ペイロードのカプセル化による改善。
- 機能のアドバタイズおよびネゴシエーションの改善。
Ceph デーモンは、レガシー、v1 互換、および新しい v2 互換の Ceph クライアントを同じストレージクラスターに接続することができるように、複数のポートにバインドします。Ceph Monitor デーモンに接続する Ceph クライアントまたはその他の Ceph デーモンは、まず v2
プロトコルの使用を試みますが、可能でない場合は古い v1
プロトコルが使用されます。デフォルトでは、メッセンジャープロトコル v1
と v2
の両方が有効です。新規の v2 ポートは 3300 で、レガシー v1 ポートはデフォルトで 6789 になります。
messenger v2 プロトコルには、v1 プロトコルまたは v2 プロトコルを使用するかどうかを制御する 2 つの設定オプションがあります。
-
ms_bind_msgr1
- このオプションは、デーモンが v1 プロトコルと通信するポートにバインドするかどうかを制御します。デフォルトではtrue
です。 -
ms_bind_msgr2
- このオプションは、デーモンが v2 プロトコルと通信するポートにバインドするかどうかを制御します。デフォルトではtrue
です。
同様に、使用する IPv4 アドレスと IPv6 アドレスに基づいて 2 つのオプションを制御します。
-
ms_bind_ipv4
- このオプションは、デーモンが IPv4 アドレスにバインドするかどうかを制御します。デフォルトではtrue
です。 -
ms_bind_ipv6
- このオプションは、デーモンが IPv6 アドレスにバインドするかどうかを制御します。デフォルトではtrue
です。
メッセンジャープロトコル v1
または v2
を使用する Ceph デーモンまたはクライアントは、スロットル、つまりメッセージキューの増大を制限する機能を実装できます。まれに、デーモンまたはクライアントがスロットルを超えて、メッセージ処理に遅延が生じることがあります。スロットル制限に達すると、次の低レベルの警告メッセージが表示されます。
Throttler Limit has been hit. Some message processing may be significantly delayed.
msgr2
プロトコルは、以下の 2 つの接続モードをサポートします。
crc
-
cephx
で接続を確立すると、強固な初期認証を提供します。 -
ビットフリップから保護する
crc32c
整合性チェックを提供します。 - 悪意のある中間者攻撃に対する保護を提供しません。
- 盗聴者がすべての認証後のトラフィックを見るのを妨げません。
-
secure
-
cephx
で接続を確立すると、強固な初期認証を提供します。 - 認証後トラフィックをすべて完全に暗号化します。
- 暗号化整合性チェックを提供します。
-
デフォルトのモードは crc
です。
Red Hat Ceph Storage クラスターを計画するときは、暗号化のオーバーヘッドを含めるために、クラスターの CPU 要件を必ず考慮してください。
現在、secure
なモードの使用は、Red Hat Enterprise Linux 上の CephFS や krbd
など、Ceph カーネルクライアントでサポートされています。secure
モードの使用は、OpenStack Nova、Glance、Cinder などの librbd
を使用する Ceph クライアントでサポートされています。
アドレスの変更
メッセンジャープロトコルの両方のバージョンが、同じストレージクラスターに共存するために、アドレスのフォーマットが変更されました。
-
古いアドレスの形式は、
IP_ADDR: PORT / CLIENT_ID
です (例:1.2.3.4:5678/91011
)。 -
新しいアドレスの形式は、
PROTOCOL_VERSION : IP_ADDR : PORT / CLIENT_ID
です (例:v2:1.2.3.4:5678/91011
)。たとえば、PROTOCOL_VERSION はv1
またはv2
のいずれかになります。
Ceph デーモンは複数のポートにバインドするようになったため、デーモンは単一のアドレスではなく複数のアドレスを表示します。モニターマップのダンプの例を以下に示します。
epoch 1 fsid 50fcf227-be32-4bcb-8b41-34ca8370bd17 last_changed 2021-12-12 11:10:46.700821 created 2021-12-12 11:10:46.700821 min_mon_release 14 (nautilus) 0: [v2:10.0.0.10:3300/0,v1:10.0.0.10:6789/0] mon.a 1: [v2:10.0.0.11:3300/0,v1:10.0.0.11:6789/0] mon.b 2: [v2:10.0.0.12:3300/0,v1:10.0.0.12:6789/0] mon.c
また、mon_host
設定オプション、-m
を使用してコマンドラインでアドレスを指定することで、新しいアドレス形式がサポートされます。
接続フェーズ
暗号化された接続を確立するには、以下の 4 つのフェーズがあります。
- バナー
-
接続で、クライアントとサーバーの両方がバナーを送信します。現在、Ceph バナーは
ceph 0 0n
です。 - 認証エクスチェンジ
- 送信または受信されたすべてのデータは、接続の間、フレームに含まれます。サーバーは、認証が完了したかどうかについて、および接続モードについて決定します。フレームフォーマットは修正され、使用される認証フラグに応じて 3 つの異なる形式にすることができます。
- メッセージフローハンドシェイクエクスチェンジ
- ピアは相互に識別し、セッションを確立します。クライアントは最初のメッセージを送信し、サーバーは同じメッセージで応答します。クライアントが誤ったデーモンと通信すると、サーバーが接続を閉じることがあります。新しいセッションの場合、クライアントとサーバーはメッセージのエクスチェンジに進みます。クライアントのクッキーはセッションを識別するために使用され、既存のセッションに再接続できます。
- メッセージエクスチェンジ
- クライアントおよびサーバーは、接続が閉じられるまで、メッセージのエクスチェンジを開始します。
関連情報
-
msgr2
プロトコルの有効化に関する詳細は、Red Hat Ceph Storage データのセキュリティーおよび強化機能ガイド を参照してください。