Antrea Kubernetes クラスタ内のポッド間のトラフィックを保護するには、NSX に分散ファイアウォール ポリシー(セキュリティ ポリシー)を作成し、1 つ以上の Antrea Kubernetes クラスタに適用します。

注: このドキュメントでは、 Antrea CNI を含む Kubernetes クラスタを「Antrea Kubernetes クラスタ」という用語で表しています。「Kubernetes クラスタ」という用語は一般的な用語で、 Antrea CNI を含む Tanzu Kubernetes Grid (TKG) クラスタ、 Antrea CNI を含む OpenShift クラスタ、または Antrea CNI を含むユーザー独自の (DIY) Kubernetes クラスタを表します。

ユーザー インターフェイスでは、いくつかのユーザー インターフェイス フィールドまたはラベルで「Antrea コンテナ クラスタ」という用語が使用されています。このドキュメントの 手順 セクションでは、これらのユーザー インターフェイス フィールドまたはラベルには「Antrea コンテナ クラスタ」という用語をそのまま使用しています。すべての自由形式のテキストでは、「Antrea Kubernetes クラスタ」という用語を使用しています。

前提条件

Antrea Kubernetes クラスタが NSX に登録されている。

手順

  1. ブラウザから、NSX Manager (https://nsx-manager-ip-address) にログインします。
  2. [セキュリティ] タブをクリックし、[ポリシー管理][分散ファイアウォール] をクリックします。
    [カテゴリ固有のルール] ページが表示されます。
    注: ブラウザで NSX Manager アプリケーションを起動すると、登録済みの Antrea Kubernetes クラスタに関する情報が NSX Manager ユーザー インターフェイスに取得されます。アプリケーションのユーザー インターフェイスがすでに開いている場合、 Antrea Kubernetes クラスタの登録情報は自動的に取得されません。この動作は、現在のユーザー インターフェイスのデザインで想定されている動作です。 NSX Manager アプリケーションを開いた後に最初の Antrea Kubernetes クラスタを登録した場合は、 [カテゴリ固有のルール] ページに移動した後にブラウザを更新してください。手動で更新すると、この操作の手順 4 で、ユーザー インターフェイスに Antrea 固有のユーザー インターフェイス要素が表示されます。

    ブラウザの手動更新は 1 回だけ必要になります。新しい Antrea Kubernetes クラスタが NSX に登録されるたびに行う必要はありません。

  3. セキュリティ ポリシーを作成するカテゴリを選択します。
    現在 Antrea Kubernetes クラスタでは、MAC アドレスに基づくレイヤー 2(イーサネット)ファイアウォール ルールはサポートされていません。 NSX のカテゴリは、 Antrea の階層に対応します。セキュリティ ポリシーは、次の優先順位の降順で Antrea Kubernetes クラスタに適用されます。
    • 緊急カテゴリ(最も高い優先順位)
    • インフラストラクチャ カテゴリ
    • 環境カテゴリ
    • アプリケーション カテゴリ(最も低い優先順位)

    カテゴリ内では、ファイアウォール ルールはルールの設定順序に従って上から順番に処理されます。カテゴリは、ルールの整理に使用できます。たとえば、複数のユーザー ロール(個人設定)が存在する場合、互いのポリシーをオーバーライドしたり、競合することなく、セキュリティ ポリシーを作成できます。たとえば、セキュリティ管理者は、特定の隔離ルールまたは許可ルールに緊急カテゴリのポリシーを作成できます。アプリケーション開発者は、アプリケーション カテゴリにポリシーを作成し、アプリケーション内の特定のポッド間のトラフィックを保護できます。ネットワーク管理者は、インフラストラクチャ カテゴリのポリシーを作成して、DHCP、DNS、Active Directory などの共有サービスのアクセス ルールを定義できます。

  4. [ポリシーの追加] をクリックして、ポリシーの構成設定を指定します。
    1. ポリシーの一意の名前を入力します。
    2. デフォルトでは、ポリシーは分散ファイアウォールに適用されます。[適用先] の横にある編集アイコンをクリックします。
      [適用先の設定] ページが開きます。
    3. [Antrea コンテナ クラスタ] オプションを選択します。
    4. (必須) 少なくとも 1 つのクラスタを選択して、セキュリティ ポリシーの範囲または適用スコープを決定します。
      ポリシーの範囲は、単一の Antrea Kubernetes クラスタにすることも、複数の Antrea Kubernetes クラスタにすることもできます。
    5. (オプション) ポリシーの範囲を制限するには、Antrea グループを選択します。
      ポリシーの [適用先]Antrea グループを選択すると、この構成がポリシー内のすべてのルールに使用されます。ポリシー内のルールごとに異なる Antrea グループのセットを指定するには、この手順をスキップし、ポリシーにルールを追加するときに [適用先] を指定します。
      注: NSX は、IP アドレスから有効なポッド メンバーを計算できません。ポリシーの [適用先] には、IP アドレスを持つ Antrea グループは使用しないでください。
    6. (オプション) 右端にある歯車のアイコンをクリックして、ポリシーの高度な設定を指定します。
      Antrea Kubernetes クラスタに適用されるセキュリティ ポリシーの場合、 [TCP Strict][ステートフル] の設定はグレーアウトされます。これらの設定は現在サポートされていません。

      サポートされる設定は、[ロック済み][コメント] のみです。デフォルトでは、ポリシーはロックされません。複数のユーザーがポリシーを変更できないようにするには、[ロック済み] オプションをオンにします。

    7. [公開] をクリックします。
      複数のポリシーを追加してから、それらをすべて一緒に公開できます。

      ポリシーの状態が「進行中」に変わり、Antrea Kubernetes クラスタで正常に認識されると、「成功」に変わります。何らかの理由でポリシーの認識に失敗した場合は、失敗状態をクリックします。ポップアップ ウィンドウにエラーが表示されます。

  5. ポリシー名の横にあるチェック ボックスを選択し、[ルールを追加] をクリックします。ルール名を入力します。
    デフォルトでは、ルールの [送信元][宛先][サービス][適用先] の各列に「 任意」が表示されます。
    注: 現在、 Antrea Kubernetes クラスタに適用されるルールで、コンテキスト プロファイルを使用することはできません。
  6. ルールの設定を指定します。
    1. [送信元] または [宛先] 列で編集アイコンをクリックし、1 つ以上の Antrea グループを選択します。
      ルールの送信元と宛先の指定には、次の制約が適用されます。
      • 選択できるのは Antrea グループだけです。NSX メンバーを持つグループはルールで使用できません。つまり、1 つのルールに Antrea グループと [汎用] タイプのグループ、[IP アドレスのみ] を混在させることはできません。
      • [送信元] 列でグループを選択すると、[宛先] 列は使用できません。宛先は、ルールの [適用先] に追加できます。
      • [宛先] 列でグループを選択すると、[送信元] 列は使用できません。送信元は、ルールの [適用先] に追加できます。

      ルールで [送信元][適用先] を設定すると、[送信元] から [適用先] へのトラフィックがフィルタリングされます。ルールで [宛先][適用先] を設定すると、[適用先] から [宛先] へのトラフィックがフィルタリングされます。Antrea データ パスでは、[適用先] のグループ メンバーにフィルタリングが実行されます。

    2. (オプション) [サービス] 列で編集アイコンをクリックして、サービスを選択します。
      サービスを選択しないと、「任意」が使用されます。

      サービスの指定には、次の制約が適用されます。

      • サポートされているサービスは TCP と UDP だけです。他のサービスはサポートされていません。
      • Raw ポートとプロトコルの組み合わせでサポートされるサービス タイプ TCP と UDP のみです。
      • サポートされているのは、宛先ポートだけです。送信元ポートはサポートされていません。
    3. [適用先] 列で編集アイコンをクリックし、ルールを適用する Antrea グループを選択します。

      グループを選択しないと、「任意」が使用されます。

      注:
      • NSX は、IP アドレスから有効なポッド メンバーを計算できません。ルールの [適用先] には、IP アドレスを持つ Antrea グループは使用しないでください。
      • ポリシーとルールの両方の [適用先]Antrea グループを指定すると、ポリシーの [適用先] のグループが、ルールの [適用先] のグループよりも優先されます。
    4. [アクション] ドロップダウン メニューから、いずれかのオプションを選択します。
      オプション 説明
      許可

      指定された送信元、宛先、プロトコルを持つすべての L3 トラフィックに、現在のファイアウォール コンテキストを通過することを許可します。ルールに一致し、承認されたパケットは、ファイアウォールが存在しないかのように Kubernetes クラスタ内を移動します。

      ドロップ

      指定されたソース、ターゲット、およびプロトコルを持つパケットをドロップします。パケットのドロップは情報が表示されず、送信元のシステムまたは宛先への通知なしで実行されます。パケットをドロップすると、再試行のしきい値に到達するまで、接続が再試行されます。

      却下

      指定されたソース、ターゲット、およびプロトコルを持つパケットを却下します。パケットの却下は、送信者に対して宛先に到達できないというメッセージを送信するので、パケットを拒否する方法としてはより適切です。プロトコルが TCP の場合、TCP RST メッセージが送信されます。UDP、ICMP およびその他の IP 接続では、管理上禁止されたコードが含まれる ICMP メッセージが送信されます。却下アクションのメリットの 1 つは、一度接続を試行するのみで、接続を確立できないことが、送信側のアプリケーションに通知されることです。

    5. 切り替えボタンをクリックし、ルールを有効または無効にします。
      デフォルトでは、ルールは有効になっています。
    6. (オプション) 歯車アイコンをクリックして、他のルールの設定を構成します。
      ルールの設定 説明
      ログの記録 デフォルトでは、ログはオフになっています。ファイアウォール ログは、Antrea Agent ログに含まれています。Antrea Kubernetes クラスタのサポート バンドル要求を作成するときに、クラスタからノードを選択すると、そのノードの Antrea Agent ログがサポート バンドルに含まれます。
      方向

      宛先ポッドから見たトラフィックの方向を示します。

      次の場合、ルールの方向は読み取り専用になり、編集できません。
      • ルールで送信元が指定されている場合、方向は受信になります。
      • ルールで宛先が指定されている場合、方向は送信になります。

      送信元と宛先が「任意」に設定されている場合、ルールの方向は編集可能です。この場合、デフォルトの方向は受信/送信です。ただし、方向を受信または送信に変更できます。

      コメント

      必要に応じて、ルールに関するメモを入力します。

      これらのコメントは、Antrea Kubernetes クラスタに伝達されません。したがって、ルールのコメントは、Antrea クラスタ ネットワーク ポリシー の仕様で注釈として表示されません。

  7. [公開] をクリックして、ルールを Antrea Kubernetes クラスタにプッシュします。
    複数のルールを追加してから、それらをすべて一緒に公開できます。
    注: Antrea Kubernetes クラスタでセキュリティ ポリシーが認識された後、ポリシーの [適用先] は編集できません。つまり、 NSX では、セキュリティ ポリシーの範囲を [Antrea コンテナ クラスタ] から [DFW] または [グループ] に変更することはできません。

結果

Antrea Kubernetes クラスタで、次の処理が行われます。
  • Antrea ネットワーク プラグインが、Antrea Kubernetes クラスタに適用される各分散ファイアウォール ポリシーに対応するクラスタ ネットワーク ポリシーを作成します。
  • ルールに送信元が含まれている場合は、対応する入力方向ルールが Antrea クラスタ ネットワーク ポリシー に作成されます。
  • ルールに宛先が含まれている場合は、対応する出力方向ルールが Antrea クラスタ ネットワーク ポリシー に作成されます。
  • ルールに Any-Any 構成が含まれている場合、クラスタ内の Antrea Controller が、Any-Any ルールを 2 つのルールに分割します。1 つは、Any-Any を含む入力方向ルール、もう 1 つは Any-Any を含む出力方向ルールです。
注: Antrea ネットワーク プラグインを使用すると、 kubectl コマンド ラインから Antrea クラスタ ネットワーク ポリシーの更新または削除を行うことができなくなります。このような操作は避ける必要があります。これは、セキュリティ ポリシーが NSX によって管理されるためです。 Antrea Kubernetes クラスタ内の 中央制御プレーン アダプタ は、 kubectl コマンド ラインから行われたポリシーの変更をすぐに上書きします。つまり、 NSX によりポリシーの信頼性が保証されます。これらのクラスタ ネットワーク ポリシーに kubectl コマンド ラインから行った変更は NSX Manager に表示されません。

次のタスク

Antrea Kubernetes クラスタでセキュリティ ポリシーが正常に認識されたら、次のオプションのタスクを実行できます。

  • Antrea クラスタ ネットワーク ポリシーが Kubernetes クラスタに表示されていることを確認します。各 Antrea Kubernetes クラスタで、次の kubectl コマンドを実行します。
    $ kubectl get acnp
    注: Antrea クラスタ ネットワーク ポリシーの priority パラメータに、浮動小数が表示されます。これは通常の結果です。 NSX Manager ユーザー インターフェイスに、分散ファイアウォール ポリシーの優先順位は表示されません。 NSX は、内部で各ポリシーの優先順位に整数値を割り当てます。この整数値は、大きな範囲から割り当てられます。ただし、 Antrea ネットワーク プラグインは、ク Antrea ラスタ ネットワーク ポリシーの優先順位に小さな浮動小数(絶対値)を割り当てます。したがって、 NSX の優先順位の値は、内部で小さな浮動小数に正規化されます。ただし、分散ファイアウォール カテゴリにポリシーを追加する順序は、 Antrea クラスタ ネットワーク ポリシーに保持されます。

    NSX インベントリで、Antrea クラスタ ネットワーク ポリシーの詳細を表示することもできます。NSX Manager で、[インベントリ] > [コンテナ] > [クラスタ] の順に移動します。クラスタ名を展開し、[クラスタ ネットワーク ポリシー] の横にある数字をクリックして、YAML 仕様などのポリシーの詳細を表示します。

  • NSX API を使用して、ポリシー統計情報を表示します。
    GET https://{nsx-mgr-ip}/api/v1/infra/domains{domain-id}/security-policies/{security-policy-name}/statistics?container_cluster_path=/infra/sites/{site-id}/enforcement-points/{enforcement-point-id}/cluster-control-planes/{cluster-name}
  • ユーザー インターフェイスでランタイム ルールの統計情報を表示します。
    1. NSX Manager で、[セキュリティ] > [分散ファイアウォール] の順に移動します。
    2. ポリシー名を展開して、各ルールの右上隅にあるグラフ アイコンをクリックします。
    3. ドロップダウン メニューから Kubernetes クラスタを選択して、各 Kubernetes クラスタのルール統計情報を表示します。

      ルールの統計情報は、ルールが適用される Kubernetes クラスタごとに個別に計算されます。統計情報は、すべての Kubernetes クラスタについて集計されず、ユーザー インターフェイスに表示されます。ルールの統計情報は 1 分ごとに計算されます。