説明
Linux capability は、コンテナーが使える個々の権限を制御します。不要な capability は分離を弱める場合があるため、ワークロードに必要な権限だけを許可する必要があります。
PodSecurityPolicy は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。従来の PSP 環境では requiredDropCapabilities と許可する capability を合わせて確認してください。現在のクラスターでは、Pod Security Admission やポリシーエンジンで必要な制限を適用してください。
想定される影響
- 過剰なコンテナー権限によって、侵害時の影響が広がる場合があります。
- 必要な capability を確認せず削除すると、アプリケーションの機能が失敗する場合があります。
対処方法
- 可能なら不要な capability をすべて削除し、必要な権限だけを許可してください。従来の PSP の requiredDropCapabilities、許可リスト、実際のコンテナー設定を合わせて確認してください。
- 現在のクラスターでは、サポートされるポリシーで同じ制限を適用し、ワークロードの動作を試してください。PSP リソースが残っているだけでは、現在のクラスターでポリシーは強制されません。
例
policy/v1beta1 PSP の capability 設定だけを示す従来の抜粋です。他の必須戦略やポリシーを使う権限は省略しています。Kubernetes 1.25 以降では、このリソースは使用できません。
変更前
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false
allowPrivilegeEscalation: false
volumes:
- configMap
- secret
デフォルトの capability を削除する要求が、この抜粋にはありません。実際の権限はランタイムのデフォルトや他のポリシーにも左右されます。
変更後
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false
allowPrivilegeEscalation: false
requiredDropCapabilities:
- ALL
volumes:
- configMap
- secret
ALL の削除を要求します。必要な権限を検討し、実際のワークロードがこのポリシーで動くか確認する必要があります。