注目キーワード
  1. SEO
  2. デザイン
  3. 集客

【第4回】SVNとADのLDAP連携設定:最新Windows Serverの署名要件を突破する

はじめに

第4回では、Apacheのモジュールである mod_dav_svnmod_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接続」が拒否されます。今回は閉塞環境での運用を前提に、このルールを緩和します。

  1. グループポリシー管理の起動
    ADサーバー(Windows Server)にログインし、[サーバーマネージャー] > [ツール] > [グループ ポリシーの管理] を開きます。

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

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

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

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

  5. 設定の反映
    コマンドプロンプトを管理者権限で開き、以下のコマンドを打ち込んで設定を即座に反映させます。

    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)」へのアップグレードします!

【応用編:第5回/全5回】

はじめに 第4回でSVNとADの連携は成功しました。しかし、セキュリティポリシーが厳しい現場では「AD側の署名要件を『なし』にするなんて許されない」というケースがあります。 今回はその「課題」を片付けます。通信を暗号化(SSL/TLS)[…]

最新情報をチェックしよう!