ホスト IPC 共有を許可する Kubernetes PodSecurityPolicy

不要なホスト IPC 名前空間の共有をポリシーで禁止してください。

説明

ホスト IPC を許可すると、Pod がノードと同じ IPC 名前空間を使用できます。実際に共有するワークロードは、オブジェクトの権限に応じて共有メモリやメッセージキューなどにアクセスでき、プロセス間通信の隔離が弱まります。

PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。現在のクラスターでは Pod Security Admission やポリシーエンジンで制限してください。

想定される影響

  • オブジェクトの権限が許せば、IPC データが読み取られたり変更されたりする可能性があります。
  • 共有 IPC リソースへの妨害が、ノードのほかのプロセスに影響する可能性があります。

対処方法

  • 従来の PSP では spec.host_ipc = false を指定してください。
  • ホスト IPC が必須のワークロードは専用ポリシーとノードで分離し、実際のオブジェクト権限も制限してください。
  • hostNetwork、hostPID、privileged も確認してください。

例

PSP をサポートする過去の環境向けの部分例です。IPC の共有許可だけを比較し、ほかの必須設定は省略しています。

変更前

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

  spec {
    host_ipc = true
  }
}

このポリシーを使用できる Pod はホスト IPC を要求できます。すべての Pod で自動的に共有されるわけではありません。

変更後

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

  spec {
    host_ipc = false
  }
}

このポリシーを通じたホスト IPC 共有を禁止します。実際のワークロードとほかの適用可能なポリシーも確認してください。

参考資料