Unmasked の proc mount を許可する Kubernetes 構成

Unmasked の proc mount を許可すると、コンテナーランタイムの既定のパス保護が解除される場合があります。

説明

従来の PodSecurityPolicy の allowedProcMountTypes で Unmasked を許可すると、コンテナーが /proc などの既定のマスキングと読み取り専用保護の解除を要求できます。機密性のあるカーネル情報の開示や保護対象パスへのアクセス拡大につながるため、通常のワークロードでは Default を使用してください。

この設定だけでホストの全プロセスや全ファイルにアクセスできるわけではありません。実際の範囲は名前空間、権限、ランタイムによって異なります。PSP は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。現在のクラスターでは Pod Security Admission などの代替ポリシーで既定のパス保護を適用してください。

想定される影響

  • 既定では隠されているシステム情報がコンテナーから見える場合があります。
  • 追加の権限と組み合わさると、カーネルインターフェイスの悪用やシステム動作への影響が生じるリスクが高まります。

対処方法

  • 従来の allowedProcMountTypes から Unmasked を削除し、Default だけを許可してください。
  • ワークロードの procMount も既定の設定に保ち、不要な特権やホスト名前空間の共有を削除してください。
  • ポリシー移行後も、必要なアプリケーション機能が正常に動作することを確認してください。

例

次の例は PSP をサポートしていたクラスター向けのポリシーの抜粋です。他の必須フィールドは省略しており、Kubernetes 1.25 以降には適用できません。

変更前

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  allowedProcMountTypes:
    - Unmasked

Unmasked を要求するコンテナーを許可します。ポリシーによる許可と、実際のコンテナーでの使用は別です。

変更後

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  allowedProcMountTypes:
    - Default

Default だけを許可し、既定のマスキングと読み取り専用パスの保護を維持します。他の権限や分離の設定も制限する必要があります。

参考資料