Skip to content

資格情報 (DB/AMQP) の取り扱いを改善する #98

@tichi73

Description

@tichi73

背景

ke2-docker は kompira-v2 を docker compose で動かすサンプル集として
GitHub public リポジトリで配布しています。docker-compose.yml にミドル
ウェア接続用のサンプル値 (DB/AMQP パスワード等) が平文で記載されており、
QA より以下の懸念が示されました。

  • リポジトリ URL が分かれば不特定多数からシークレット情報のサンプルが閲覧できる。
  • 利用者がこれをそのまま運用に流用すると、商用環境であっても弱いパスワードの
    まま運用してしまうリスクがある (特に外部DB構成では DB サーバが外部公開
    されているケースが多い)。

なお、ke2-docker はあくまで kompira-v2 の動作サンプルであり、配布物自体に
含まれるユーザ名・パスワードは「例示値」という位置付けですが、利用者から
明確にそうと認識できる仕掛けが不足していました。

検討した対処方針

  • 管理者マニュアル等で、デプロイ時に強度の高いパスワードを設定することを
    強く推奨する。

    • データベースだけでなく RabbitMQ (AMQP) についても同様に推奨する。
      特に外部 AMQP 接続 (外部 jobmngrd、kompira_sendevt 等) を行う構成では、
      サンプル値のまま運用しないことを明示する。
  • デプロイ時のフローに環境変数で独自パスワードを設定できるよう(設定しや
    すいよう)に改良する。

    • データベース・RabbitMQ のいずれも環境変数経由でユーザ名・パスワードを
      差し替え可能とする。
    • 外部DB構成 (single/extdb) では DATABASE_URL が未指定のまま起動すると
      エラーで停止するようにし、サンプル値が暗黙に使われる事故を構造的に防止する。
  • 外部DBではない構成 (single/basic) の構築フローにおいても、ランダム
    パスワードを生成して適用できるようにスクリプトファイルを用意する
    (ただし強制はしない)。

    • 生成された秘匿情報を含むファイルを利用者が誤って公開リポジトリに含めて
      しまわないよう、配布物側でも除外設定をあらかじめ入れておく。
    • 強度の高いパスワード (URL 予約文字を含むケース) でも問題なく扱える
      よう、本体 (kompira-v2) 側にも併せて必要な対応を実施する。

なお、ke2-docker のサンプルファイルから "kompira" 等のデフォルト値の記述を
完全に削除することは今回の対応範囲としません。サンプル集としての可読性と、
利用者が任意の値を上書きできることのバランスを優先します。

対応範囲

本 Issue では以下を対象とします。

  • single/basic
  • single/extdb
  • extra/jobmngrd

cluster/swarm 構成および PostgreSQL/Pgpool-II によるデータベースクラスタ
構成については、検討範囲が広がるため別 Issue で対応します。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions