SYS_ADMIN capability が追加された Kubernetes コンテナー

SYS_ADMIN は広い Linux 管理権限を与えるため、一般のアプリケーションコンテナーには追加しないでください。

説明

securityContext.capabilities.add の SYS_ADMIN は、ファイルシステムのマウントなど、多くの Linux 管理操作を許可する強力な capability です。隔離を弱め、侵害時の影響を広げる可能性があります。

allowPrivilegeEscalation: false はこの権限を無効化するものではなく、SYS_ADMIN と組み合わせることはできません。不要な capability 自体を取り除く必要があります。

想定される影響

  • 侵害されたプロセスが、アプリケーションに不要なシステム管理操作を行える場合があります。
  • ホストマウントや他の権限と組み合わさると、ノードや他のワークロードへ影響する可能性があります。

対処方法

  • securityContext.capabilities.add から不要な SYS_ADMIN を削除してください。
  • 必要な機能をより限定的な権限で提供するか、隔離した専用処理へ分離できるか確認してください。
  • privileged、ホストマウント、実行ユーザーも確認してください。対応できる場合は allowPrivilegeEscalation: false を適用し、アプリケーションをテストしてください。

例

例示用のイメージアドレスは実際のアプリケーションイメージへ置き換えてください。二つの Pod は権限設定を比較しています。

変更前

yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod4
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      securityContext:
        allowPrivilegeEscalation: true
        capabilities:
          add:
            - SYS_ADMIN

SYS_ADMIN と権限昇格を許可しています。アプリケーションに不要なら削除してください。

変更後

yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      securityContext:
        allowPrivilegeEscalation: false

追加した SYS_ADMIN を削除し、権限昇格も制限しています。既定の capability まですべて削除した構成ではないため、必要な権限だけが残っているか確認してください。

参考資料