説明
PodSecurityPolicy の allowedCapabilities は、コンテナーが追加の Linux capability を要求することを許可します。この一覧だけで全コンテナーに権限が付与されるわけではありませんが、不要な項目や * は利用可能な権限を広げます。
PSP は Kubernetes 1.21 で非推奨となり、1.25 で削除されました。現在の環境では Pod Security Admission などのサポートされるポリシー制御を使ってください。
想定される影響
- 侵害されたコンテナーが追加権限を悪用すると、付与された capability に応じてプロセス、ネットワーク、ホストへの影響が大きくなる可能性があります。
- 広い許可は、ワークロードに実際に必要な権限の把握と管理を難しくします。
対処方法
- 不要な capability の許可を削除し、機能上必要な項目だけを確認して許可してください。
- 既定の capability の削除と、特権実行・権限昇格の制限も確認してください。
- 必要な機能が動作し、未承認の追加権限要求が拒否されることをテストしてください。
例
以下は旧 PSP の一部のフィールドを比較する例です。完全なポリシーではなく、現在のクラスタにそのまま適用することもできません。
変更前
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: privileged
spec:
allowedCapabilities:
- "*"
* はあらゆる追加 capability の要求を許可するため、権限の範囲が非常に広くなります。
変更後
yaml
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: privileged
spec:
volumes:
- "*"
追加 capability の許可リストを省略しています。これだけで既定の capability がすべて削除されるわけではありません。volumes: ["*"] による広いボリューム許可も別途制限してください。