【重要!】Redmineの設定で「LDAP認証」が暗号化されていない件

別の記事をまとめていて、ふと以前から気になっていたことがアタマをよぎったので、紹介したいと思います。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のサービス一式を再起動します。「*********」には任意の暗号化鍵を入力します。

すでに平文でパスワードがデータベースに保存されている場合は、次のコマンドで暗号化できるそうですので、試してみます。

rake db:encrypt RAILS_ENV=production

ほぼ『Bitnami Redmine Stack 3.2.0』をインストールしたままの状態ですが、rakeコマンドがabort(異常終了)しています。必要なバージョンのGemfileがインストールされていないためですね。。。

今回は手作業でGemをインストールするため、https://rubygems.org/で「rake」を検索して「10.4.2」をダウンロードしてきました。

「C:\Bitnami\redmine」フォルダにダウンロードしたGemファイルを保存して、次のコマンドでインストールを実行しました。

gem install rake -v 10.4.2

インストールできたので、さきほどのコマンドをもう一度入力してみます。

今度は上手く行ったみたいです。早速、MySQLから確認したところ暗号化されていました!

念のため設定画面からパスワードを変更して、再度表示してみたところ、新たに暗号化されていました。

以上で、パスワードの暗号化は完了です。

細かなところまで気くばりが行き届いていて、とても良い機能だと思いました。またぼくの中でRedmineの株があがりました。

折角ですから、データベースを公開したり、個人パスワードを打ち込んでも大丈夫なように、この機能を既定でオンにしていただきたいと思いますが、如何でしょうか?

最後までご覧いただきありがとうございます。
スポンサーリンク

フォローする