はじめに
オープンソース製のプロジェクト管理ツールRedmine は開発者のみならず、様々な業種でも活用されています。
今回は、既存で稼働しているRedmineの認証部分をActive Directoryサーバと連携を行い、ID管理の効率化を図りたいと思います。
作業環境
以下の環境はすでに構築済みでの前提で本作業を進めます。
- Redmineサーバ
- ActiveDirectoryサーバ
※1 今回の事例では両サーバ上にある、ID情報は異なっている状態なので、ID情報をActiveDirectory側に統一させます
例 山田 太郎さん
- Redmine側のID情報: Taro Yamada
- ActiveDirectory側のID情報: User001
事前準備
なにはともあれ、作業前の状態でバックアップを取得します。
cd /var/tmp/ mysqldump -uroot -p redmine > redmine.dump
次に、RedmineサーバからActiveDirectoryサーバに問い合わせを行い、応答が返ってくるか確認します
# ldapsearch -x -D "user001@example.local" -w PASSWORD -h 192.168.100.10 -b "cn=Taro Yamada,ou=myusers,dc=example,dc=local" "(objectclass=*)" | grep sAMAccountName sAMAccountName: user001
Redmine(管理画面側)の設定
「管理 -> LDAP認証 -> 新しい認証方式 」の画面にて、以下の項目を入力します。
名称:任意でOK (例: ActiveDirectory) ホスト:ADサーバのIPアドレス (例: 192.168.100.10) ポート:389(デフォルト) LDAPS:チェックしない アカウント:CN形式で入力 (例:CN=Administrator,CN=Users,DC=example,DC=local) パスワード:上記アカウントのパスワード 検索範囲:CN形式で入力 (例:DC=example,DC=local) LDAPフィルタ:特に入力なし タイムアウト:特に入力なし あわせてユーザを作成:チェックする ログイン名属性:sAMAccountName 名前属性:givenName 苗字属性:sn メール属性:mail
設定が終了したら、「保存」ボタンを押し、認証方式一覧画面に戻ります。
この時、「テスト」を押すとActiveDirectoryサーバに接続テストが行われます。
ここまでは、新規でRedmineサーバを利用し、ActiveDirectoryサーバを連携するまでの手順です。
Redmineにログインする際に、Redmine上にユーザが存在しなければ、ActiveDirectory認証用のユーザが発行されます。
Redmine(データベース側)の設定
ここからは、既存ですでに登録されているRedmineユーザの認証方式をActiveDirectory認証に切り替える手順を記載します。
まずはRedmine上のデータベースにあるユーザ情報を確認します。
mysql> select id,login,auth_source_id,type from users WHERE type = 'User' LIMIT 10 ; +----+-------------------+----------------+------+ | id | login | auth_source_id | type | +----+-------------------+----------------+------+ | 16 | yamada_taro | NULL | User | | 17 | mertie_nader | NULL | User | | 18 | davon_predovic | NULL | User | | 19 | cydney_jacobs | NULL | User | | 20 | marcella_kiehn | NULL | User | | 21 | damion_bode | NULL | User | | 23 | josiane_hackett | NULL | User | | 24 | rosario_bauch | NULL | User | | 25 | ardella_wiegand | NULL | User | +----+-------------------+----------------+------+
Redmineのデフォルトの認証方式では「auth_source_id」がNULL扱いになっています。
ActiveDirectory認証に切り替える場合は、以下のUPDATEコマンドで変更を行います。
mysql> UPDATE users SET auth_source_id = '1' WHERE type = 'User' ; mysql> select id,login,auth_source_id,type from users WHERE type = 'User' LIMIT 10 ; +----+-------------------+----------------+------+ | id | login | auth_source_id | type | +----+-------------------+----------------+------+ | 16 | yamada_taro | 1 | User | | 17 | mertie_nader | 1 | User | | 18 | davon_predovic | 1 | User | | 19 | cydney_jacobs | 1 | User | | 20 | marcella_kiehn | 1 | User | | 21 | damion_bode | 1 | User | | 23 | josiane_hackett | 1 | User | | 24 | rosario_bauch | 1 | User | | 25 | ardella_wiegand | 1 | User | +----+-------------------+----------------+------+
次に、ActiveDirectoryサーバ上にあるID情報と統一を行う為、個別に login 情報名を変更して、既存のパスワードハッシュを NULL へ更新します。
この作業を行う事で、ActiveDirectoryサーバにあるID情報と同じになるので、認証ができるようになります。
mysql> UPDATE users SET login = 'user001' WHERE id = '16' ; # yamada_taro mysql> UPDATE users SET login = 'user002' WHERE id = '17' ; # mertie_nader mysql> UPDATE users SET login = 'user003' WHERE id = '18' ; # davon_predovic mysql> UPDATE users SET login = 'user004' WHERE id = '19' ; # cydney_jacobs mysql> select id,login,auth_source_id,type from users WHERE type = 'User' LIMIT 10 ; +----+-------------------+----------------+------+ | id | login | auth_source_id | type | +----+-------------------+----------------+------+ | 16 | user001 | 1 | User | | 17 | user002 | 1 | User | | 18 | user003 | 1 | User | | 19 | user004 | 1 | User | | 20 | user005 | 1 | User | | 21 | user006 | 1 | User | | 23 | user008 | 1 | User | | 24 | user009 | 1 | User | | 25 | user010 | 1 | User | +----+-------------------+----------------+------+ mysql> UPDATE users SET salt = NULL WHERE type = 'User' ;
これで諸処の設定は完了です。
ログイン画面にて、ActiveDirectoryで設定している認証情報でログインができれば、終了となります。
まとめ
ActiveDirectoryサーバと認証連携を行うことで、ID管理の効率化が図れました。
作業記録的な内容となってしまいましたが、何かのご参考になれば幸いです。
参考文献
[amazonjs asin=”4822279952″ locale=”JP” title=”Redmine超入門 増補改訂版 (日経BPムック)”]
[amazonjs asin=”4822298280″ locale=”JP” title=”ひと目でわかる Active Directory WindowsServer 2012 R2版 (TechNet ITプロシリーズ)”]