8.5. ポリシーの生成について
Kubernetes ネットワークポリシーは、受信ネットワークトラフィックを受信する Pod と、送信トラフィックを送信する Pod を制御します。ネットワークポリシーを使用して Pod へのトラフィックを有効にし、無効にすることで、ネットワークの攻撃エリアを制限できます。
これらのネットワークポリシーは YAML 設定ファイルです。通常、ネットワークフローに関するインサイトを得て、手動でこれらのファイルを作成するのは困難です。Red Hat Advanced Cluster Security for Kubernetes (RHACS) を使用して、これらのファイルを生成できます。ネットワークポリシーを自動生成する場合、RHACS は次のガイドラインに従います。
RHACS は、namespace 内のデプロイメントごとに単一のネットワークポリシーを生成します。ポリシーの Pod セレクターは、デプロイメントの Pod セレクターです。
- デプロイメントにすでにネットワークポリシーがある場合、RHACS は新しいポリシーを生成したり、既存のポリシーを削除したりしません。
生成されたポリシーは、トラフィックを既存のデプロイメントに制限するだけです。
- 後で作成するデプロイメントには、新しいネットワークポリシーを作成または生成しないかぎり、制限はありません。
- 新しいデプロイメントでネットワークポリシーを使用してデプロイメントに接続する必要がある場合は、ネットワークポリシーを編集してアクセスを許可する必要があります。
-
各ポリシーにはデプロイメント名と同じ名前が付けられ、その後に
stackrox-generated-が付けられます。たとえば、生成されたネットワークポリシーのデプロイメントdepABCのポリシー名はstackrox-generated-depABCです。生成されたすべてのポリシーには、識別ラベルもあります。 RHACS は、次の条件のいずれかが満たされる場合に、任意の IP アドレスからのトラフィックを許可する単一のルールを生成します。
- デプロイメントに、選択した時間内にクラスターの外部からの受信接続がある場合
- デプロイメントがノードポートまたはロードバランサーサービスを通じて公開される場合
RHACS は、受信接続が存在するデプロイメントごとに 1 つの
ingressルールを生成します。- デプロイメントが同じ namespace にある場合には、このルールは他のデプロイメントの Pod セレクターラベルを使用します。
-
デプロイメントが異なる namespace にある場合には、このルールは namespace セレクターを使用します。これを可能にするために、RHACS はラベル
namespace.metadata.stackrox.io/nameを各 namespace に自動的に追加します。
スタンドアロン Pod にラベルがない場合には、生成されたポリシーは Pod の全体的な namespace からのトラフィックを許可します。
8.5.1. ネットワークグラフ (1.0) からのネットワークポリシーの生成
Kubernetes ネットワークポリシーは、受信ネットワークトラフィックを受信する Pod と、送信トラフィックを送信する Pod を制御します。ネットワークポリシーを使用して Pod へのトラフィックを有効にし、無効にすることで、ネットワークの攻撃エリアを制限できます。
これらのネットワークポリシーは YAML 設定ファイルです。通常、ネットワークフローに関するインサイトを得て、手動でこれらのファイルを作成するのは困難です。Red Hat Advanced Cluster Security for Kubernetes を使用すると、環境内で実際に観察されたネットワーク通信フローに基づいて、これらのネットワークポリシーを自動的に生成できます。
ネットワークグラフビューからネットワークポリシーを生成できます。
生成されたポリシーは、ネットワークグラフに表示されるデプロイメントに適用され、選択した時間に確認されたすべてのネットワークトラフィックを許可します。
手順
- RHACS ポータルで、Network Graph に移動します。
- 正しいクラスター名がまだ選択されていない場合は、上部のバーのメニューからクラスター名を選択します。
- namespace を 1 つ以上選択します。
- 一部のデプロイメントに対してのみポリシーを生成する場合は、Add one or more deployment filters フィールドを使用して、デプロイメントをフィルターする条件を追加します。フィルターを追加しない場合には、Red Hat Advanced Cluster Security for Kubernetes はクラスター内のすべてのデプロイメントのポリシーを生成します。
- 上部のバーのメニューから適切な時間を選択します。選択した時間が短すぎる場合、定期的または低頻度のネットワーク通信が省略されます。
- Network Policy Simulator を選択します。
- 開いたパネルで、Red Hat Advanced Cluster Security for Kubernetes で生成されたポリシーでポートとプロトコルのスコープを設定しない場合は、Exclude ports & protocols を選択します。
- Generate and simulate network policies を選択します。生成されたネットワークポリシー設定 YAML が同じパネルで開き、ネットワークグラフにポリシーの効果が表示されます。
8.5.2. 生成されたポリシーの保存
生成されたネットワークポリシーを RHACS からダウンロードして保存できます。このオプションを使用して、Git などのバージョン管理システムにポリシーをコミットします。
手順
- ネットワークポリシーを生成した後、Network Policy Simulator パネルで Download YAML アイコンをクリックします。
8.5.3. 生成されたポリシーのテスト
RHACS が生成するネットワークポリシーをダウンロードした後、クラスターに適用してテストできます。
手順
ネットワークポリシーを直接適用すると、アプリケーションの実行で問題が発生する可能性があります。実稼働環境のワークロードに適用する前に、常に開発環境またはテストクラスターでネットワークポリシーをダウンロードし、テストします。
8.5.4. 生成されたポリシーの適用
RHACS ポータルから生成されたネットワークポリシーを適用できます。
手順
- 生成されたポリシーを RHACS 内からクラスターに直接適用するには、Apply Network Policies を選択します。
ネットワークポリシーを直接適用すると、アプリケーションの実行で問題が発生する可能性があります。実稼働環境のワークロードに適用する前に、常に開発環境またはテストクラスターでネットワークポリシーをダウンロードし、テストします。
8.5.5. 生成されたポリシーの削除
生成されたポリシーを直接適用して削除する場合は、Network Policy Simulator パネルの Revert most recently applied YAML アイコンを選択します。
手順
- RHACS ポータルで、Network Graph (1.0) に移動します。
- 正しいクラスター名がまだ選択されていない場合は、上部のバーのメニューからクラスター名を選択します。
- namespace を 1 つ以上選択します。
- Network Policy Simulator を選択します。
- View active YAMLS を選択します。
- Revert most recently applied YAML アイコンを再度選択します。
8.5.6. ネットワークグラフ (1.0) で自動生成されたすべてのポリシーの削除
RHACS を使用して作成したクラスターから、生成されたすべてのポリシーを削除できます。
手順
以下のコマンドを実行します。
$ oc get ns -o jsonpath='{.items[*].metadata.name}' | \ xargs -n 1 oc delete networkpolicies -l \ 'network-policy-generator.stackrox.io/generated=true' -n 1- 1
- Kubernetes を使用する場合は、
ocの代わりにkubectlを入力します。