前回の続きです。
LDAP ManagerのLDAP→AD関連プラグイン
以下の4つが存在します。この記事ではすべてのプラグインについて検証します。
- LDAP→AD反映
LDAPサーバからADにユーザ情報を連携するプラグイン。抽出フィルタを用いた連携ユーザの絞り込み、連携する属性のマッピング、リバースマッピングなどが可能。 - ADパスワード同期
AD側で変更したパスワードをLDAP側に連携するアプリケーション。 - ADグループメンテナンス
指定した条件を満たすLDAPユーザをメンバとしたグループをADに追加・更新・削除できるプラグイン。 - LDAPグループ→ADグループ反映
LDAPサーバのグループ情報をADに反映するプラグイン。
LDAP→AD反映
※既にADを構築した環境で検証しています。
事前準備
プラグインをインストールします。
LDAP Manager コンソール 「環境設定」 > 「基本設定」 > 「ディレクトリ管理」より、ADを追加します。
ADを追加する場合、「ホスト名」の指定形式はFQDNである必要があるため、事前にFQDNから名前解決できるようにしておきます。
次に、「環境設定」 > 「ディレクトリ属性設定」より、追加したADで使用する属性を追加します。
ここでは、top
、container
、user
およびgroup
オブジェクトクラスの属性、sAMAccountName
、sn
、userPassword
属性と、次回パスワード変更
などのアカウントオプション制御用の特別な属性も追加します。
設定
LDAP Managerコンソール「環境設定」 > 「LDAP -> AD反映1」を選択して設定画面を開きます。
抽出元のディレクトリにメタディレクトリサーバを指定し、person
オブジェクトクラスのエントリを抽出対象とします。
反映先のAD、エントリ/コンテナ用の識別属性を指定し、ホームディレクトリを作成する設定にします。
ADパスワード同期の設定は一旦スキップします。
マッピングは以下の通りとしました。
KerberosAES256暗号化をサポート
にTRUE
をマッピングしているため、アカウントの追加・更新時にADの同設定が有効となります。
リバースマッピングにより、反映後に反映元LDAPサーバのtelephoneNumber
属性に123456
という値が格納されるようにしました。
homedrive
にはD:
~Z:
までのドライブレター、homeDirectory
には「基本設定」 > 「ディレクトリの追加」 > 「ユーザDN」で指定したアカウントで接続できるUNCパスを記述します。
確認
LDAP Managerコンソール「手動実行」より「LDAP -> AD反映1」を実行します。
するとこのように、AD側にユーザが追加されます。
設定の通り、「このアカウントでKerberos AES 256 ビット暗号化をサポートする」にチェックが入っていることがわかります。
LDAPサーバ側にも、設定どおりtelephoneNumber
属性が123456
という値で追加され、またパスワード照合属性userPassword;lang-ad1
も追加されています。
ホームディレクトリも作成されています。
次に、リモート実行を試します。管理者ユーザメンテナンスの連携プラグインにLDAPTOAD1
を設定して保存します。
ユーザ情報を編集します。
そうすると、「管理者ユーザメンテナンス」プラグインの実行後、「LDAP -> AD反映1」がリモート実行され、編集したユーザ情報がADに連携されます。
ユーザを削除します。(管理者ユーザメンテナンスの削除方法は「無効」)
AD側のアカウントも「無効」となりました。
復帰を行います。
ADでも復帰処理が行われます。
上記では両方が「無効」の削除処理でしたが、LDAP側のみを/AD側のみを「無効」とし、もう片方を「削除」とするような使い方もできます。
ADパスワード同期
インストール・設定
ドメインコントローラにVisual C++ 2015-2022再頒布可能パッケージ、ADパスワード同期フックモジュール、パスワード同期(連携処理 & 設定ツール)をインストールします。
C:\Program Files\EXGEN\ADPasswdSyncHook\ADPasswdSyncHookRegAdd.exe
を実行し、サーバを再起動します。
また、LMADPasswdSyncService.exe
でサービスへの登録を行います。
最後に、ADPasswdSyncHookCfg.exe
を起動し、パスワード同期フックモジュールの設定を行います。
LDAP Manager管理対象のユーザエントリはdescription
属性にLM
という値を持つように設定しているので、それに準拠。パスワード同期識別属性名には任意のADのユーザエントリの属性を設定します。
設定できたらサービスを起動します。
LDAP Manager本体側では、まず「LDAP -> AD反映1」の「ADパスワード同期設定」にて、「ADパスワード同期を使用する」にチェックを入れ、パスワード同期識別属性名にパスワード同期フックモジュールで設定した属性を、パスワード情報属性名には1. LDAPサーバ構築編で追加したexgPasswdInfo
属性を設定します。
「環境設定」 > 「ADパスワード同期」の設定を行います。
「ADログオン名格納属性名」では、LDAP -> AD反映にてcn
=sAMAccountName
となるように設定しているので、こちらでも同様に設定します。
マッピング情報として、種類「パスワード」でuserPassword
にマッピングします。
確認
ユーザのパスワードを変更します。
結果、ADで変更したパスワードがLDAPサーバ側にも反映されます。
ADグループメンテナンス
設定
LDAP Managerコンソール 「環境設定」 > 「ADグループメンテナンス1」から設定します。
各識別属性の設定と、ADのcn=Builtin
およびcn=Users
配下のグループに対する操作に関する設定、空のグループの削除の設定等を行います。
次に、ADグループ情報「追加」より、ADグループ情報の設定を行います。
ここでは、LDAP属性description
の値を名前とするグローバルなセキュリティグループを定義しました。
グループ説明の設定はスキップします。
メンバ条件は(&(cn=*)(objectclass=person))
とします。
親グループにDomain Admins
を指定しました。(このグループネストの設定は「LDAPグループ → ADグループ反映」も使用する場合は設定しないでください)
組織ツリーは未定義のため、スキップします。
確認
「ADグループメンテナンス1」を手動実行します。
正常に実行できると、AD側にuser1、user2をメンバーとして持つLM
というグループが作成されます。
親グループがDomain Admins
となっています。
LDAPグループ → ADグループ反映
設定
「環境設定」 > 「LDAPグループ -> ADグループ反映1」を選択します。
対象のLDAPサーバ、抽出フィルタ、メンバ属性についての設定と、AD側でグループを格納するコンテナ、各種識別名、グループの設定を行います。
マッピングは下記の通りとしました。
現在のLDAP側のグループは下記の通りとなっており、「子グループの子グループ」はメンバを持ちません。
この状態で「LDAPグループ -> ADグループ反映1」を手動実行します。
するとこのように、「グループ1」と「子グループ」のみが残存します。
処理としては、グループの追加処理 → メンバの判定 → メンバの存在しないグループの削除となっています。
グループを「削除しない」設定で連携し、「子グループ」の詳細を確認すると、メンバとして「子グループの子グループ」を持っていることがわかります。
「削除する」設定では、「子グループの子グループ」が削除されてしまうため、メンバを持たないグループとなります。
しかし、「子グループ」がメンバを喪失してもメンバを持たないグループの削除処理は既に完了しているため、「子グループ」は残置されます。
まとめ
LDAPからADに連携する各プラグインについて検証しました。
今回は検証していませんが、各プラグインでは組織ツリーの設定による格納先コンテナの制御などが可能です。
次の記事では、ADからLDAPに連携する各プラグイン・ツールを検証します。