[ VCS ] SCM ManagerでSUBVERSONとActive Direcotryの認証連携をする

[ VCS ] SCM ManagerでSUBVERSONとActive Direcotryの認証連携をする

はじめに

最近は Github が主流かと思いますが、まだまだ諸事情などで社内で Subversion を使い続けているケースもあると思います。
今回は、Subversion のリポジトリ管理とユーザ利用権限が一元で管理ができる SCM Manager を利用して、既存のSVNリポジトリを SCM Manager 配下に管理し、Active Directory と連携して、適切な権限管理とリポジトリ管理をWEBインターフェース上から操作してみます。

解決したい課題

これまではリポジトリの作成、ユーザ認証の設定などはサーバ管理者が行っていたが、それぞれの部署で非サーバ管理者が簡易的にできるようにしたい。
利用サービスの増加やスタッフの部署移動などで、それぞれのサービス毎に行っていた認証許可を一元管理で行いたい。

解決手段

リポジトリ・ユーザ認証管理をWEBインターフェース上から操作のできる「SCM Manager」を活用し、Active Directoryサーバと連携をする。

事前調査

ソフトウェア選定にあたり事前調査したところ、以下の3つが候補として上がってきました。
「Submin」「SVN Manager」も試してみたのですが、Active Directory と連携するにはひと手間必要でした。
「SCM Manager」はプラグインを提供しており、その中に Active Directory プラグインを使ってみたところ、すんなり連携可能でした。

Submin
SVN Manager
SCM Manager

What is SCM Manager ?

公式HPトップの内容を和訳してみました。

https://www.scm-manager.org/

HTTP経由で Subversion / Git / Mercurial とのリポジトリを容易に管理することができます。

・非常に簡単なインストール
・SCM Managerは、そのウェブインターフェースから完全に構成可能であり、設定ファイルをハックする必要はありません
・Apache + DataBase をインストールする必要はありません
・ユーザ、グループ、およびアクセス許可の管理
・Gitは、 MercurialのとSubversionのためのボックスのサポートのうち
・完全なRESTfulなWebサービスAPI (JSON / XML)
・リッチユーザーインターフェース
・簡単なプラグインAPI
・利用可能な便利なプラグイン( LDAPベース / ActiveDirectory / PAM認証)
・BSDライセンス

SCM Manager の起動

コンテンツをダウンロードして、ファイルを展開後、SCM Manager を起動します。
起動には java の環境が必要になります。

tar xzvf scm-server-1.45-app.tar.gz
cd scm-server/bin
./scm-server

http://localhost:8080/
ID: scmadmin
PW: scmadmin

既存Subversion リポジトリの移行

今回は 既存のSubversion サーバとは別のサーバに構築しているので、リポジトリのお引越しを行います。
移行先サーバからダンプファイルを取得し、そのままロードまで行います。

cd ${SVN_HOME}
for REPO in repo1 repo2 repo3 repo4 repo5 ; do
svnrdump dump --username USER --password 'PASSWORD' http://repo.example.local/svn/${REPO} > /var/tmp/${x}.svndump
svnadmin create ${REPO}
svnadmin load ${REPO} < /var/tmp/${REPO}.svndump
chown -R tomcat. ${REPO}
done

SCM Manager 側の設定

リポジトリのインポート

先ほどお引越ししてきたリポジトリ達を SCM Manager 側にインポート処理を行います。

左側ナビゲーションのメインにある「Import Repositories」→「Subversion」→「Import from directory」で
インポートされたリポジトリが表示されたら完了です。

Active Directoryサーバとの連携

左側ナビゲーションのメインにある「Config」→「Plugins」 →「scm-auth-ldap-plugin」の Install をクリックし、SCM Manager を再起動します。

※scm-activedirectory-auth-plugin はホストOSが Windows Server の場合に利用可能。

ログイン画面表示後、Active Directory のアカウント情報でログインができれば連携成功です。

利点

.htpasswd ファイルベース管理からの開放
Git / Mercurial も利用可能
プラグインが豊富

注意点

管理画面が英語
リポジトリURLが変更となるため、切替設定をする必要がある
リポジトリ以下のディレクトリ単位で権限設定ができない(?)

まとめ

Subversion + SCM Manager + Active Directory でリポジトリ・ユーザ管理が効率的になりました。
サーバ管理者以外でもリポジトリ管理が容易になったので、委譲したらどんどん活用してもらいたいです。

参考文献

SCM-Managerの認証をActiveDirectoryで行う