6.3. ネットワークポリシーの生成

Kubernetes ネットワークポリシーは、受信ネットワークトラフィックを受信する Pod と、送信トラフィックを送信する Pod を制御します。ネットワークポリシーを使用して Pod へのトラフィックを有効にし、無効にすることで、ネットワークの攻撃エリアを制限できます。

これらのネットワークポリシーは YAML 設定ファイルです。通常、ネットワークフローに関するインサイトを得て、手動でこれらのファイルを作成するのは困難です。Red Hat Advanced Cluster Security for Kubernetes では、お使いの環境で実際に確認されたネットワーク通信フローに基づいて、これらのネットワークポリシーを自動生成できます。

ネットワークグラフビューからネットワークポリシーを生成できます。

生成されたポリシーは、ネットワークグラフに表示されるデプロイメントに適用され、選択した時間に確認されたすべてのネットワークトラフィックを許可します。

手順

  1. RHACS ポータルの左側のナビゲーションメニューから Network Graph を選択します。
  2. 正しいクラスター名がまだ選択されていない場合は、上部のバーのメニューからクラスター名を選択します。
  3. namespace を 1 つ以上選択します。
  4. 一部のデプロイメントに対してのみポリシーを生成する場合は、Add one or more deployment filters フィールドを使用して、デプロイメントをフィルターする基準を追加します。フィルターを追加しない場合には、Red Hat Advanced Cluster Security for Kubernetes はクラスター内のすべてのデプロイメントのポリシーを生成します。
  5. 上部のバーのメニューから適切な時間を選択します。選択した時間が短すぎると、定期的なネットワーク通信または頻度が低いネットワーク通信が残されます。
  6. Network Policy Simulator を選択します。
  7. 開いたパネルで、Red Hat Advanced Cluster Security for Kubernetes で生成されたポリシーでポートとプロトコルのスコープを設定しない場合は、Exclude ports & protocols を選択します。
  8. Generate and simulate network policies を選択します。生成されたネットワークポリシー設定 YAML が同じパネルで開き、ネットワークグラフにポリシーの効果が表示されます。

6.3.1. 生成されたポリシーの保存

生成されたネットワークポリシーは、Red Hat Advanced Cluster Security for Kubernetes からダウンロードして保存できます。このオプションを使用して、Git などのバージョン管理システムにポリシーをコミットします。

手順

  • Network Policy Simulator パネルの Download YAML アイコンを選択します。

6.3.2. 生成されたポリシーのテスト

Red Hat Advanced Cluster Security for Kubernetes が生成するネットワークポリシーをダウンロードした後に、それらをクラスターに適用してテストできます。

手順

  1. 保存した YAML ファイルを使用してポリシーを作成するには、以下のコマンドを使用します。

    $ oc create -f "<generated_file>.yaml" 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl と入力します。
  2. 生成されたポリシーで問題が発生する場合は、以下のコマンドを実行してそのポリシーを削除できます。

    $ oc delete -f "StackRox Generated.yaml" 1
    1
    Kubernetes を使用する場合は、oc の代わりに kubectl と入力します。

6.3.3. 生成されたポリシーの適用

RHACS ポータルから生成されたネットワークポリシーを適用できます。

手順

  • Red Hat Advanced Cluster Security for Kubernetes 内からクラスターで生成されたポリシーを直接適用するには、Apply Network Policies を選択します。
警告

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

6.3.4. 生成されたポリシーの削除

生成されたポリシーを直接適用して削除する場合は、Network Policy Simulator パネルの Revert most recently applied YAML アイコンを選択します。

手順

  1. RHACS ポータルの左側のナビゲーションメニューから Network Graph を選択します。
  2. 正しいクラスター名がまだ選択されていない場合は、上部のバーのメニューからクラスター名を選択します。
  3. namespace を 1 つ以上選択します。
  4. Network Policy Simulator を選択します。
  5. View active YAMLS を選択します。
  6. Revert most recently applied YAML アイコンを再度選択します。

6.3.5. 自動生成されるすべてのポリシーの削除

Red Hat Advanced Cluster Security for Kubernetes を使用して作成したクラスターから生成されたポリシーをすべて削除できます。

手順

  • 以下のコマンドを実行します。

    • OpenShift Container Platform

      $ oc get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 oc delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n
    • Kubernetes の場合:

      $ kubectl get ns -o jsonpath='{.items[*].metadata.name}' | xargs -n 1 kubectl delete networkpolicies -l 'network-policy-generator.stackrox.io/generated=true' -n

6.3.6. ポリシー生成ストラテジー

ネットワークポリシーを自動生成した場合:

  • Red Hat Advanced Cluster Security for Kubernetes は、namespace 内のデプロイメントごとに、単一のネットワークポリシーを生成します。ポリシーの Pod セレクターは、デプロイメントの Pod セレクターです。

    • デプロイメントにネットワークポリシーがすでにある場合には、Red Hat Advanced Cluster Security for Kubernetes は新しいポリシーを生成したり、既存のポリシーを削除したりしません。
  • 生成されたポリシーは、トラフィックを既存のデプロイメントに制限するだけです。

    • 後に作成するデプロイメントは、ネットワークポリシーを作成または生成しない限り、制限がありません。
    • 新しいデプロイメントでネットワークポリシーを使用してデプロイメントに接続する必要がある場合は、ネットワークポリシーを編集してアクセスを許可する必要があります。
  • 各ポリシーにはデプロイメント名と同じ名前が付けられ、その後に stackrox-generated- が付けられます。たとえば、生成されたネットワークポリシーのデプロイメント depABC のポリシー名は stackrox-generated-depABC です。生成されたすべてのポリシーには、識別ラベルもあります。
  • Red Hat Advanced Cluster Security for Kubernetes は、以下の場合に任意の IP アドレスからのトラフィックを許可する単一のルールを生成します。

    • デプロイメントに、選択した時間内にクラスターの外部からの着信接続がある場合。
    • デプロイメントがノードポートまたはロードバランサーサービス経由で公開されている場合。
  • Red Hat Advanced Cluster Security for Kubernetes は、受信接続があるすべてのデプロイメントに対して、1 つの ingress ルールを生成します。

    • デプロイメントが同じ namespace にある場合には、このルールは他のデプロイメントの Pod セレクターラベルを使用します。
    • デプロイメントが異なる namespace にある場合には、このルールは namespace セレクターを使用します。Red Hat Advanced Cluster Security for Kubernetes は、これを実現するために、ラベル namespace.metadata.stackrox.io/name を各 namespace に自動的に追加します。
重要

スタンドアロン Pod にラベルがない場合には、生成されたポリシーは Pod の全体的な namespace からのトラフィックを許可します。