Unmasked proc mount を許可する Kubernetes セキュリティポリシー

Unmasked proc mount の許可を削除し、/proc の既定の保護を維持してください。

説明

Unmasked proc mount は、コンテナーの /proc に適用される既定のマスキングと読み取り専用の保護を解除します。機密性のあるカーネル情報やインターフェースへのアクセスが増える可能性があります。ホストの全プロセスが自動的に見えるという意味ではなく、PID 名前空間やほかの権限も影響します。

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

想定される影響

  • 通常はマスクされる、または読み取り専用で保護される /proc のパスにアクセスできる可能性があります。
  • 利用可能なカーネルインターフェースが悪用されると、隔離やワークロードの安定性が損なわれる可能性があります。

対処方法

  • 従来のポリシーでは allowed_proc_mount_types から Unmasked を削除し、Default を使用してください。
  • 現在のワークロードでも既定の proc mount を維持し、必要な例外は別途隔離してください。
  • privileged、hostPID、ほかのホストアクセス権限も確認してください。

例

従来の PodSecurityPolicy の部分例です。この API をサポートする過去のクラスターとプロバイダーで、ポリシーの許可範囲を比較します。

変更前

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

  spec {
    allowed_proc_mount_types = ["Unmasked"]
  }
}

Unmasked を許可しています。この許可だけで、すべての Pod が実際にこのマウント方式を使うわけではありません。

変更後

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

  spec {
    allowed_proc_mount_types = ["Default"]
  }
}

Default だけを許可し、既定の /proc 保護を維持します。

参考資料