23.9. IPsec 暗号化の設定
IPsec を有効にすると、OVN-Kubernetes クラスターネットワーク上のノード間のすべての Pod 間ネットワークトラフィックが IPsec トランスポートモード で暗号化されます。
IPsec はデフォルトで無効にされています。クラスターのインストール中またはインストール後に有効にできます。クラスターのインストールの詳細は、OpenShift Container Platform インストールの概要 を参照してください。クラスターのインストール後に IPsec を有効にする必要がある場合は、IPsec ESP IP ヘッダーのオーバーヘッドを考慮して、まずクラスター MTU のサイズを変更する必要があります。
OpenShift Container Platform クラスター上の IPsec には次のサポート制限があります。
- OpenShift Container Platform 4.15 に更新する前に、IPsec を無効にする必要があります。IPsec を無効にしたら、関連する IPsec デーモンセットも削除する必要があります。IPsec を無効にせずに更新すると、Pod 間通信が中断される可能性があるという既知の問題があります。(OCPBUGS-43323)
次のドキュメントでは、クラスターのインストール後に IPSec を有効または無効にする方法について説明します。
23.9.1. 前提条件
-
クラスター MTU のサイズを
46
バイト減らして、IPsec ESP ヘッダーにオーバーヘッドを追加している。クラスターが使用する MTU のサイズ変更の詳細は クラスターネットワークの MTU 変更 を参照してください。
23.9.2. IPsec で暗号化したネットワークトラフィックフローのタイプ
IPsec を有効にすると、Pod 間の以下のネットワークトラフィックフローのみが暗号化されます。
- クラスターネットワーク上の複数の異なるノードの Pod 間のトラフィック
- ホストネットワークの Pod からクラスターネットワーク上の Pod へのトラフィック
以下のトラフィックフローは暗号化されません。
- クラスターネットワーク上の同じノードの Pod 間のトラフィック
- ホストネットワーク上の Pod 間のトラフィック
- クラスターネットワークの Pod からホストネットワークの Pod へのトラフィック
暗号化されていないフローと暗号化されていないフローを以下の図に示します。
23.9.2.1. IPsec が有効になっている場合のネットワーク接続要件
OpenShift Container Platform クラスターのコンポーネントが通信できるように、マシン間のネットワーク接続を設定する必要があります。すべてのマシンではクラスターの他のすべてのマシンのホスト名を解決できる必要があります。
プロトコル | ポート | 説明 |
---|---|---|
UDP |
| IPsec IKE パケット |
| IPsec NAT-T パケット | |
ESP | 該当なし | IPsec Encapsulating Security Payload (ESP) |
23.9.3. 暗号化プロトコルおよび IPsec モード
使用する暗号化は AES-GCM-16-256
です。整合性チェック値 (ICV) は 16
バイトです。鍵の長さは 256
ビットです。
使用される IPsec モードは トランスポートモード です。これは、元のパケットの IP ヘッダーに Encapsulated Security Payload (ESP) ヘッダーを追加して、パケットデータを暗号化することで、エンドツーエンドの通信を暗号化するモードです。OpenShift Container Platform は現在、Pod 間通信に IPsec トンネルモード を使用およびサポートしていません。
23.9.4. セキュリティー証明書の生成およびローテーション
Cluster Network Operator (CNO) は、暗号化用に IPsec によって使用される自己署名の X.509 認証局 (CA) を生成します。各ノードの証明書署名要求 (CSR) は、CNO によって自動的に満たされます。
この CA は 10 年間有効です。個別のノード証明書は 5 年間有効で、4 年半が経過すると自動的にローテーションされます。
23.9.5. IPsec 暗号化の有効化
クラスター管理者は、クラスターのインストール後に IPsec 暗号化を有効にできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。 -
クラスター MTU のサイズを
46
バイト減らして、IPsec ESP ヘッダーにオーバーヘッドを設けている。
手順
IPsec 暗号化を有効にするには、次のコマンドを入力します。
$ oc patch networks.operator.openshift.io cluster --type=merge \ -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipsecConfig":{ }}}}}'
検証
OVN-Kubernetes コントロールプレーン Pod の名前を見つけるには、次のコマンドを入力します。
$ oc get pods -l app=ovnkube-master -n openshift-ovn-kubernetes
出力例
NAME READY STATUS RESTARTS AGE ovnkube-master-fvtnh 6/6 Running 0 122m ovnkube-master-hsgmm 6/6 Running 0 122m ovnkube-master-qcmdc 6/6 Running 0 122m
次のコマンドを実行して、クラスターで IPsec が有効になっていることを確認します。
$ oc -n openshift-ovn-kubernetes rsh ovnkube-master-<XXXXX> \ ovn-nbctl --no-leader-only get nb_global . ipsec
ここでは、以下のようになります。
<XXXXX>
- 前の手順の Pod の文字のランダムなシーケンスを指定します。
出力例
true
23.9.6. IPsec 暗号化の無効化
クラスター管理者は、クラスターのインストール後に IPsec を有効にした場合にのみ、IPsec 暗号化を無効にできます。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限を持つユーザーとしてクラスターにログインする。
手順
IPsec 暗号化を無効にするには、次のコマンドを入力します。
$ oc patch networks.operator.openshift.io/cluster --type=json \ -p='[{"op":"remove", "path":"/spec/defaultNetwork/ovnKubernetesConfig/ipsecConfig"}]'
-
オプション: IP パケットの IPsec ESP ヘッダーからのオーバーヘッドがなくなるため、クラスター MTU のサイズを
46
バイト増やすことができます。 クラスターで IPsec が無効になっていることを確認します。
$ oc -n openshift-ovn-kubernetes -c nbdb rsh ovnkube-master-<XXXXX> \ ovn-nbctl --no-leader-only get nb_global . ipsec
ここでは、以下のようになります。
<XXXXX>
- 前の手順の Pod の文字のランダムなシーケンスを指定します。
出力例
false