機密性の高いホストディレクトリがマウントされたコンテナー

機密性の高いホストディレクトリのマウントは、コンテナーにホストデータへのアクセスを与える場合があります。

説明

機密性の高いホストディレクトリを直接マウントすると、ファイル権限とマウント設定に応じて、コンテナープロセスがホストファイルを読み取り、変更できる場合があります。バックアップ、システム設定、運用データを含むパスには特に注意が必要です。

バインドマウントはデータ共有に役立ちますが、必要以上に広いパスを接続すると、一つのコンテナーの侵害がホストデータの漏えいや破損につながる可能性があります。

想定される影響

  • 必要な範囲を超えてホストの機密ファイルへアクセスできる場合があります。
  • 書き込み可能なマウントでは、重要なデータや設定が変更・削除される可能性があります。

対処方法

  • 不要なホストパスのマウントを削除し、必要なファイルや専用ディレクトリだけに限定してください。
  • 読み取りだけでよい場合は、マウントに :ro、または長い構文の read_only: true を指定してください。読み取り専用でも情報漏えいは防げません。
  • Docker の名前付きボリュームへ分離する場合は、データ移行と権限を準備し、バックアップ・復元とアプリケーションの動作を検証してください。

例

backup-service は実際のバックアップイメージに置き換えてください。二つの例は保存先が異なります。

変更前

yaml
version: "3.9"

services:
  backup:
    image: backup-service
    volumes:
      - /var/lib/backup/data:/data

ホストのバックアップパスを /data に直接接続しています。既定では読み書き可能なため、プロセスのファイル権限も重要です。

変更後

yaml
version: "3.9"

services:
  backup:
    image: backup-service
    volumes:
      - backup-data:/data

volumes:
  backup-data:

別の名前付きボリュームを使用します。既存のホストデータは自動移行されず、ボリュームの内容とアクセス権も保護する必要があります。

参考資料