第8章 ネットワークポリシーの管理
Kubernetes ネットワークポリシー は、Pod のグループを相互およびその他のネットワークエンドポイントと通信できるようにする仕様です。これらのネットワークポリシーは YAML ファイルとして設定されます。これらのファイルだけを見ると、適用されたネットワークポリシーが目的のネットワークトポロジーを実現しているかどうかを特定するのが難しいことがよくあります。
Red Hat Advanced Cluster Security for Kubernetes (RHACS) は、定義されたすべてのネットワークポリシーをオーケストレーターから収集し、これらのポリシーを使いやすくするツールを提供します。
ネットワークポリシーの適用をサポートするために、RHACS は次のツールを提供します。
- ネットワークグラフ
- ネットワークポリシージェネレーター
- ネットワークポリシーシミュレーター
- ビルド時のネットワークポリシージェネレーター
8.1. ネットワークグラフ リンクのコピーリンクがクリップボードにコピーされました!
8.1.1. ネットワークグラフについて リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフは、環境内のデプロイメント、ネットワークフロー、およびネットワークポリシーに関する高レベルの詳細情報を提供します。
RHACS は、それぞれのセキュアクラスター内のすべてのネットワークポリシーを処理して、どのデプロイメントが相互に通信できるか、またどのデプロイメントが外部ネットワークに到達できるかを示します。また、実行中のデプロイメントを監視し、デプロイメント間のトラフィックを追跡します。ネットワークグラフでは次の項目を表示できます。
- ネットワークコンポーネント
- 上部のメニューから、選択したクラスター (CL ラベルで示される) のグラフに表示する namespace (NS ラベルで示される) とデプロイメント (D ラベルで示される) を選択できます。ドロップダウンリストを使用し、Common Vulnerabilities and Exposures (CVE)、ラベル、イメージなどのフィルタリングの条件を選択することで、デプロイメントをさらにフィルタリングできます。
- 外部エンティティー
- これらは、クラスターの外部に接続されているエンティティーを表します。詳細は、ネットワークグラフの外部エンティティーおよび接続を参照してください。
- ネットワークポリシー
- 選択したコンポーネントの既存のポリシーを表示したり、ポリシーのないコンポーネントを表示したりできます。
- ネットワークフロー
- グラフには次のいずれかのフローを選択できます。
- アクティブなトラフィック
- このデフォルトオプションを選択すると、選択した名前空間または特定のデプロイメントに焦点を当てた、観測されたトラフィックが表示されます。情報を表示する期間を選択できます。
- 非アクティブなフロー
- このオプションを選択すると、ネットワークポリシーで許可されている潜在的なフローが表示され、より厳密な分離を実現するために必要な欠落しているネットワークポリシーを特定するのに役立ちます。情報を表示する期間を選択できます。
ネットワークグラフビューからネットワークポリシーをシミュレーションすることもできます。詳細は、”ネットワークグラフからのネットワークポリシーのシミュレーション” を参照してください。
ネットワークグラフのナビゲーションとユーザーインターフェイス
- グラフ内の項目をクリックすると、コンポーネントに関する追加情報を表示したり、ベースラインにネットワークフローを追加するなどのアクションを実行したりできます。
- 凡例を開くと、使用されているシンボルとその意味に関する情報が表示されます。凡例には、ネットワークグラフ上の namespace、デプロイメント、および接続を表す記号の説明テキストが表示されます。
- ドロップダウンリストから追加の表示オプションを選択すると、ネットワークポリシーステータスバッジ、アクティブな外部トラフィックバッジ、エッジ接続のポートおよびプロトコルラベルなどのアイコンをグラフに表示するかどうかを制御します。
- RHACS は、ノードの参加または離脱など、ネットワークトラフィックの変化を検出します。変更が検出されると、ネットワークグラフに利用可能な更新の数を示す通知が表示されます。集中力が中断されないように、グラフは自動的には更新されません。通知をクリックしてグラフを更新します。
ネットワークグラフの外部エンティティーおよび接続
ネットワークグラフビューには、マネージドクラスターと外部ソース間のネットワーク接続が表示されます。さらに、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 ネットワークグラフの例
グラフ内の項目をクリックすると、折りたたみ可能なセクションを含む再配置されたサイドパネルに、その項目に関する情報が表示されます。次の項目をクリックできます。
- デプロイメント
- namespace
- 外部エンティティー
- CIDR ブロック
- 外部グループ
サイドパネルには、選択したグラフ内の項目に基づいた関連情報が表示されます。ヘッダー内の項目名の横にある D または NS ラベル (この例では visa-processor) は、それがデプロイメントであるか namespace であるかを示します。以下の例は、デプロイメントのサイドパネルを示しています。
図8.2 デプロイメントの例のサイドパネル
名前空間を表示すると、サイドパネルに検索バーとデプロイメントのリストが含まれます。デプロイメントをクリックして、その情報を表示できます。サイドパネルには Network policies タブも含まれます。このタブから、次の例に示すように、その namespace で定義されているネットワークポリシーを表示、クリップボードにコピー、またはエクスポートできます。
図8.3 namespace の例のサイドパネル
8.1.2. アクセス制御およびパーミッション リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフを表示するには、ユーザーは少なくとも Network Graph Viewer のデフォルト権限セットに付与された権限を持っている必要があります。
以下のパーミッションが Network Graph Viewer パーミッションセットに付与されます。
-
Deployment
の読み取り -
NetworkGraph
の読み取り -
NetworkPolicy
の読み取り
詳細は、関連情報セクションの「システム権限セット」を参照してください。
関連情報
8.1.3. デプロイメント情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークグラフは、RHACS が検出したデプロイメント、namespace、接続の視覚的なマップを提供します。グラフ内のデプロイメントをクリックすると、次の詳細を含むデプロイメントに関する情報を表示できます。
- ネットワークセキュリティー (フローの数、既存または欠落しているネットワークポリシールール、リスニングポートなど)
- ラベルとアノテーション
- ポート設定
- コンテナー情報
- プロトコルとポート番号を含む、イングレスおよびエグレス接続の異常なフローとベースラインフロー
- ネットワークポリシー
手順
namespace 内のデプロイメントの詳細を表示するには:
- RHACS ポータルで、Network Graph に移動し、ドロップダウンリストからクラスターを選択します。
- Namespaces リストをクリックし、検索フィールドを使用して namespace を見つけるか、個々の namespace を選択します。
- Deployments リストをクリックし、検索フィールドを使用してデプロイメントを見つけるか、ネットワークグラフに表示する個々のデプロイメントを選択します。
- ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
- Details、Flows、Baseline、または Network policies タブをクリックして、対応する情報を表示します。
8.1.4. ネットワークグラフでのネットワークポリシーの表示 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークポリシーでは、Pod のグループ間および他のネットワークのエンドポイントとの間で許可される通信を指定します。Kubernetes NetworkPolicy
リソースはラベルを使用して Pod を選択し、選択した Pod との間で許可されるトラフィックを指定するルールを定義します。RHACS は、すべての Kubernetes クラスター、namespace、デプロイメント、および Pod のネットワークポリシー情報を検出し、ネットワークグラフに表示します。
手順
- RHACS ポータルで、Network Graph に移動し、ドロップダウンリストからクラスターを選択します。
- Namespaces 一覧をクリックして個別の名前空間を選択するか、または検索フィールドを使用して名前空間を見つけます。
- Deployments 一覧をクリックして個別のデプロイメントを選択するか、検索フィールドを使用してデプロイメントを特定します。
- ネットワークグラフでデプロイメントをクリックして情報パネルを表示します。
Details タブの Network security セクションで、次の情報を示すネットワークポリシールールに関する概要メッセージを表示できます。
- イングレスまたはエグレストラフィックを規制するポリシーがネットワークに存在する場合
- ネットワークにポリシーがないため、すべてのイングレスまたはエグレストラフィックが許可されている場合
- ネットワークポリシーの YAML ファイルを表示するには、ポリシールールをクリックするか、Network policies タブをクリックします。
8.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 をクリックし、各ブロックの情報を入力します。
- 設定の更新 をクリックして変更を保存します。