はじめに
第4回では、Apacheのモジュールである mod_dav_svn と mod_ldap を使い、SVNの認証をActive Directoryに丸投げする設定を行います。
この設定が完了すれば、ユーザーはWindowsのログインパスワードと同じ情報でSVNにアクセスできるようになります。設定ファイルの「1行」に込められた意味を理解しながら進めましょう。
連携設定のポイント(お急ぎの方へ)
- subversion.confの編集: 親Location(
/svn)で共通設定を行い、子Locationでグループ制限をかけます。 -
SELinuxの通信許可:
setsebool -PでApacheのLDAP通信を許可します。 -
AD署名要件の緩和: Windows Server 2025等の最新環境では、AD側のポリシー変更(署名なし許可)が必須です。
SVN側:SELinuxの設定(LDAP接続許可)
デフォルトのSELinuxは、「Webサーバー(Apache)が外部のサーバー(AD)に通信しに行くこと」を禁止しています。そのため、以下のコマンドでこの制限を解除します。
# ApacheがLDAP(AD)へ接続することを恒久的に許可 sudo setsebool -P httpd_can_connect_ldap on # ステータス確認(onになっていればOK) sudo getsebool httpd_can_connect_ldap
AD側:LDAP署名要件の設定
Windows Server 2022/2025等の最新環境では、セキュリティ強化のため「署名なしのLDAP接続」が拒否されます。今回は閉塞環境での運用を前提に、このルールを緩和します。
-
グループポリシー管理の起動
ADサーバー(Windows Server)にログインし、[サーバーマネージャー] > [ツール] > [グループ ポリシーの管理] を開きます。

-
ポリシーの編集
[ドメイン] > [作成したドメイン(ここではlob.local)] > [Default Domain Policy] を右クリックし、[編集] を選択します。

-
対象の項目へ移動
以下のツリーを順に展開します。コンピューターの構成>ポリシー>Windows の設定>セキュリティの設定>ローカル ポリシー>セキュリティ オプション

-
設定の変更
右側のリストから 「ドメイン コントローラー: LDAP サーバー署名要件」 を探し、ダブルクリックします。

「このポリシーの設定を定義する」のチェックをつけて、「なし」に変更します(デフォルトは「要求する」になっている場合があります)。

-
設定の反映
コマンドプロンプトを管理者権限で開き、以下のコマンドを打ち込んで設定を即座に反映させます。
gpupdate /force
SVN側:subversion.conf の編集
前回で作成した接続テスト用としての設定ファイルに対して、Apacheに「SVNへのアクセスが来たらADに確認しに行け」と命令するための設定に修正します。
subversion.conf を開く
sudo vi /etc/httpd/conf.d/subversion.conf
subversion.conf に記述
リポジトリごとに <Location> ブロックを分けて記述します。
# 共通のLDAPキャッシュ設定
LDAPSharedCacheSize 500000
LDAPCacheEntries 1024
LDAPCacheTTL 600
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 600
# 全ての /svn/ 配下に適用される共通設定
<Location /svn>
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL "ldap://192.168.10.10/OU=SVN,DC=lab,DC=local?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=svn_auth,OU=SVN,DC=lab,DC=local"
AuthLDAPBindPassword "Pass123"
</Location>
# --- リポジトリAの設定 ---
<Location /svn/repo_a>
DAV svn
SVNPath /var/www/svn/repo_a
AuthName "SVN Repository A Authentication"
# 認可:SVN_A_Usersグループのみ
Require ldap-group CN=SVN_A_Users,OU=SVN,DC=lab,DC=local
</Location>
# --- リポジトリBの設定 ---
<Location /svn/repo_b>
DAV svn
SVNPath /var/www/svn/repo_b
AuthName "SVN Repository B Authentication"
# 認可:SVN_B_Usersグループのみ
Require ldap-group CN=SVN_B_Users,OU=SVN,DC=lab,DC=local
</Location>
重要項目の解説
① AuthLDAPURL(ADへの問い合わせ先)
ここには 「どこからユーザーを探すか」 を書きます。
-
192.168.10.10: ADサーバーのIP。 -
OU=SVN,DC=lab,DC=local: 第2回で作成したOUを指定します。 -
sAMAccountName: WindowsのログインIDで照合するという指定です。
② AuthLDAPBindDN(BindDN)
SVNサーバーがADにログインするためのアカウントです。
第2回でメモした svn_auth の識別名(DN) を正確に貼り付けます。
③ Require ldap-group(アクセス制限)
ここが「認可」のキモです。
第2回で作成した SVN_A_Users グループのDN を指定することで、このグループに入っていないユーザーは、ID/パスワードが正しくてもアクセスを拒否されます。
設定の反映とテスト
設定の反映
書き換えたら、Apacheの設定に間違いがないかチェックして再起動します。
# 構文チェック(Syntax OKが出れば成功)
sudo httpd -t
# Apache再起動
sudo systemctl restart httpd
テスト(動作確認)
この設定により、第2回で作ったユーザーたちは以下のような挙動になります。
| ユーザー名 | 所属グループ | リポジトリA(repo_a) | リポジトリB(repo_B) |
| svn_user01 | SVN_A_Users | アクセス可 | 拒否 |
| svn_user02 | SVN_B_Users | 拒否 | アクセス可 |
| svn_user03 | 両方所属 | アクセス可 | アクセス可 |
おわりに
ついに、Linuxサーバー、Active Directory、そしてセキュリティ設定のすべてが繋がりました。
最新のAD環境(Windows Server 2025)を相手にする場合、Apache側の設定だけでなく、AD側のポリシー変更という一歩踏み込んだ対応が必要になります。
第4回では構築を優先するためにAD側のセキュリティ要件(署名)を緩和しましたが、本番環境では「セキュリティを落としたくない」という現場も多いはずです。
次回、セキュリティ要件を「有効」にしたまま、証明書を使って通信を暗号化する「LDAPS(LDAP over SSL/TLS)」へのアップグレードします!
はじめに 第4回でSVNとADの連携は成功しました。しかし、セキュリティポリシーが厳しい現場では「AD側の署名要件を『なし』にするなんて許されない」というケースがあります。 今回はその「課題」を片付けます。通信を暗号化(SSL/TLS)[…]
