特権モードが有効なコンテナー

特権コンテナーは、広い権限とデバイスへのアクセスによって隔離を大きく弱める場合があります。

説明

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、マウントは別途確認してください。

参考資料