LDAP Managerを使ってみた！ 6. AD → LDAP編

[前回](https://qiita.com/ahra_/items/a6934e864b01a12d102f)の続きです。
## ADからLDAPに反映するためには
4つのプラグイン・Webアプリケーションなどを組み合わせて連携を実施します。
今回は一連のシステムすべてを検証します。
1. ADアグリゲータ
ADのユーザ情報を定期的に取得し、内部DBとの差分情報をCSV化して「アグリゲータレシーバ」に送信するWebアプリケーション。
2. アグリゲータレシーバ
ADアグリゲータや管理者メンテナンス、RESTful APIを通じて送信されたCSVを受け取り、暗号化して共有ファイルサーバに保存するWebアプリケーション。
最大99個のエンドポイントを持つことができ、エンドポイントごとにCSVファイルの格納先を設定できる。
3. CSV→LDAP反映
CSVの情報からLDAPサーバにユーザ情報を反映するプラグイン。
4. ADパスワード同期
ADのパスワード更新情報をADアグリゲータに連携するアプリケーション。
製品としては[前回](https://qiita.com/ahra_/items/a6934e864b01a12d102f)使用したものと同じです。
## 設定
### アグリゲータレシーバ
任意の場所に共有フォルダを作成します。
![pic (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5da431db-230f-4b0a-0240-a99e50658e1b.png)
`<tomcat_home>\webapps\`以下に`aggregator-rv`フォルダをコピーします。
![pic (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a69289c5-7a0f-31fc-aa74-05807ccaf640.png)
LDAP Manager付属の設定値生成ツール（`<インストールメディア>\LDAPManager\LDAPManager7\TOOL\ExgenConvert\ExgenConvert.exe`）を使用し、暗号化パスワードを生成します。
![pic (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b034ce4a-b286-e926-089f-79fb038aee20.png)
`<tomcat_home>\webapps\aggregator-rv\WEB-INF\aggregatorrv.ini.templete`を`aggregatorrv.ini`にコピーします。
![pic (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ade62247-79b4-4d55-f87e-d8c40a033520.png)
`aggregatorrv.ini`を編集します。
`idXXX`には任意の値を、`passwordXXX`には設定値生成ツールで暗号化したパスワードを指定します。
CIFS情報セクションでは、エンドポイントごとにCSVファイルを配置する共有フォルダと認証情報を指定します。
`net_password`には設定値生成ツールで暗号化したパスワードを指定します。
ここでは、エンドポイント`upload01`に送信されたCSVファイルが`192.168.181.42\csv\Adaggregator`に保存される設定としています。
``` aggregatorrv.ini
;認証ID,パスワード
[authentication]
id001=admin001
password001=d99145262b24cc7356fc10aff1951434

;CIFS情報
;エンドポイントupload01の共有先
[upload01]
domain=ldap-manager
net_id=administrator
net_password=dba641b113da44cf
host=192.168.181.42
upload_path=/csv/Adaggregator/
```
保存してTomcatを再起動します。
### パスワード同期フックモジュール
`ADPasswdSyncHookCfg.exe`で設定します。
連携先を「ADアグリゲータ」とし、任意の連携情報格納パス、ADアグリゲータのURLと、任意のID・パスワードを設定してサービスを起動します。
![pic (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/65cf4d5b-5526-7a5a-af85-c739325bc947.png)
### ADアグリゲータ
`<tomcat_home>\webapps\`に`adaggregator`フォルダをコピーします。
![pic (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/49877920-db22-216d-a05f-606669a7107a.png)
`<tomcat_home>\webapps\adaggregator\WEB-INF\adaggregator.ini.templete`を`adaggregator.ini`にコピーします。
![pic (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/65e6876e-738c-4b86-29b4-2c5748969c0c.png)
`adaggregator.ini`を編集します。
アグリゲータレシーバのURLとして[設定した](#アグリゲータレシーバ)受信エンドポイントのURLを指定し、認証IDとパスワードもそれぞれアグリゲータレシーバでの設定値に合わせます。
ADパスワード同期サービス管理情報として、[設定した](#パスワード同期フックモジュール)認証ID、パスワードを入力します。
設定項目`init_start_time=`をコメントアウトし、ADアグリゲータが起動した瞬間からポーリングを開始するようにしました。
ADへの接続情報、ベースDN、フィルタ等も指定します。
ADから取得した情報と比較するDBにはPostgreSQLとSQLiteが使えますが、今回はSQLiteとしました。
<details><summary> adaggregator.ini </summary>

``` 
;アグリゲータレシーバサーバ情報
[aggregator_rv]

;アグリゲータレシーバのURL
url=http://192.168.181.43:8080/aggregator-rv/upload01

;プロキシサーバ経由の接続を行うか
;on（行う）/off（行わない）
proxy_use=off

;プロキシサーバのホスト名
proxy_host=

;プロキシサーバのポート番号
proxy_port=

;認証ID
id=admin001

;パスワード（ExgenConvertで生成された値）
password=d99145262b24cc7356fc10aff1951434


;ADパスワード同期サービス管理情報
[password_hook]

;認証ID
id=admin

;パスワード（ExgenConvertで生成された値）
password=d99145262b24cc7356fc10aff1951434

;ポーリング情報
[polling]

;実行間隔分（10～1440）
per_minute_exe_interval=10

;初回実行時間（hh:mm）
:init_start_time=12:00

;AD接続情報
[ad]

;ホスト名
host_name=ad2ldap.example.com

;ポート番号
port=389

;SSL接続有無 on（する）/off （しない）
ssl=off

;ベースDN
basedn=DC=ad2ldap,DC=example,DC=com

;検索時の抽出フィルタ

filter=(&(objectclass=user)(userPrincipalName=*))

;接続ユーザDN
userdn=cn=Administrator,cn=Users,dc=ad2ldap,dc=example,dc=com

;接続ユーザパスワード（ExgenConvertで生成された値）
userpassword=dba641b113da44cf

;連携時にキーとなる属性 1:（userPrincipalName）、2（sAMAccountname）
key_attribute=1

;1回の検索での検索上限数（1～2000000000）
search_limit=1000

;比較DB情報
[db]

; 比較DBの種類 1（PostgreSQL） / 2（SQLite）
db_type=2

;比較DBがPostgreSQLの場合
;ホスト名
db_host=
;ポート番号
db_port=5432
;データベース名
db_name=adaggregator
;接続ユーザID
db_user=postgres
;パスワード（ExgenConvertで生成された値）
db_password=d99145262b24cc7356fc10aff1951434

;比較DBがSQLiteの場合
;DB(SQLite)を格納するフォルダ
directory="c:\\temp"

;アグリゲータレシーバ送信用CSVフォーマット情報
[aggregator_rv_csv]

;区切り文字 1（カンマ）/2（タブ）
delimiter=1

;複数値区切り文字 1（セミコロン）/2（タブ）
multi_delimiter=2

;ファイル出力文字コード 1（SHIFT_JIS）/2（Unicode）
character_code=2
```
</details>

生成するCSVファイルの設定が`<tomcat_home>\webapps\adaggregator\WEB-INF\mapping.xml`で可能ですが、デフォルトでも十分な設定がされているため、今回はスキップします。
### CSV → LDAP反映
プラグインをインストールします。
![pic (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b983a18e-8762-d775-373f-7ccdd5eb08e0.png)
LDAP Manager コンソール「環境設定」> 「CSV -> LDAP反映1」を選択します。
「CSV属性名設定」にて、ADアグリゲータが作成するCSVファイル用のテンプレート（`<インストールメディア>\LDAPManager\CSVLDAP&CSVLDAPGroup\Template\ADAggregator.csv`）を指定して「ファイルインポート」します。
![pic (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/604c4ba3-61e2-d9ee-b9b1-59b06845f4da.png)
![pic (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/615f0832-de7d-ea7d-8e23-cabfb3a5f358.png)
「基本設定」にて、共有フォルダにアクセスするユーザの認証情報、フォルダ名、ファイル名、区切り文字等と、反映先LDAPサーバの情報を入力します。
![pic (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fb496fa9-b81e-2294-0abd-bcedc18e8e76.png)
マッピング設定は以下のようにしました。
![pic (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b1f5bb42-cabd-8a54-bbbf-ea117d642d7a.png)
## 確認
ADにてユーザを作成します。
![pic (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/354a7ae2-8f67-f672-d207-4bae5db1a558.png)
Tomcatを起動します。
ADアグリゲータとアグリゲータレシーバにより、指定の場所にCSVファイルが作成されます。
![pic (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/59312d3b-86eb-4ed6-9bee-cf253e06620a.png)
このCSVファイルをCSV → LDAP反映で取り込みます。今回は手動実行で取り込み処理を行います。実運用ではスケジュール実行などを使用するのが良いでしょう。
![pic (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/59108fdb-2723-9664-3def-7fc6e2671482.png)
正常に取り込み処理が実行されると、LDAPサーバ側にユーザエントリが追加されます。
![pic (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4b0a5146-9d24-3ca4-a64f-dc09bdc95a6d.png)
その他、変更処理や削除処理も正常に行えています。
![pic (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a7db2ab7-c371-0ee6-b3c0-f015593f5fb3.png)
![pic (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/06ccd7b5-6ba3-11c3-1b16-32291197fd6a.png)
![pic (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4b420f2e-4e1c-525f-8ae4-7aece022c64c.png)
![pic (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2ebd6f2c-17aa-7561-3437-2b3f03f3900e.png)
## まとめ
ADからLDAPに反映する一連のシステムについて検証しました。
[次の記事](https://qiita.com/ahra_/items/3f3c3374d04af92dc0a3)では、LDAP Managerの管理機能をWebアプリケーション上のGUIで使用できる 
**管理者ポータル** について検証します。