従来の PodSecurityPolicy の capability 制限の確認

不要な Linux capability を削除し、実際のワークロード権限を最小限にしてください。

説明

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 の削除を要求します。必要な権限を検討し、実際のワークロードがこのポリシーで動くか確認する必要があります。

参考資料