第8章 ネットワークポリシーの管理

Kubernetes ネットワークポリシー は、Pod のグループを相互およびその他のネットワークエンドポイントと通信できるようにする仕様です。これらのネットワークポリシーは YAML ファイルとして設定されます。これらのファイルだけを見ると、適用されたネットワークポリシーが目的のネットワークトポロジーを実現しているかどうかを特定するのが難しいことがよくあります。

Red Hat Advanced Cluster Security for Kubernetes (RHACS) は、定義されたすべてのネットワークポリシーをオーケストレーターから収集し、これらのポリシーを使いやすくするツールを提供します。

ネットワークポリシーの適用をサポートするために、RHACS は次のツールを提供します。

  • ネットワークグラフ
  • ネットワークポリシーシミュレーター
  • ネットワークポリシージェネレーター
  • ビルド時のネットワークポリシージェネレーター
注記

このドキュメントではネットワークグラフ (1.0) について説明します。これは RHACS 4.0 で非推奨となり、将来のリリースで削除される予定です。また、RHACS 3.74 および 4.0 でテクノロジープレビューとして提供されるネットワークグラフ (2.0 プレビュー) についても説明します。

8.1. ネットワークグラフ (2.0 プレビュー)

ネットワークグラフ (2.0 プレビュー) は RHACS 3.74 および 4.0 で提供され、テクノロジープレビュー機能です。

8.1.1. ネットワークグラフ (2.0 プレビュー) について

ネットワークグラフは、環境内のデプロイメント、ネットワークフロー、およびネットワークポリシーに関する高レベルの詳細情報を提供します。

重要

ネットワークグラフ 2.0 はテクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

RHACS は、それぞれのセキュアなクラスター内のすべてのネットワークポリシーを処理して、どのデプロイメントが相互に通信できるか、またどのデプロイメントが外部ネットワークに到達できるかを示します。また、実行中のデプロイメントを監視し、デプロイメント間のトラフィックを追跡します。ネットワークグラフでは次の項目を表示できます。

ネットワークコンポーネント
上部のメニューから、選択したクラスター (CL ラベルで示される) のグラフに表示する namespace (NS ラベルで示される) とデプロイメント (D ラベルで示される) を選択できます。ドロップダウンリストを使用し、Common Vulnerabilities and Exposures (CVE)、ラベル、イメージなどのフィルタリングの条件を選択することで、デプロイメントをさらにフィルタリングできます。
外部エンティティー
これらは、クラスターの外部に接続されているエンティティーを表します。詳細については、「ネットワークグラフ (2.0 プレビュー) の外部エンティティーと接続」を参照してください。
ネットワークポリシー
選択したコンポーネントの既存のポリシーを表示したり、ポリシーのないコンポーネントを表示したりできます。
ネットワークフロー
グラフには次のいずれかのフローを選択できます。
アクティブなトラフィック
このデフォルトオプションを選択すると、選択した名前空間または特定のデプロイメントに焦点を当てた、観測されたトラフィックが表示されます。情報を表示する期間を選択できます。
非アクティブなフロー
このオプションを選択すると、ネットワークポリシーで許可されている潜在的なフローが表示され、より厳密な分離を実現するために必要な欠落しているネットワークポリシーを特定するのに役立ちます。情報を表示する期間を選択できます。

ネットワークグラフビューからネットワークポリシーをシミュレーションすることもできます。詳細については、「バージョン 1.0 または 2.0 プレビューのネットワークグラフからのネットワークポリシーのシミュレーション」を参照してください。

  • グラフ内の項目をクリックすると、コンポーネントに関する追加情報を表示したり、ベースラインにネットワークフローを追加するなどのアクションを実行したりできます。
  • 凡例を開くと、使用されているシンボルとその意味に関する情報が表示されます。legend には、ネットワークグラフ上の namespace、デプロイ、および接続を表す記号の説明テキストが表示されます。
  • ドロップダウンリストから追加の表示オプションを選択すると、ネットワークポリシーステータスバッジ、アクティブな外部トラフィックバッジ、エッジ接続のポートおよびプロトコルラベルなどのアイコンをグラフに表示するかどうかを制御します。
  • RHACS は、ノードの参加または離脱など、ネットワークトラフィックの変化を検出します。変更が検出されると、ネットワークグラフに利用可能な更新の数を示す通知が表示されます。集中力が中断されないように、グラフは自動的には更新されません。通知をクリックしてグラフを更新します。
ネットワークグラフ (2.0 プレビュー) 内の外部エンティティーと接続

ネットワークグラフビューには、マネージドクラスターと外部ソース間のネットワーク接続が表示されます。さらに、RHACS は、Google Cloud、AWS、Microsoft Azure、Oracle Cloud、Cloudflare などのパブリッククラスレスドメイン間ルーティング (CIDR) アドレスブロックを自動的に検出して強調表示します。この情報を使用すると、アクティブな外部接続のあるデプロイメントを特定し、ネットワークの外部から不正な接続を行っているかどうかを判断できます。

デフォルトでは、外部接続は、ネットワークグラフ内の共通の External Entities アイコンと異なる CIDR アドレスブロックを指します。ただし、Manage CIDR blocks をクリックし、Auto-discovered CIDR blocks を選択解除すると、自動検出された CIDR ブロックを表示しないように選択できます。

RHACS には、次のクラウドプロバイダーの IP 範囲が含まれています。

  • Google Cloud
  • AWS
  • Microsoft Azure
  • Oracle Cloud
  • Cloudflare

RHACS は、クラウドプロバイダーの IP 範囲を 7 日ごとに取得して更新し、CIDR ブロックを毎日更新します。オフラインモードを使用している場合は、新しいサポートパッケージをインストールしてこれらの範囲を更新できます。

次の図は、ネットワークグラフの例を示しています。この例では、ユーザーが選択したオプションに基づいて、選択した名前空間でのデプロイメントがグラフに表示されます。トラフィックフローは、デプロイメントなどの項目をクリックするまで表示されません。グラフでは赤いバッジを使用して、ポリシーが欠落しているため、すべてのネットワークトラフィックが許可されているデプロイメントを示します。

図8.1 ネットワークグラフの例

デプロイメントを示すネットワークグラフの概要

グラフ内の項目をクリックすると、折りたたみ可能なセクションを含む再配置されたサイドパネルに、その項目に関する情報が表示されます。次の項目をクリックできます。

  • デプロイメント
  • Namespaces
  • 外部エンティティー
  • CIDR ブロック
  • 外部グループ

サイドパネルには、選択したグラフ内の項目に基づいた関連情報が表示されます。ヘッダー内の項目名の横にある D または NS ラベル (この例では postgres) は、それがデプロイメントであるか namespace であるかを示します。次の例は、デプロイメントモードを示しています。

図8.2 デプロイメントの例のサイドパネル

デプロイメントのサイドパネル

namespace モードでは、サイドパネルに検索バーとデプロイメントのリストが含まれます。デプロイメントをクリックして、その情報を表示できます。namespace モードでは、サイドパネルに Network policies タブも含まれます。このタブから、次の例に示すように、その namespace で定義されているネットワークポリシーを表示、クリップボードにコピー、またはエクスポートできます。

図8.3 namespace の例のサイドパネル

ネットワークポリシー情報を表示する namespace のサイドパネル

8.1.2. デプロイメント情報の表示

ネットワークグラフは、RHACS が検出したデプロイメント、namespace、接続の視覚的なマップを提供します。グラフ内のデプロイメントをクリックすると、次の詳細を含むデプロイメントに関する情報を表示できます。

  • ネットワークセキュリティー (フローの数、既存または欠落しているネットワークポリシールール、リスニングポートなど)
  • ラベルとアノテーション
  • ポート設定
  • コンテナー情報
  • プロトコルとポート番号を含む、イングレスおよびエグレス接続の異常なフローとベースラインフロー
  • ネットワークポリシー

手順

namespace 内のデプロイメントの詳細を表示するには:

  1. RHACS ポータルで、Network Graph (2.0 preview) に移動し、ドロップダウンリストからクラスターを選択します。
  2. Namespace リストをクリックし、検索フィールドを使用して namespace を見つけるか、個々の namespace を選択します。
  3. Deployments リストをクリックし、検索フィールドを使用してデプロイメントを見つけるか、ネットワークグラフに表示する個々のデプロイメントを選択します。
  4. ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
  5. DetailsFlowsBaseline、または Network policies タブをクリックして、対応する情報を表示します。

8.1.2.1. ネットワークグラフ (2.0 プレビュー) でのネットワークポリシーの表示

ネットワークポリシーでは、Pod のグループ間および他のネットワークのエンドポイントとの間で許可される通信を指定します。Kubernetes NetworkPolicy リソースはラベルを使用して Pod を選択し、選択した Pod との間で許可されるトラフィックを指定するルールを定義します。RHACS は、すべての Kubernetes クラスター、namespace、デプロイメント、および Pod のネットワークポリシー情報を検出し、ネットワークグラフに表示します。

手順

  1. RHACS ポータルで、Network Graph (2.0 preview) に移動し、ドロップダウンリストからクラスターを選択します。
  2. Namespace リストをクリックし、検索フィールドを使用して namespace を見つけるか、個々の namespace を選択します。
  3. Deployments リストをクリックし、検索フィールドを使用してデプロイメントを見つけるか、ネットワークグラフに表示する個々のデプロイメントを選択します。
  4. ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
  5. Details タブの Network security セクションで、次の情報を示すネットワークポリシールールに関する概要メッセージを表示できます。

    • イングレスまたはエグレストラフィックを規制するポリシーがネットワークに存在する場合
    • ネットワークにポリシーがないため、すべてのイングレスまたはエグレストラフィックが許可されている場合
  6. ネットワークポリシーの YAML ファイルを表示するには、ポリシールールをクリックするか、Network policies タブをクリックします。

8.1.3. ネットワークグラフ (2.0 プレビュー) での CIDR ブロックの設定

カスタム CIDR ブロックを指定したり、ネットワークグラフで自動検出された CIDR ブロックの表示を設定したりできます。

手順

  1. RHACS ポータルで、Network Graph (2.0 preview) に移動し、Manage CIDR Blocks を選択します。次のアクションを実行できます。

    • Auto-discovered CIDR blocks を切り替えて、ネットワークグラフで自動検出された CIDR ブロックを非表示にします。

      注記

      自動検出された CIDR ブロックを非表示にすると、ネットワークグラフの上部のバーで選択したクラスターだけでなく、すべてのクラスターに対して自動検出された CIDR ブロックが非表示になります。

    • 次の手順を実行して、カスタム CIDR ブロックをグラフに追加します。

      1. フィールドに CIDR 名と CIDR アドレスを入力します。追加の CIDR ブロックを追加するには、Add CIDR block をクリックし、各ブロックの情報を入力します。
      2. 設定の更新 をクリックして変更を保存します。

8.1.4. ネットワークグラフ (2.0 プレビュー) からのネットワークポリシーのシミュレーション

現在のネットワークポリシーでは、不要なネットワーク通信が許可される可能性があります。新しいネットワークポリシーのセットの影響をシミュレートするには、ネットワークポリシーシミュレーターを使用します。ネットワークポリシーシミュレーターを使用してポリシーを生成する方法については、「ネットワークグラフ (2.0 プレビュー) でのネットワークポリシーの生成」を参照してください。

手順

  1. RHACS ポータルで、Network Graph (2.0 preview) に移動します。
  2. クラスターを選択し、1 つ以上の namespace を選択します。
  3. ネットワークグラフのヘッダーで、Simulate network policy を選択します。
  4. オプション: Generate and simulate network policies をクリックして、シミュレーションで使用するネットワークポリシーを含む YAML ファイルを生成します。詳細については、「ネットワークグラフ (2.0 プレビュー) でのネットワークポリシーの生成」を参照してください。
  5. シミュレーションで使用するネットワークポリシーの YAML ファイルをアップロードします。ネットワークグラフビューには、提案されたネットワークポリシーが何を達成するかが表示されます。以下の手順を実行します。

    1. Upload YAML をクリックし、ファイルを選択します。
    2. 開く をクリックします。システムは、アップロードされたポリシーの処理ステータスを示すメッセージを表示します。
  6. 現在のネットワークポリシーに対応するアクティブな YAML ファイルを表示するには、View active YAMLS タブをクリックし、ドロップダウンリストからポリシーを選択します。次のアクションを実行することもできます。

    • 適切なボタンをクリックして、表示された YAML ファイルをコピーまたはダウンロードします。
    • Actions メニューを使用して、アクティブなトラフィックからルールを再構築するか、以前に適用された YAML にルールを戻します。詳細については、「ネットワークグラフ (2.0 プレビュー) からのネットワークポリシーの生成」を参照してください。

      警告

      ネットワークポリシーを直接適用すると、アプリケーションの実行で問題が発生する可能性があります。実稼働環境のワークロードに適用する前に、常に開発環境またはテストクラスターでネットワークポリシーをダウンロードし、テストします。