NetworkPolicy の適用構成の確認

NetworkPolicy が、実際に配備したネットワーク構成で適用されることを確認してください。

説明

NetworkPolicy リソースを作成しても、それを適用するネットワーク構成要素がなければ通信は制限されません。機密性の高いワークロードやテナントを隔離するには、ポリシーと実際の適用機能の両方が必要です。

Flannel は主に接続を提供し、ポリシーコントローラーや Calico などの別の構成要素と組み合わせてポリシーを適用することもできます。プラグイン名だけで判断せず、インストール済みの構成と動作を確認してください。

想定される影響

ポリシーが適用されないと、内部サービスが意図より広い範囲からアクセス可能になり、侵害されたワークロードから内部へ侵入が広がるのを制限しにくくなるおそれがあります。名前空間を分けるだけではネットワーク通信は遮断されません。

対処方法

  • 配備したネットワークプラグインとポリシーコントローラーが、必要な NetworkPolicy 機能をサポートし、有効にしていることを確認してください。
  • サポートされるインストール手順で適用機能を構成し、必要な受信・送信だけを許可してください。DNS などの必須通信も考慮してください。
  • 変更前に接続への影響と復旧方法を準備し、実際の Pod から許可した通信が成功し、未承認の通信が遮断されることを検証してください。

例

ConfigMap に含まれるプラグイン選択の概念的な抜粋です。完全な CNI 設定や移行手順ではなく、ConfigMap の名前・ラベル・type を変えるだけではネットワークは移行できません。

変更前

yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "plugins": [
        {
          "type": "flannel"
        }
      ]
    }

Flannel の接続設定を示しています。別のポリシー適用コンポーネントがあるか確認してください。この抜粋だけでは実際の隔離状態を判断できません。

変更後

yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    app: calico
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "plugins": [
        {
          "type": "calico"
        }
      ]
    }

Calico を選択する概念的な例です。サポートされるインストールと必要な構成、NetworkPolicy の適用を行い、実際の通信制限を検証してください。

参考資料