PSP で NET_RAW の削除が必須になっていない

PodSecurityPolicy で NET_RAW または ALL の削除を必須にしない場合、ネットワーク関連の特権が残るおそれがあります。

説明

PodSecurityPolicy の requiredDropCapabilities に NET_RAW または ALL がない場合、Pod が raw ネットワーク機能を使用できる余地が残ります。NET_RAW はパケット生成などの機能に関わるため、適切な制限が必要です。

個別の Pod 設定だけに頼らず、セキュリティポリシーで不要な capability の削除を必須にしてください。PSP を使用している環境では、この要件をポリシーに直接反映する必要があります。

PodSecurityPolicy は Kubernetes v1.21 で非推奨となり、v1.25 で削除されました。この文書は PSP を使う旧クラスターや、PSP リソースが残る環境を対象とします。現在のクラスターでは Pod Security Admission、Gatekeeper、Kyverno などで同等の制限を適用してください。

想定される影響

  • Pod が raw ネットワーク機能を使い、意図しない通信を行うおそれがあります。
  • ネットワークの攻撃対象となる範囲が広がる場合があります。
  • ワークロードごとの capability 管理が不十分になるおそれがあります。

対処方法

  • PSP の requiredDropCapabilities に NET_RAW または ALL を含めてください。
  • 個別のワークロードも確認し、追加する capability を最小限にしてください。
  • セキュリティポリシーの変更時には capability の要件も確認してください。

例

従来の PSP の capability 設定だけを抜粋しています。ほかの必須フィールドとポリシーを使用する権限設定は省略しています。

変更前

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted2
spec:
  requiredDropCapabilities:
    - KILL

変更後

yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
spec:
  requiredDropCapabilities:
    - ALL

補足:

  • 変更前: NET_RAW や ALL の削除を必須にしていないため、注意が必要な capability が残る場合があります。
  • 変更後: ALL によって NET_RAW を含む Linux capability の削除を要求します。

参考資料