背景
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 で対応します。
背景
ke2-docker は kompira-v2 を docker compose で動かすサンプル集として
GitHub public リポジトリで配布しています。docker-compose.yml にミドル
ウェア接続用のサンプル値 (DB/AMQP パスワード等) が平文で記載されており、
QA より以下の懸念が示されました。
まま運用してしまうリスクがある (特に外部DB構成では DB サーバが外部公開
されているケースが多い)。
なお、ke2-docker はあくまで kompira-v2 の動作サンプルであり、配布物自体に
含まれるユーザ名・パスワードは「例示値」という位置付けですが、利用者から
明確にそうと認識できる仕掛けが不足していました。
検討した対処方針
管理者マニュアル等で、デプロイ時に強度の高いパスワードを設定することを
強く推奨する。
特に外部 AMQP 接続 (外部 jobmngrd、kompira_sendevt 等) を行う構成では、
サンプル値のまま運用しないことを明示する。
デプロイ時のフローに環境変数で独自パスワードを設定できるよう(設定しや
すいよう)に改良する。
差し替え可能とする。
エラーで停止するようにし、サンプル値が暗黙に使われる事故を構造的に防止する。
外部DBではない構成 (single/basic) の構築フローにおいても、ランダム
パスワードを生成して適用できるようにスクリプトファイルを用意する
(ただし強制はしない)。
しまわないよう、配布物側でも除外設定をあらかじめ入れておく。
よう、本体 (kompira-v2) 側にも併せて必要な対応を実施する。
なお、ke2-docker のサンプルファイルから "kompira" 等のデフォルト値の記述を
完全に削除することは今回の対応範囲としません。サンプル集としての可読性と、
利用者が任意の値を上書きできることのバランスを優先します。
対応範囲
本 Issue では以下を対象とします。
cluster/swarm 構成および PostgreSQL/Pgpool-II によるデータベースクラスタ
構成については、検討範囲が広がるため別 Issue で対応します。