説明
ホスト 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 共有を禁止します。実際のワークロードとほかの適用可能なポリシーも確認してください。