第7章 ネットワークポリシーの管理
Kubernetes ネットワークポリシー は、Pod のグループを相互およびその他のネットワークエンドポイントと通信できるようにする仕様です。これらのネットワークポリシーは YAML ファイルとして設定されます。これらのファイルだけを見ると、適用されたネットワークポリシーが目的のネットワークトポロジーを実現しているかどうかを特定するのが難しいことがよくあります。
Red Hat Advanced Cluster Security for Kubernetes (RHACS) は、定義されたすべてのネットワークポリシーをオーケストレーターから収集し、これらのポリシーを使いやすくするツールを備えています。
ネットワークポリシーの適用をサポートするために、RHACS は次のツールを提供します。
- ネットワークグラフ
- ネットワークポリシージェネレーター
- ネットワークポリシーシミュレーター
- ビルド時のネットワークポリシージェネレーター
7.1. ネットワークグラフ リンクのコピーリンクがクリップボードにコピーされました!
7.1.1. ネットワークグラフについて リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフは、環境内のデプロイメント、ネットワークフロー、およびネットワークポリシーに関する高レベルの詳細情報を提供します。
RHACS は、それぞれのセキュアクラスター内のすべてのネットワークポリシーを処理して、どのデプロイメントが相互に通信できるか、またどのデプロイメントが外部ネットワークに到達できるかを示します。また、実行中のデプロイメントを監視し、デプロイメント間のトラフィックを追跡します。ネットワークグラフでは次の項目を表示できます。
- 内部エンティティー
- これらは、RFC 1918 で定義されているプライベートアドレス空間に属する IP アドレスとデプロイメント間の接続を表します。詳細は、「内部エンティティーが関係する接続」を参照してください。
- 外部エンティティー
- これらは、RFC 1918 で定義されているプライベートアドレス空間に属さない IP アドレスとデプロイメント間の接続を表します。詳細は、「ネットワークグラフの外部エンティティーおよび接続」を参照してください。
- ネットワークコンポーネント
- 上部のメニューから、選択したクラスター (CL ラベルで示される) のグラフに表示する namespace (NS ラベルで示される) とデプロイメント (D ラベルで示される) を選択できます。ドロップダウンリストを使用し、Common Vulnerabilities and Exposures (CVE)、ラベル、イメージなどのフィルタリングの条件を選択することで、デプロイメントをさらにフィルタリングできます。
- ネットワークフロー
- グラフには次のいずれかのフローを選択できます。
- アクティブなトラフィック
- このデフォルトオプションを選択すると、選択した namespace または特定のデプロイメントに焦点を当てた、観測されたトラフィックが表示されます。情報を表示する期間を選択できます。
- 非アクティブなフロー
- このオプションを選択すると、ネットワークポリシーで許可されている潜在的なフローが表示され、より厳密な分離を実現するために必要な欠落しているネットワークポリシーを特定するのに役立ちます。情報を表示する期間を選択できます。
- ネットワークポリシー
- 選択したコンポーネントの既存のポリシーを表示したり、ポリシーのないコンポーネントを表示したりできます。ネットワークグラフビューからネットワークポリシーをシミュレーションすることもできます。詳細は、”ネットワークグラフからのネットワークポリシーのシミュレーション” を参照してください。
7.1.1.2. ネットワークグラフの外部エンティティーおよび接続 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフビューには、マネージドクラスターと外部ソース間のネットワーク接続が表示されます。さらに、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 ブロックを毎日更新します。オフラインモードを使用している場合は、新しいサポートパッケージをインストールしてこれらの範囲を更新できます。
次の図は、ネットワークグラフの例を示しています。この例では、ユーザーが選択したオプションに基づいて、選択した namespace 内のデプロイメントがグラフに表示されています。トラフィックフローは、デプロイメントなどの項目をクリックするまで表示されません。グラフでは赤いバッジを使用して、ポリシーが欠落しているため、すべてのネットワークトラフィックが許可されているデプロイメントを示します。
7.1.1.3. 内部エンティティーに関連する接続 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフは、既知のデプロイメントまたは CIDR ブロックに属さないエンティティーへのアクティブな接続を持つデプロイメントを識別するのに役立ちます。このような接続の一部は、クラスターの外部に到達することなく、クラスターのプライベートネットワーク内で確立されます。ネットワークグラフは、そのような接続を 内部エンティティー への接続または内部エンティティーからの接続として表します。
内部エンティティーとの接続は、RFC 1918 で定義されているように、プライベートアドレス空間に属する IP アドレスとデプロイメントの間の接続を表します。場合によっては、接続に関係する一方または両方のデプロイメントを Sensor が識別できないことがあります。その場合、システムが IP アドレスを分析し、接続が内部か外部かを判断します。
次の場合、接続が内部エンティティーに関係するものとして分類されることがあります。
- 接続を開始する側 (クライアント) が接続を試みている間に、IP アドレスが変更されるか、接続を受け入れるデプロイメント (サーバー) が削除された。
- オーケストレーター API と通信するデプロイメント。
- Calico などのネットワーク CNI プラグインを使用して通信するデプロイメント。
- Sensor の再起動により、過去のデプロイメントへの IP アドレスのマッピングがリセットされた。たとえば、Sensor が過去のエンティティーの IP アドレスまたは既存のエンティティーの過去の IP アドレスを認識しない場合などです。
- オーケストレーターによって管理されていないエンティティー (場合によっては、クラスター外部エンティティー と見なされるもの) が関係するが、RFC 1918 で定義されているプライベートアドレス空間の IP アドレスを使用している接続。
内部エンティティーは、次の図に示すアイコンで示されます。Internal entities をクリックすると、これらのエンティティーのフローが表示されます。
図7.4 内部エンティティーの例
7.1.2. アクセス制御およびパーミッション リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフを表示するには、ユーザーは少なくとも Network Graph Viewer のデフォルト権限セットに付与された権限を持っている必要があります。
以下のパーミッションが Network Graph Viewer パーミッションセットに付与されます。
-
Deployment
の読み取り -
NetworkGraph
の読み取り -
NetworkPolicy
の読み取り
詳細は、「関連情報」セクションの「システム権限セット」を参照してください。
関連情報
7.1.3. デプロイメント情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフは、RHACS が検出したデプロイメント、namespace、接続の視覚的なマップを提供します。グラフ内のデプロイメントをクリックすると、次の詳細を含むデプロイメントに関する情報を表示できます。
- ネットワークセキュリティー (フローの数、既存または欠落しているネットワークポリシールール、リスニングポートなど)
- ラベルとアノテーション
- ポート設定
- コンテナー情報
- プロトコルとポート番号を含む、イングレスおよびエグレス接続の異常なフローとベースラインフロー
- ネットワークポリシー
手順
namespace 内のデプロイメントの詳細を表示するには:
- RHACS ポータルで、Network Graph に移動し、ドロップダウンリストからクラスターを選択します。
- Namespaces リストをクリックし、検索フィールドを使用して namespace を見つけるか、個々の namespace を選択します。
- Deployments リストをクリックし、検索フィールドを使用してデプロイメントを見つけるか、ネットワークグラフに表示する個々のデプロイメントを選択します。
- ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
- Details、Flows、Baseline、または Network policies タブをクリックして、対応する情報を表示します。
7.1.4. ネットワークグラフでのネットワークポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークポリシーでは、Pod のグループ間および他のネットワークのエンドポイントとの間で許可される通信を指定します。Kubernetes NetworkPolicy
リソースはラベルを使用して Pod を選択し、選択した Pod との間で許可されるトラフィックを指定するルールを定義します。RHACS は、すべての Kubernetes クラスター、namespace、デプロイメント、および Pod のネットワークポリシー情報を検出し、ネットワークグラフに表示します。
手順
- RHACS ポータルで、Network Graph に移動し、ドロップダウンリストからクラスターを選択します。
- Namespaces リストをクリックして個々の namespace を選択するか、検索フィールドを使用して namespace を検索します。
- Deployments 一覧をクリックして個別のデプロイメントを選択するか、検索フィールドを使用してデプロイメントを特定します。
- ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
Details タブの Network security セクションで、次の情報を示すネットワークポリシールールに関する概要メッセージを表示できます。
- イングレスまたはエグレストラフィックを規制するポリシーがネットワークに存在する場合
- ネットワークにポリシーがないため、すべてのイングレスまたはエグレストラフィックが許可されている場合
- ネットワークポリシーの YAML ファイルを表示するには、ポリシールールをクリックするか、Network policies タブをクリックします。
7.1.5. ネットワークグラフでの CIDR ブロックの設定 リンクのコピーリンクがクリップボードにコピーされました!
カスタム CIDR ブロックを指定したり、ネットワークグラフで自動検出された CIDR ブロックの表示を設定したりできます。
手順
RHACS ポータルで Network Graph に移動し、Manage CIDR Blocks を選択します。次のアクションを実行できます。
Auto-discovered CIDR blocks を切り替えて、ネットワークグラフで自動検出された CIDR ブロックを非表示にします。
注記自動検出された CIDR ブロックを非表示にすると、ネットワークグラフで選択したクラスターだけでなく、すべてのクラスターに対して自動検出された CIDR ブロックが非表示になります。
次の手順を実行して、カスタム CIDR ブロックをグラフに追加します。
- フィールドに CIDR 名と CIDR アドレスを入力します。追加の CIDR ブロックを追加するには、Add CIDR block をクリックし、各ブロックの情報を入力します。
- 設定の更新 をクリックして変更を保存します。