説明
Docker Compose の privileged: true は、通常のコンテナーより広いカーネル機能とデバイスへのアクセスを与えます。Linux ではすべての capability とホストデバイスへのアクセスを許可し、一部のセキュリティ制約を緩和します。
一般のアプリケーションで必要になることは多くありません。利便性のために有効にすると、侵害時の影響範囲が大きく広がる可能性があります。
想定される影響
- ホストのリソースやカーネル機能へ過剰にアクセスできる場合があります。
- アプリケーションの侵害がホストや他のワークロードへ波及する可能性があります。
対処方法
- 一般のサービスから
privileged: trueを削除するか、falseにしてください。 - 必要な capability とデバイスだけを個別に許可し、不要な権限を取り除いてください。
- 特権モードが必要な処理は隔離した専用環境で実行してください。変更後に必要な機能とセキュリティ制約を確認してください。
例
実際のビルドディレクトリと Dockerfile-alternate を用意してください。
変更前
yaml
version: "3.9"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
privileged: true
サービスが特権モードで実行されます。
変更後
yaml
version: "3.9"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
特権モードの指定を削除しています。イメージの実行ユーザー、capability、マウントは別途確認してください。