別の記事をまとめていて、ふと以前から気になっていたことがアタマをよぎったので、紹介したいと思います。Redmineではユーザー認証にLDAPが使用できますが、以前から、
設定時に入力するパスワードが暗号化されておらず、MySQLからは丸見え
になっているのです。
【2016年2月21日 追記】
Redmineコントリビューターの前田剛さんから、暗号化する方法をご教示いただきました。「Redmine1.2から暗号化する機能は実装されている」とのことです。
ありがとうございます!
実際に暗号化を試して、記事の最後に方法を追記しました。あわせてご覧ください。
LDAP認証の設定
現象は簡単に確認することができます。
管理者メニュー > LDAP認証 から[新しい認証方式]をクリックします。表示された画面に、次のような適当な値を入力して[作成]ボタンをクリックしてください。
単に確認するだけですので、実在するホストやアカウントである必要はありません。
今回、パスワードには「PassVisible」と入力してみました。
『A5:SQL Mk-2』から確認
『A5:SQL Mk-2』から「auth_sources」テーブルを開くと次のように表示されます。
もうそのまま「PassVisible」と表示されています。
MySQLから確認
コマンドプロンプトからテーブルの参照権限があるアカウントでMySQLにログインします。データベースを「bitnami_redmine」に切り替えた後、「auth_sources」テーブルの中身を表示すると、簡単にパスワードを見ることができてしまいます。
まとめ
最新のRedmine3.2でもこのような状況です。過去のバージョンでもすべて同様です。
特に、PCへのログインに使用しているLDAP認証をRedmineでも使用している場合は、十分に注意してください。
安易に個人のアカウントを設定に使用すると、簡単に読み取られて、悪用されるリスクが伴うことになります。
暗号化の方法(追記)
前田剛さんから暗号化の方法をご教示いただきました。
実際に試したところ、バッチリ暗号化できましたので紹介します。MySQL(Redmine)をデータ分析などの目的で公開している場合は、この暗号化の実施をお勧めします。
最初に、Redmineの設定ファイル「configuration.yml」をテキストエディターで開きます。このファイルは「(インストールフォルダ)\apps\redmine\htdocs\config」にあります。
最後の行に「database_cipher_key: **********」を追加して保存後、Redmineのサービス一式を再起動します。「*********」には任意の暗号化鍵を入力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
default: email_delivery: delivery_method: :smtp smtp_settings: enable_starttls_auto: true address: "smtp.gmail.com" port: 587 domain: "smtp.gmail.com" authentication: :plain user_name: clubmasterp@gmail.com password: fatntgbttneyesqd database_cipher_key: OpenSesame! |
すでに平文でパスワードがデータベースに保存されている場合は、次のコマンドで暗号化できるそうですので、試してみます。
ほぼ『Bitnami Redmine Stack 3.2.0』をインストールしたままの状態ですが、rakeコマンドがabort(異常終了)しています。必要なバージョンのGemfileがインストールされていないためですね。。。
今回は手作業でGemをインストールするため、https://rubygems.org/で「rake」を検索して「10.4.2」をダウンロードしてきました。
「C:\Bitnami\redmine」フォルダにダウンロードしたGemファイルを保存して、次のコマンドでインストールを実行しました。
インストールできたので、さきほどのコマンドをもう一度入力してみます。
今度は上手く行ったみたいです。早速、MySQLから確認したところ暗号化されていました!
念のため設定画面からパスワードを変更して、再度表示してみたところ、新たに暗号化されていました。
以上で、パスワードの暗号化は完了です。
細かなところまで気くばりが行き届いていて、とても良い機能だと思いました。またぼくの中でRedmineの株があがりました。
折角ですから、データベースを公開したり、個人パスワードを打ち込んでも大丈夫なように、この機能を既定でオンにしていただきたいと思いますが、如何でしょうか?