コンテナーに過剰な capability を許可

必要な Linux capability だけを許可し、権限を減らした後にサービスの動作を確認してください。

説明

Docker Compose サービスに不要な Linux capability を付与しないでください。capability は特権を要するカーネル操作を許可するため、必要以上に付与すると分離が弱まるおそれがあります。

cap_add で ALL を指定すると、アプリケーションに不要なシステム権限まで付与されます。コンテナーには必要な capability だけを残し、不要なものは可能な限り削除してください。

想定される影響

  • コンテナーからの脱出やシステムの不正利用に悪用できる権限が増えます。
  • アプリケーションに脆弱性がある場合、被害が拡大するおそれがあります。
  • 実際の権限とほかの分離設定によっては、ホストやほかのコンテナーにも影響する場合があります。

対処方法

  • cap_add を最小限にし、サービスに必要な capability だけを指定してください。
  • 可能なら cap_drop で不要な capability を削除してください。
  • サービスごとに必要な権限を文書化し、過剰な付与の繰り返しを防いでください。

例

変更前

yaml
services:
  webapp:
    image: nginx:latest
    cap_add:
      - ALL

変更後

yaml
services:
  webapp:
    image: nginx:latest
    cap_drop:
      - ALL

説明:

  • 変更前: すべての capability を追加し、システム権限を不要に広げています。
  • 変更後: すべての capability を削除します。イメージの初期化や実行に必要な権限まで失われる場合があるため、動作を試験し、必要な権限だけを戻してください。

参考資料