説明
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 を削除します。イメージの初期化や実行に必要な権限まで失われる場合があるため、動作を試験し、必要な権限だけを戻してください。