LDAP Managerを使ってみた！ 7. 管理者ポータル編

[前回](https://qiita.com/ahra_/items/bac396bf61b4318df01d)の続きです。
## 管理者ポータルとは
LDAP Manager コンソールの管理者向け機能の一部をポータル画面として提供するWebアプリケーションです。
各プラグインの手動実行、スケジュール実行の設定、実行結果のログ参照やレポーティングに加え、プラグインを「ジョブ」として登録し、複数のジョブを「一括処理」として実行することが可能です。

## 事前準備
### PostgreSQLの準備
[LDAP Managerのサポートリスト](https://exgenkb.atlassian.net/wiki/spaces/exgeninfo/pages/1152188425/LDAP%2BManager%2B7.0)に記載されているPostgreSQL 16をインストールします。
```
$ dnf module install postgresql:16/server
```
インストール後、PostgreSQLを初期化します。
```
$ postgresql-setup --initdb
```
以下のように編集して、着信接続をListenするようにします。
``` /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'
```
以下のように編集して、管理者ポータルからの接続を許可するようにします。
``` /var/lib/pgsql/data/pg_hba.conf
# IPv4 local connections:
host    all             all             192.168.181.0/24        scram-sha-256
``` 
PostgreSQLを再起動します。
```
$ systemctl restart postgresql
```
データベースとユーザを作成します。管理者ポータル用データベース（ここでは`lmportal`として作成）のユーザは**スーパーユーザで**作成する必要があります。
```
$ sudo -u postgres psql

postgres=# create database lmportal;
CREATE DATABASE
postgres=# create role lmsuper with superuser login password 'lmsuper';
CREATE ROLE
postgres=# grant all on database lmportal to lmsuper;
GRANT
postgres=# alter database lmportal owner to lmsuper;
ALTER DATABASE
postgres=# create database lmlog;
CREATE DATABASE
postgres=# create role lmlog with login password 'lmlog';
CREATE ROLE
postgres=# grant all on database lmlog to lmlog;
GRANT
postgres=# alter database lmlog owner to lmlog;
ALTER DATABASE
``` 
### ODBCデータソースの準備
LDAP Managerがインストールされているサーバにて、PostgreSQL用ODBCドライバをインストールします。
[ODBCドライバの提供サイト](https://www.postgresql.org/ftp/odbc/releases/)
LDAP Managerログ、Webオペレーションログ用のODBCデータソースを作成します。（Unicode、64bit版を使用）
![pic (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b7ffe98f-3962-be17-23e9-441798d6c39c.png)
### LDAP Manager本体の設定
LDAP Managerコンソール「環境設定」 > 「基本設定」 > 「LDAP Manager ログ管理」、また「Webオペレーションログ管理」から、DB出力先をODBCにし、作成したデータソースを指定します。
設定後、LDAP Managerを再起動します。
![pic (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/79ff97db-cc95-e16b-5ecc-53dba613122f.png)
![pic (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ee00d7f2-b175-9adc-a8c1-b26db278649a.png)
### 共有フォルダの作成
LDAP Managerがインストールされているサーバに共有フォルダを作成します。
![pic (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bb946db3-6e93-2aac-761d-6a7dc7ecc012.png)
## 設定
### セットアップモードでの初期設定
`<tomcat_home>\webapps\`に`lmportal`フォルダをコピーします。
![pic (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/58a7ec1b-4e05-4e5d-f03c-bef2fcd2fe27.png)
`<tomcat_home>\webapps\lmportal\WEB-INF\changeSetupMode.bat`を実行、Tomcatを再起動して管理者ポータルをセットアップモードにします。
![pic (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/adb3c48f-d6a7-22c4-6a25-7401574196c7.png)
`http://(ホスト名):(ポート)/lmportal/adminlogin.do`にアクセスし、LDAP Managerのリモートユーザでログインします。
![pic (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ba155085-3710-345d-a74f-204e2d1e3d7e.png)
次の画面に遷移します。「管理者設定」を行います。
![pic (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/ff596c77-bf34-6c8d-7a15-9703c3a96384.png)
「LDAP Manager 設定」ではLDAP Managerに関する各設定を入力し、「接続確認」の後「追加」して「保存」します。
![pic (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fcdd9c21-2a2b-99e5-4d57-ca269fd05d76.png)
「LDAPサーバ設定」では、LDAPサーバへの接続情報、ユーザ、グループのフィルタやRDN属性の設定などを行います。
「ユーザ/グループの表示属性名」は省略すると「RDN属性名」の属性値が使用されるため、省略します。
参加しているグループについての情報をユーザは持たないため、「グループ格納ユーザ属性名」は設定しません。
こちらも設定したら「保存」します。
![pic (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fc235c15-b403-71f7-fada-d2b3c9ebc343.png)
![pic (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4ce5e435-752d-beab-fcd2-bf9bf80fa52c.png)
「データベース設定」では、データベース`lmportal`への接続情報を設定します。
![pic (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9883857e-995c-d36f-a6bb-03400e70fd10.png)
「データベース設定（ログ）」ではデータベース`lmlog`への接続情報を設定します。
![pic (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a82215ea-6ccd-bb37-b48d-056c93d918c4.png)
「データベース設定（Webオペレーションログ）」では、Webオペレーションログ参照を「利用する」とし、ログが格納される`lmlog`データベースへの接続情報を設定します。
![pic (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4ad45d41-c1d7-9406-1a06-4df80f94f29e.png)
「ログイン情報設定」では管理者ポータルへログインするための認証方法などを指定します。
今回は「LDAPManager認証」としました。
システムIDには「LDAP Manager用」のシステムIDを入力します。
その他、右側の設定は表示タイトルの設定です。
![pic (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2265e94f-2f5d-a4d5-b393-90e8dbfcd116.png)
ここまで設定できたら、`<tomcat_home>\webapps\lmportal\WEB-INF\install.bat`を実行してデータベースの初期設定を行います。
![pic (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a9fe4bfb-e139-ec1a-57cf-88e6cf3b8e84.png)
続けて、`changeNormalMode.bat`を実行、Tomcatを再起動して管理者ポータルを通常モードに戻します。
![pic (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/96562e00-fcf0-0d3a-8d73-d0a269a90b3e.png)
### 通常モードでの設定
`http://(ホスト名):(ポート番号)/lmportal/login.do`にアクセスし、LDAP Managerのリモートユーザでログインします。
![pic (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/5eb07a20-b3d1-49d2-15de-d0439ee1d16d.png)
次の画面に遷移します。
![pic (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2043d408-371c-a28b-be2c-588814231f89.png)
「管理者設定」の続きを行います。
「CSVアップロード・ダウンロードフォルダ設定」では、[作成した](#共有フォルダの作成)共有フォルダへの接続情報やパスを設定します。
![pic (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/41db8e39-8321-261a-76bf-fdac36d4dc45.png)
「プラグイン設定」では、管理者ポータルで利用するプラグインを追加します。
今回は「インポート」ボタンでインストール済みのプラグインを一括インポートしました。
![pic (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fcf781ff-9082-6e05-10cd-844c6190a3f5.png)
「一括処理設定」では、実行したい一括処理を登録します。
![pic (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/58a1d535-2f72-86aa-9f92-98beb9086358.png)
まず、「種別編集」ボタンを押下します。
一括処理の種別を追加します。この種別は`admin`ロールを持つユーザだけが表示できるように設定しました。
![pic (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/fd85f993-86b7-4613-51bf-e1122cd854e8.png)
次に、追加した種別にて「一括処理追加」を押下します。
任意のID・名称と、「データアップロード」、「アップロード先の共有ディレクトリ」の設定を行います。
![pic (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8434ffd0-5ce2-269f-6f7a-1641b800d3f3.png)
保存後、「ジョブ編集」ボタンを押下します。
ここでは、「ジョブ」として登録するプラグインもしくは「管理者ポータル前処理プログラム」の「分割結合」「フォーマットチェック」「差分抽出」の3つのコマンドを指定します。
![pic (25).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4f47db39-58f9-7587-a848-b2546e07cb7d.png)
設定したら追加します。
今回はCSV→LDAP反映の実行後、LDAP→ADが実行されるように設定しました。
![pic (26).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0e6c833c-28f6-d13d-0431-09cf2804d774.png)
「スケジュール種別設定」では、即時もしくは指定日時を指定したスケジュールを設定できます。
![pic (27).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/1bb4ac87-f856-4c34-489a-6b46ce9a0a73.png)
「Top情報設定」では、Top画面に表示する内容を設定します。
![pic (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/948a98c2-c4ef-bd11-badb-7688eaf18cf5.png)
「アクセス権限設定」では、各メニューを実行する権限を設定します。
編集したいメニューの編集ボタン（スパナのボタン）を押下します。
「表示可能権限」に権限を付与したいグループ名を設定します。
この設定では、LDAP Managerにて`admin`グループに所属するリモートユーザのみが管理者設定メニューを表示できるようになります。
![pic (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/023681c9-9c26-7b11-d984-d6b5cf80a3fc.png)
「転送先サービス設定」では、管理者メンテナンスや利用者プロファイルメンテナンスなどのWebアプリケーションへのSingle Sign On用転送設定を行います。
デフォルトでLDAP Managerの各Webアプリケーション用の転送設定が用意されていますが、環境に合わせて変更する必要があります。
![pic (30).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/41b79ec2-f25b-0a63-8103-c6e5ca8ee2aa.png)
![pic (31).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/cfad5c2b-82ab-4555-3035-e61cddf33621.png)
管理者ポータルと対象アプリケーションで認証方式が異なる場合、SSOは使用できません。
![pic (32).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/f0fb5d3e-26c9-048c-ac28-7faa320cc2c9.png)
## 確認
まずは表示権限を確認します。
`testuser`ユーザでログインしているので、「一括処理種別1」や「管理者設定」が表示されています。
![pic (33).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/54e6260f-4306-137f-dab8-6e91e2274c1e.png)
次に、`admin`グループに参加していない`roleuser`ユーザでログインします。
設定どおり、「一括処理種別1」や「管理者設定」が表示されていません。
![pic (34).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/2c67f550-2996-dc9b-ab4c-b0f3bb2c674f.png)
また、「個別処理」から管理者メンテナンスに遷移すると、SSOにより`roleuser`ユーザでログインできていることが確認できます。
![pic (35).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/26cd27fd-3333-c588-13ba-9cee5c5fc773.png)
![pic (36).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/354b2b95-2d1f-59c8-a245-67e39e159c0f.png)
`testuser`ユーザでログインしなおし、次は一括処理について確認します。
事前にCSV→LDAP反映の反映元となるCSVファイルを生成します。
![pic (37).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/d2371db6-28db-ee01-70f0-85a575370b4a.png)
![pic (38).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/cbf43eb5-b21e-5096-bec1-413301404290.png)
登録した一括処理を実行します。ここで指定日時を指定した「スケジュール設定」を実行時間に指定すると、毎日その時刻に実行されるようになります。
![pic (39).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/54d266f7-4049-ca55-c210-f6b4de18fd5c.png)
処理状況を確認します。
![pic (40).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/0f38c2e6-cf2d-65a7-561e-22a611fc6fea.png)
![pic (41).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/7b354e59-614f-5af2-2954-45f7bae99cc3.png)
![pic (42).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/93a9e3f8-549c-525c-af0c-6c798d04cb68.png)
両プラグインとも、正常に処理できたことがわかります。
![pic (43).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/4e8f5032-e251-bbcd-6025-7a55067a8897.png)
![pic (44).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/a6cacd2e-c26b-62f7-6a6a-f4da90c5d935.png)
![pic (45).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/124bc65c-c0ea-13bf-a73e-7cef8aa5811e.png)
![pic (46).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bde06233-fa66-c93a-16c8-89a4587ffcbe.png)
次に、「単独処理実行」を確認します。これは、各プラグイン単体を手動実行するものです。
![pic (47).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/55d337fa-b28d-b119-cd9c-04efc5c4a1e3.png)
LDAP側にユーザを追加し、LDAP→AD反映を実行します。
![pic (48).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/100e3e82-286a-89bc-92e8-6223c2e3ac73.png)
![pic (49).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/542bf71c-703e-e6ff-d126-25013b736581.png)
正常な実行が確認できました。
![pic (50).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/48ec48ac-4396-3f6c-98e8-daf12384771c.png)
「処理状況確認」からは処理中のジョブを確認・キャンセル可能です。
![pic (51).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/441c57d0-cb5d-d34b-3866-2a7b833b8819.png)
「一括処理履歴」からは一括処理の履歴を各フィルタを使用して確認・再実行可能です。
![pic (52).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/9a9f1cef-e938-623d-1888-d245c2ccb329.png)
「CSVダウンロード」からは指定した共有フォルダ内にあるcsvファイルをダウンロードできます。
![pic (53).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/942dfa02-4c9c-5c12-9c76-66e7d94a9d1a.png)
「CSVアップロード」からはローカルのcsvファイルを共有フォルダにアップロードできます。
![pic (54).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/bf80f453-990a-4c66-b42a-a67a0a6ad129.png)
共有フォルダ上のcsvファイルのリネームも可能です。
![pic (55).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3b061375-10d9-edb9-a341-38d7591fa4e4.png)
![pic (56).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/01260590-e6b4-329e-7ac0-7edc1e5abb19.png)
「ログ管理」 > 「LDAP Managerログ検索」からはログインユーザが実行した処理のログを期間、結果、LDAP Managerサーバ、プラグイン名、内容のフィルタを指定して検索できます。
![pic (57).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/7787df34-40e6-e60b-893e-8af2f08d2526.png)
全体/実行日別/LDAP Managerサーバ別にログのCSV出力も可能です。
![pic (58).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8631e68f-d64d-7a75-40f0-382b2b900d2f.png)
「LDAP Managerログ検索（全ユーザ検索）」では、ログインユーザだけでなく全ユーザのログを検索、CSV出力できます。
![pic (59).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/b2237391-0d71-de0a-f419-9c260c7a18ff.png)
「LDAP Managerログ検索（単独処理実行）」では、管理者ポータルから単独処理実行されたログのみを検索・CSV出力できます。
![pic (60).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/3e55e5ea-f010-b6c4-cdd1-ef807c50100a.png)
「Webオペレーションログ検索」からは管理者ポータルや管理者メンテナンスなどのLDAP ManagerのWebアプリケーションでの処理を検索・CSV出力できます。
![pic (61).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/807798ed-e037-6d22-40f0-ecb53b17c1db.png)
「レポーティング」では一括処理の結果について各件数を検索・CSV出力できます。
![pic (62).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8fa4cd96-4699-f077-208b-e007b7f30307.png)
「レポーティング（プラグイン）」ではLDAP Managerのプラグインの実行結果について各件数を検索・CSV出力できます。
![pic (63).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3900965/8a248331-2aed-c91f-d08f-b0db68b3c511.png)
## まとめ
管理者ポータルについての検証でした。
LDAP Managerコンソールの機能を大きく拡張するような、便利なWebアプリケーションということがお伝えできていれば幸いです。
[次の記事](https://qiita.com/ahra_/items/930dfda8c26aaee2531d)では、LDAPエントリの操作履歴を記録、閲覧できる **操作ログオプション** について検証します。