hostPath のアクセス制限を確認すべき PodSecurityPolicy

必要な hostPath アクセスだけを、限定したパスと最小限の権限で許可してください。

説明

hostPath を許可する PodSecurityPolicy でパスや書き込み権限を広く認めると、ワークロードがノード上のファイルを読み取ったり変更したりできる可能性があります。実際のアクセスには Pod のマウント設定とファイル権限も関係します。allowedHostPaths に加え、volumes で hostPath 自体を許可しているかも確認してください。

PSP は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。現在のクラスタでは、サポートされる admission 制御で必要な制限を適用してください。

想定される影響

  • 読み取りだけでもホスト上の機密ファイルが漏えいする可能性があります。
  • 書き込み権限があると、ノード設定や他のワークロードが使うファイルを変更できる可能性があります。

対処方法

  • 不要な hostPath を禁止し、用途に合ったストレージへ置き換えてください。
  • 旧 PSP で例外が必要な場合は承認済みパスだけを許可し、書き込みが不要なら readOnly: true を要求してください。
  • 実際のマウント、ファイル権限、ワークロードが使用できる他のポリシーも確認してください。

例

以下は旧 PSP のパス制限を比較した抜粋です。完全なポリシーと実際のマウント設定は別途必要です。例のパスが環境に適しているか確認してください。

変更前

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  allowedHostPaths:
    - pathPrefix: /dev
      readOnly: false

/dev のマウントに読み取り専用を要求していません。許可されたワークロードが実際にアクセスできるホストファイルを確認する必要があります。

変更後

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: example
spec:
  allowedHostPaths:
    - pathPrefix: /foo
      readOnly: true

許可するパスを /foo に変更し、読み取り専用を要求しています。そのデータを公開してよいか、業務上必要なパスかも確認してください。

参考資料