ポリシーによる NET_RAW 除去要件の確認

raw socket が不要なワークロードには、NET_RAW の除去を要求してください。

説明

NET_RAW は、raw socket や packet socket などのネットワーク機能を許可する Linux capability です。必要な制限がなく、コンテナーが実際にこの権限を持つと、侵害されたプロセスに悪用される場合があります。ポリシーが除去を要求しないだけで、すべてのコンテナーに NET_RAW が追加されるわけではありません。

PodSecurityPolicy は Kubernetes 1.25 で削除されました。現在のクラスターには、Pod Security Admission やポリシーエンジンで必要な制限を適用してください。

想定される影響

  • 不要なパケット生成・操作の機能が、ネットワーク攻撃に使われる場合があります。
  • 必要な capability まで除去すると、アプリケーションの正常な機能が停止する場合があります。

対処方法

  • 対応するワークロードではすべての capability を除去して必要な権限だけを許可し、少なくとも不要な NET_RAW は除去してください。実際のランタイム権限と動作を確認してください。
  • 現在の admission ポリシーで要件を強制してください。過去の PSP の required_drop_capabilities 例を、現在のクラスターのポリシーとしてそのまま使用しないでください。

例

削除された PSP の一部だけを示す過去の抜粋です。他の必須属性とポリシーの使用権限は省略しています。変更後の ALL は、NET_RAW 以外の capability の除去も要求します。

変更前

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    required_drop_capabilities = [
      "KILL",
      "SYS_TIME",
    ]
  }
}

変更後

hcl
resource "kubernetes_pod_security_policy" "policy" {
  metadata {
    name = "terraform-example"
  }

  spec {
    required_drop_capabilities = [
      "ALL",
    ]
  }
}

補足:

  • 変更前: KILL と SYS_TIME の除去を要求しますが、NET_RAW は明示していません。
  • 変更後: すべての capability の除去を要求します。この制限でアプリケーションが動くか確認する必要があります。

参考資料