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

ホスト IPC の共有を許可するポリシーは、ワークロードとノードの間のプロセス間通信の分離を弱める場合があります。

説明

従来の PodSecurityPolicy の hostIPC: true は、Pod にホストの IPC 名前空間の共有を許可します。実際に共有する Pod は、ノードの共有メモリ、セマフォ、メッセージキューなど、より広い範囲の IPC リソースにアクセスできるようになります。データの読み取りや変更には、各リソースの権限も適用されます。

PSP は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。現在のクラスターでは Pod Security Admission などの代替ポリシーで、ホスト IPC の共有を制限してください。

想定される影響

  • IPC リソースやその状態に関する情報がワークロードから見える場合があります。
  • 十分な権限があると、他のプロセスのデータや動作に影響するおそれがあります。

対処方法

  • 従来のポリシーでは hostIPC を false にし、実際の Pod でも不要なホスト IPC 共有を削除してください。
  • hostPID、hostNetwork、特権実行も制限してください。
  • 必須のシステムツールだけに例外を認め、ポリシーが適用された状態で必要な機能が動作することを確認してください。

例

次の例は Kubernetes 1.25 より前の PSP の IPC 制御部分です。他の必須フィールドは省略しています。

変更前

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  hostIPC: true

このポリシーの利用権限を持つ Pod が、ホスト IPC の共有を要求できます。すべての Pod に共有を強制する設定ではありません。

変更後

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  hostIPC: false

このポリシーはホスト IPC の共有を許可しません。他に利用できるポリシーや例外から、広いアクセスを得られないことも確認する必要があります。

参考資料