説明
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 の削除を要求します。