コンテナーによるホスト PID 名前空間の共有

ホストプロセスへのアクセスが不要な Pod では host_pid を無効にしてください。

説明

host_pid = true の Pod は、ホストの PID 名前空間を共有します。ホストのプロセスが見えるため分離が弱まり、他の権限や脆弱性と組み合わさるとプロセスに干渉できる場合があります。ただし、プロセスが見えるだけで、すべてのプロセスへシグナルを送ったりデバッグしたりする権限まで得られるわけではありません。

想定される影響

  • ホストのプロセス情報が漏えいし、偵察に使われる場合があります。
  • 他の権限や脆弱性があると、ホストプロセスへの干渉やサービス停止につながる場合があります。

対処方法

  • 通常のワークロードでは host_pid = false を使用してください。ホストプロセスの監視が必要なシステムツールの例外は、用途と権限を確認して限定してください。
  • 非 root 実行と最小限の capability を使用し、Pod Security Admission やポリシーエンジンで不要なホスト名前空間の共有を制限してください。

例

host_pid だけを比較する既存の Pod 例です。実際のデプロイには保守されているイメージを使い、例外が必要な管理ツールは別途評価してください。

変更前

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    host_pid = true

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

変更後

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    host_pid = false

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

補足:

  • 変更前: ホストの PID 名前空間を共有します。
  • 変更後: ホスト PID 名前空間の共有を無効にします。他のホストアクセス権限は別途確認する必要があります。

参考資料