IBM Cloud Docs
デフォルトでセキュアなクラスタVPCネットワーキングを理解する

デフォルトでセキュアなクラスタVPCネットワーキングを理解する

Virtual Private Cloud 4.15 以降

バージョン 4.15で作成された新しい VPC クラスターから、 Red Hat OpenShift on IBM Cloud は、Secure by Default Cluster VPC Networking という新しいセキュリティー機能を導入しました。 Secure by Default では、VPC クラスターの作成時に自動的に作成される新しい VPC 設定 (管理対象セキュリティー・グループ、セキュリティー・グループ・ルール、仮想プライベート・エンドポイント・ゲートウェイ (VPE) など) があります。 バージョン 4.15 以降のクラスターを作成するときに作成および管理される VPC コンポーネントについて、以下の詳細を確認してください。

概要

Secure by Default Networking では、バージョン 4.15 以降の新しい Red Hat OpenShift on IBM Cloud VPC クラスターをプロビジョンすると、クラスターが機能するために必要なトラフィックのみが許可され、その他のアクセスはすべてブロックされます。 Secure by Default Networking を実装するために、 Red Hat OpenShift on IBM Cloud は、さまざまなセキュリティー・グループおよびセキュリティー・グループ・ルールを使用してクラスター・コンポーネントを保護します。 これらのセキュリティグループとルールは自動的に作成され、ワーカーノード、ロードバランサー、およびクラスタ関連のVPEゲートウェイにアタッチされます。

VPCセキュリティ・グループ
この画像は、VPCとクラスタに適用されているVPCセキュリティ・グループを示しています

仮想プライベート・クラウドのセキュリティー・グループは、ハイパーバイザー・レベルでトラフィックをフィルタリングします。 セキュリティー・グループのルールは特定の順序で適用されるわけではありません。 ただし、ワーカー・ノードへの要求は、指定したルールのいずれかに一致した場合にのみ許可されます。 インバウンド・ルールまたはアウトバウンド・ルールを作成して、ある方向のトラフィックを許可すると、その反対方向の応答も許可されます。 セキュリティー・グループは追加式です。つまり、ワーカー・ノードに複数のセキュリティー・グループを関連付けると、それらのセキュリティー・グループに含まれているすべてのルールがワーカー・ノードに適用されます。 新しいクラスター・バージョンでは、古いクラスター・バージョンよりも多くのルールが kube-<clusterID> セキュリティー・グループに含まれている可能性があります。 サービスのセキュリティーを向上させるためにセキュリティー・グループ・ルールが追加されており、機能を損なうことはありません。

仮想プライベート・エンドポイント(VPE)ゲートウェイ

Red Hat OpenShift on IBM Cloud 4.14+ の最初の VPC クラスターが特定の VPC に作成されるか、その VPC 内のクラスターのマスターが 4.14+ に更新されると、さまざまな IBM Cloud サービス用に複数の共有 VPE ゲートウェイが作成されます。 これらの各タイプの共有 VPE ゲートウェイは、VPC ごとに 1 つのみ作成されます。 VPC 内のすべてのクラスターは、これらのサービスに対して同じ VPE ゲートウェイを共有します。 これらの共有 VPE ゲートウェイには、クラスター・ワーカーが存在する各ゾーンの単一の予約済み IP が割り当てられます。

VPC クラスターを作成すると、以下の VPE ゲートウェイが自動的に作成されます。

VPEゲートウェイ
表に、VPCクラスタ用に作成されたVPEゲートウェイを示します。 最初の列には、ゲートウェイの名前が含まれています。 2 列目には簡単な説明が記載されています。
VPE ゲートウェイ 説明
IBM Cloud Container Registry 共有 IBM Cloud Container Registry からクラスター内で実行されているアプリにコンテナー・イメージをプルします。
IBM Cloud Object Storage s3 ゲートウェイ 共有 COS API にアクセスします。
IBM Cloud Object Storage 構成ゲートウェイ 共有 コンテナー・イメージを IBM Cloud Object Storage にバックアップします。
Red Hat OpenShift on IBM Cloud Red Hat OpenShift on IBM Cloud API にアクセスして、クラスターと対話し、クラスターを管理します。†

† サポートされるすべての VPC クラスターには、クラスターの作成時にアカウントで作成されるクラスター・マスター用の VPE ゲートウェイがあります。 この VPE ゲートウェイはクラスター・ワーカーによって使用され、VPC 内の他のものがクラスターのマスター API サーバーに接続するために使用できます。 この VPE ゲートウェイには、クラスター・ワーカーが存在する各ゾーンの単一の予約済み IP が割り当てられます。この IP は、クラスター・ワーカーが存在するそのゾーン内の VPC サブネットの 1 つに作成されます。 例えば、クラスタが単一のゾーンリージョン(us-east-1)と単一のVPCサブネットのみにワーカーを持つ場合、単一のIPがそのサブネットに作成され、VPEゲートウェイに割り当てられます。 クラスターの 3 つのゾーンすべて ( us-east-1us-east-2us-east-3 など) にワーカーがあり、これらのワーカーが各ゾーンの 4 つの VPC サブネットに分散されている場合、12 個の VPC サブネットがまとめて作成され、各ゾーンに 1 つずつ、そのゾーンの 4 つの VPC サブネットの 1 つに 3 つの IP が作成されます。 サブネットはランダムに選択されることに注意してください。

管理対象セキュリティー・グループ

Red Hat OpenShift on IBM Cloud は、VPC クラスターの以下のセキュリティー・グループとルールを自動的に作成して更新します。

ワーカー・セキュリティー・グループ

Red Hat OpenShift on IBM Cloud VPC クラスターを作成すると、そのクラスターのすべてのワーカーまたはノードに対してセキュリティー・グループが作成されます。 セキュリティー・グループの名前は kube-<clusterID> です。ここで、 <clusterID> はクラスターの ID です。 後で新規ノードがクラスターに追加されると、それらのノードは自動的にクラスター・セキュリティー・グループに追加されます。

kube-<clusterID> セキュリティー・グループ内のルールは変更しないでください。変更すると、クラスターのワーカーと制御クラスターの間のネットワーク接続が中断される可能性があります。

セキュリティkube-clusterIDのルール
この表は、クラスタワーカーセキュリティグループに適用されるルールを示しています。 最初の列には、ルールのプロトコルが含まれています。 2 番目の列には、ポートとタイプが含まれています。 3 番目の列には、ルールのリモート宛先が含まれています。 4 番目の列には、ルールの簡単な説明が含まれています。
説明 方向 プロトコル ポートまたは値 ソースまたは宛先
ポッド・サブネットへのインバウンド・トラフィックを許可します。 インバウンド すべて すべて 172.17.0.0/18 (デフォルトのサブネット範囲) またはクラスターの作成時に指定したカスタム・サブネット範囲のいずれか。
自己へのインバウンド・アクセスを許可します。これにより、ワーカー間の通信が可能になります。 インバウンド すべて すべて kube-<clusterID>
インバウンド ICMP (ping) アクセスを許可します。 インバウンド ICMP type=8 0.0.0.0/0
ロードバランサー(ALB/NLB)によってオープンされたノードポートからのインバウンドトラフィックを許可します。 ロード・バランサーが追加または削除されると、ルールは動的に追加または削除されます。 インバウンド TCP ロード・バランサー・ノードのポート。 kube-lbaas-<clusterID>
ポッド・サブネットへのアウトバウンド・トラフィックを許可します。 アウトバウンド すべて すべて 172.17.0.0/18 (デフォルトのサブネット範囲) またはクラスターの作成時に指定したカスタム・サブネット範囲のいずれか。
マスター・コントロール・プレーンへのアウトバウンド・トラフィックを許可します。これにより、ワーカーをプロビジョンできます。 アウトバウンド すべて すべて 161.26.0.0/16
自己へのアウトバウンド・アクセスを許可します。これにより、ワーカー間の通信が可能になります。 アウトバウンド すべて すべて kube-<clusterID>
マスター VPE ゲートウェイ・セキュリティー・グループへのアウトバウンド・トラフィックを許可します。 アウトバウンド すべて すべて kube-vpegw-<clusterID>
共有 VPE ゲートウェイ・セキュリティー・グループへのアウトバウンド・トラフィックを許可します。 アウトバウンド すべて すべて kube-vpegw-<vpcID>
クラスターが配置されている MZR のすべてのゾーンについて、OAuth ポートを介したパブリック・エンドポイントへのトラフィックを許可します。* アウトバウンド TCP Oauth ポート MZR のすべてのゾーンのパブリック・エンドポイント IP。
Ingress ALB を介した TCP トラフィックを許可します アウトバウンド TCP Ports:Min=443,Max=443 ALB パブリック IP アドレス n
ゾーン n のカスタム DNS リゾルバーを介した TCP および UDP トラフィックを許可します。** アウトバウンド TCP/UDP Min=53,Max=53 ゾーン n 内の DNS リゾルバー IP アドレス。
CSE サービス範囲全体へのトラフィックを許可します。 アウトバウンド すべて すべて 166.8.0.0/14
すべてのゾーンの IAM プライベート・エンドポイントへのトラフィックを許可します。 IP は地域によって異なる場合があります。 クラスターが存在するゾーンごとに 1 つのルールが追加されます。 アウトバウンド すべて すべて すべてのゾーンの IAM プライベート・エンドポイント IP アドレス。
4.18 以降 インスタンス・メタデータAPIへのアウトバウンド・トラフィックを許可する。 アウトバウンド すべて すべて 169.254.169.254

* これらのルールは、パブリック・サービス・エンドポイントが有効になっているクラスターにのみ追加され、OAuth ポートを介した OpenShift Web コンソールおよびパブリック・エンドポイントへのアクセスを許可します。 クラスターが配置されているマルチゾーン・リージョン (MZR) のゾーンごとに 1 つのルールが追加されます。 クラスターが 3 つのゾーンを持つ MZR 内にある場合は、3 つのルールが作成されます。

** ハブおよびスポーク VPC は、VPC 上のカスタム DNS リゾルバーを使用します。 トラフィックは、各 DNS リゾルバーの IP アドレスを経由する必要があります。 ポート 53 を介したゾーン (TCP および UDP) ごとに 2 つの規則があります。

マスター VPE ゲートウェイ・セキュリティー・グループ

VPC クラスターを作成すると、クラスターと同じ VPC に仮想プライベート・エンドポイント (VPE) ゲートウェイが作成されます。 セキュリティの名前は kube-vpegw-<clusterID> で、<clusterID> はクラスタのIDです。 このVPEゲートウェイの目的は、IBM Cloudが管理するクラスタ・マスターへのゲートウェイとして機能することです。 VPE ゲートウェイには、クラスターがワーカーを持つ VPC 内の各ゾーンに単一の IP アドレスが割り当てられます。

クラスターのワーカー・ノードからのみクラスターのマスターへのアクセスを許可するために、クラスターのマスター VPE ゲートウェイごとにセキュリティー・グループが作成されます。 その後、クラスター・ワーカー・セキュリティー・グループからクラスター・マスター VPE ゲートウェイ上の必要なポートへの Ingress 接続を許可するリモート・ルールが作成されます。 VPC VPNを経由する接続を含むプライベート接続がクラスタのプライベートサービスエンドポイントVPEゲートウェイに接続する場合、クラスタのアクティブなワーカープールごとにサブネットCIDRからのTCPトラフィックが許可されます。

マスターVPEゲートウェイのセキュリティグループのインバウンドルール
この表は、クラスタワーカーセキュリティグループに適用される受信ルールを示しています。 最初の列には、ルールの目的が含まれています。 2 番目の列には、ルールの方向が含まれています。 3 番目の列にはプロトコルが含まれています。 4 番目の列には、ポートまたは値が含まれています。 5 番目の列には、ルールのリモート宛先が含まれています。
説明 方向 プロトコル ポートまたは値 ソースまたは宛先
クラスター・ワーカー・セキュリティー・グループからサーバー nodeport へのインバウンド・トラフィックを許可します。 インバウンド TCP サーバー URL ノード・ポート kube-<clusterID>
クラスター・ワーカー・セキュリティー・グループから openVPN または Konnectivity ポートへのインバウンド・トラフィックを許可します。 インバウンド TCP コネクティビティ港 kube-<clusterID>
クラスター・ワーカー・セキュリティー・グループから Oauth ポートへのインバウンド・トラフィックを許可します。 インバウンド TCP Oauth ポート kube-<clusterID>
CoreOS-enabledクラスタのみ。 クラスター・ワーカー・セキュリティー・グループから点火サーバー・ポートへのインバウンド・トラフィックを許可します インバウンド TCP Ignition サーバー・ポート kube-<clusterID>
クラスタ内のすべてのアクティブなワーカープールのサブネットからのインバウンドトラフィックを許可します。* インバウンド TCP サーバー URL ノード・ポート サブネット CIDR
クラスタ内のすべてのアクティブなワーカープールのサブネットからのインバウンドトラフィックを許可します。* インバウンド TCP OAuthポート サブネット CIDR

* すべてのアクティブなワーカー プールのサブネットに対して、1つのルールが追加される。 3つのゾーンにワーカーがいる場合、3つのルールが追加されます(ゾーン内の各サブネットに1つずつ)。

共有 VPE ゲートウェイ・セキュリティー・グループ

共有 VPE ゲートウェイは、VPC 内の最初のクラスタが provisioned.The 共有 VPE ゲートウェイ セキュリティ グループは、クラスタを作成するときに作成されます (以前のクラスタからまだ存在していない場合)。 セキュリティグループの名前は kube-vpegw-<vpcID> で、<vpcID> はVPCのIDです。 その後、指定されたクラスターのクラスター・ワーカー・セキュリティー・グループからの Ingress 接続を許可するリモート・ルールが作成されます。 共有 VPE ゲートウェイ・セキュリティー・グループには、その VPC 内のすべてのクラスターによって共有される VPE ゲートウェイが含まれています。 共有 VPE ゲートウェイは、他の IBM Cloud サービスへの接続を可能にするために、後のバージョンで追加されるかもしれません。

クラスターのプロビジョン時にこの共有 VPE ゲートウェイ・セキュリティー・グループが既に存在する場合、その共有 VPE ゲートウェイ・セキュリティー・グループはプロビジョニング・プロセスによって認識され、再作成されません。 ただし、既存の共有 VPE ゲートウェイ・セキュリティー・グループと新規ワーカー・セキュリティー・グループの間には、引き続きリモート・ルールが追加されます。 これは、指定された VPC 内のすべてのクラスターからの接続が許可されるようにするためです。 VPC 内のクラスターごとに 1 つのルールが作成されます。

他のセキュリティー・グループをそのソースまたは宛先としてターゲットにすることができるルールは、最大 15 個です。 デフォルトでは、 Red Hat OpenShift on IBM Cloud は、VPC 内の各クラスターの kube-<clusterID> セキュリティー・グループをターゲットとする 1 つのルールを適用します。 この割り当て量のため、1 つの VPC に作成できるクラスターは 15 個のみです。 詳しくは、 VPC 割り当て量 を参照してください。

共有VPEゲートウェイセキュリティグループのインバウンドルール
この表は、共有VPEゲートウェイのセキュリティグループに適用されるインバウンドルールを示しています。 最初の欄には、ルールの目的が書かれている。 2 番目の列には、ルールの方向が含まれています。 3 番目の列にはプロトコルが含まれています。 4 番目の列には、ルールのリモート宛先が含まれています。
説明 方向 プロトコル ソースまたは宛先
指定されたクラスターからのインバウンド・トラフィックを許可します。 インバウンド TCP kube-<clusterID>

ロード・バランサー・サービス・セキュリティー・グループ

すべてのロード・バランサー (ALB および NLB) に接続されているデフォルトのセキュリティー・グループ。 セキュリティグループの名前は kube-lbaas-<clusterID> で、<clusterID> はクラスタのIDです。 各クラスターは、クラスター内のすべてのロード・バランサーによって共有される独自の固有のセキュリティー・グループを取得します。 以下の例は、単一の ALB を使用するクラスターによってロード・バランサー・セキュリティー・グループに追加されたルールを示しています。 このセキュリティー・グループのルールは、ロード・バランサーが追加、削除、または更新されると、動的に追加または削除されます。 SDNLB は、セキュリティー・グループの接続をサポートしていないことに注意してください。

ロードバランサーのセキュリティグループルール
表は、ロードバランサーセキュリティグループに適用されるルールを示しています。 最初の列には、ルールの目的が含まれています。 2 番目の列には、ルールの方向が含まれています。 3 番目の列にはプロトコルが含まれています。 4 番目の列には、ポートまたは値が含まれています。 5 番目の列には、ルールのリモート宛先が含まれています。
説明 方向 プロトコル ポートまたは値 ソースまたは宛先
ロード・バランサーによって開かれたノード・ポートへのアウトバウンド・アクセスを許可します。 ロード・バランサーによっては、複数のルールが存在する場合があります。 アウトバウンド TCP ロード・バランサーによって開かれた Node ・ポート。 kube-<clusterID>
ロード・バランサーは、ポート 80 で listen し、そのポートからのインバウンド・アクセスを許可します。 インバウンド TCP パブリック LB ポート。 例 80 0.0.0.0/0
ロード・バランサーは、ポート 443 で listen し、そのポートからのインバウンド・アクセスを許可します。 インバウンド TCP パブリック LB ポート。 例 443 0.0.0.0/0

制限

ワーカー・ノードのセキュリティー・グループ
VPC クラスタのワーカーノードはサービスアカウントに存在し、VPC インフラストラクチャのダッシュボードには表示されないため、セキュリティグループを作成してワーカーノードインスタンスに適用することはできません。 変更できるのは、既存の kube-<clusterID> セキュリティグループのみです。
ロギングおよびモニタリング
4.15 以降のクラスターでロギングとモニタリングをセットアップする場合は、クラスターにロギング・エージェントをインストールするときにプライベート・サービス・エンドポイントを使用する必要があります。 パブリック・エンドポイントが使用されている場合、ログ・データは保存されません。
RHCOS ワーカー・ノードを使用したクラスターのモニター
モニター・エージェントはオペレーティング・システムのカーネル・ヘッダーに依存していますが、RHCOS にはカーネル・ヘッダーがありません。 このシナリオでは、エージェントは sysdig.com に戻り、プリコンパイルされたエージェントを使用します。 パブリック・ネットワーク・アクセスがないクラスターでは、このプロセスは失敗します。 RHCOS クラスターでのモニターを可能にするには、アウトバウンド・トラフィックを許可するか、 エアギャップ環境へのエージェントのインストールに関する Sysdig 資料を参照する必要があります。
VPC クラスターの割り当て量
他のセキュリティー・グループをそのソースまたは宛先としてターゲットにすることができるルールは、最大 15 個です。 デフォルトでは、 Red Hat OpenShift on IBM Cloud は、VPC 内の各クラスターの kube-<clusterID> セキュリティー・グループをターゲットとする 1 つのルールを適用します。 この割り当て量のため、1 つの VPC に作成できるクラスターは 15 個のみです。 詳しくは、 VPC 割り当て量 を参照してください。
VPC File Storage。
Secure by DefaultクラスタでEITを使用するには、 kube-<clusterID> セキュリティグループに以下の送信ルールを追加する必要があります。
  • プロトコル任意
  • ソースの種類任意
  • ソース 0.0.0.0/0
  • 目的地 169.254.169.254.
パブリック・ネットワークを介した通信のバックアップ
VPC クラスター・ワーカーは、プライベート・ネットワークを使用してクラスター・マスターと通信します。 以前は、パブリック・サービス・エンドポイントが有効になっている VPC クラスターでは、プライベート・ネットワークがブロックまたは使用不可の場合、クラスター・ワーカーは、パブリック・ネットワークを使用してクラスター・マスターと通信するようにフォールバックできました。 Secure by Default クラスターでは、クラスター・ワーカーからのパブリック・アウトバウンド・トラフィックがブロックされるため、パブリック・ネットワークへのフォールバックはオプションではありません。 このパブリック・ネットワーク・バックアップ・オプションを許可するために、アウトバウンド・トラフィック保護を無効にすることをお勧めします。ただし、より適切な方法があります。 代わりに、プライベート・ネットワークを介したワーカーとマスターの間の接続に一時的な問題がある場合は、その時点で、 kube-clusterID セキュリティー・グループに一時的なセキュリティー・グループ・ルールを追加して、クラスター・マスターの apiserver ポートへのアウトバウンド・トラフィックを許可することができます。 後で問題が解決されたら、一時ルールを削除できます。
OpenShift Data Foundation および Portworx の暗号化
パブリック・ネットワーク・アクセス権限のないクラスターで OpenShift Data Foundation または Portworx を使用する予定で、 Hyper Protect Crypto Services または Key Protect を暗号化のために使用する場合は、仮想プライベート・プライベート・ゲートウェイを作成する必要があります。 VPC 内の各サブネットから少なくとも 1 つの IP アドレスを VPE にバインドしてください。