CData コネクタの活用 - Active Directory に接続して社員名簿の作成

## はじめに
[CData](https://www.cdata.com/jp/drivers/) は様々なデータソースに接続可能なコネクタを提供しています。Yellowfin にこれらコネクタを組み込むことで、世の中にある主なデータソースには、ほぼアクセス可能であるといっても過言ではないのではないでしょうか。知らんけど。

今回は、CData のコネクタを活用して、Active Directory に接続し、社員一覧表を作成するまでの手順を紹介したいと思います。Active Directory をはじめとするディレクトリサービスには、社員や組織に関わる情報がまとまって管理されているケースが多く、社員・組織マスタとして活用することも一般的です。

## 環境準備
ローカル PC の Hyper-V に以下の環境を準備しました。
|項目|設定値|
|---|---|
|OS|Windows Server 2022 Datacenter Edition|
|ドメイン名|yellowfin.local|
|ドメインコントローラ|junyaserver.yellowfin.local|

## コネクタ
### コネクタの入手
CData のコネクタ評価版を利用します。まずは下記 URL にアクセスし、対応データソースから LDAP を選択します。

https://www.cdata.com/jp/driver

その後、[ダウンロード] > [ダウンロード評価版] > [ダウンロード Windows Setup (.exe)] の順に進み、LDAPJDBCDriver.exe をダウンロードします。

対応データソースには Active Directory も存在しますが、Active Directory を選択しても LDAP を選択しても、ポート 389 の LDAP で Active Directory に接続します。Active Directory コネクタで接続する方が数多くのテーブルとフィールドが参照できるのですが、今回は手順を紹介することに焦点を当てて、必要な 5 枚のテーブルだけが参照できる LDAP コネクタを利用します。

LDAPJDBCDriver.exe を実行すると、デフォルトで以下にファイルが解凍されます。
`C:\Program Files\CData\CData JDBC Driver for LDAP 2022J`
配下の lib フォルダに以下のようなファイルが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/84f5cbf1-2d8b-0ffc-5067-9de21d1cb341.png)

### コネクタのインストール
ライセンスファイル cdata.jdbc.ldap.lic を zip ファイルに圧縮した後、cdata.jdbc.ldap.lic.zip をcdata.jdbc.ldap.lic.jar に名称変更します。Yellowfin プラグイン管理画面で .jar か .yfp ファイルしか登録できないことへの対応です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/cec989dd-c50e-c797-fe98-069a2fd37b29.png)

Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、cdata.jdbc.ldap.lic.jar をドロップして追加した後、[さらに追加] を選択して、cdata.jdbc.ldap.lic.jar を追加します。結果、以下のように、実行ファイルとライセンスファイルの両者を合わせて登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/a2111218-6eeb-0198-e285-d87012c55146.png)

## データソース
Yellowfin 画面から [管理] > [プラグイン管理] > [追加] と進み、[新規データ接続] で [データソースを選択] から [データベース] を選択します。
新規接続の設定画面から、以下を参照に新規接続を作成します。
|項目|設定値|
|---|---|
|名前|LDAP CData|
|データベースタイプ|一般 JDBC データソース|
|JDBC ドライバー|cdata.jdbc.ldap.LDAPDriver(LDAP CData)|
|接続文字|jdbc:ldap:basedn=cn=users,dc=yellowfin,dc=local;user=administrator<span>@</span>yellowfin.local;password=***;Server=junyaserver;Port=389; LDAPVersion=3;|
|ユーザー名|administrator<span>@</span>yellowfin.local|
|パスワード|***|

接続文字に関して、幾つか注意事項を列挙します。
・頭文字 jdbc:ladp: に続いて、BaseDN、User、Password、Server、Port、LDAPVersion を指定
・user は &lt;user_name&gt;@&lt;domain_name&gt; を指定
・LDAPVersion=2 ではダブルバイト文字が文字化けする可能性があるため、3 を指定 (詳細は下記を参照)
・接続文字列の末尾に`LogFile=C:\log\LDAPDriverLog.log;Verbosity=3;`を付与することで、ログファイル出力が可能

https://learn.microsoft.com/ja-jp/archive/blogs/jpilmblg/ldap-ldap-v2-shift-jis-utf-16-1248

結果、以下のような設定になるはずです。この画面から、[ビュー作成] ボタンを押下し、接続が成功し、テーブル名が参照できればひとまず大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/7821a835-b885-d22e-900d-409517182d91.png)

## ビュー作成
LDAP コネクタで Active Directory に接続すると、以下の 5 テーブルが参照できます。この中で、User テーブルからいくつかユーザーの属性を指定して、簡単な社員名簿を作成しようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/544a0f07-a4e3-f454-7c11-4058fba7737c.png)

User テーブルから CN、PhisicalDeliveryOfficeName、TelephoneNumber、PostalCode、ST を選択してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/912be2cc-513b-f890-e3e0-102710aba40e.png)

どの属性にどの情報が格納されているかは、Active Directory 側の設定次第ですが、今回は以下のような対応になっています (「Active Directory ユーザーとコンピューター」設定画面)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/dacf318f-047f-10e8-072a-8e43dfff5262.png)

## レポートの作成
レポートを新規で作成し、例えば以下のようなテーブルを作成すれば、社員名簿の出来上がりです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2128512/7733b5ce-fd2a-ec4e-4044-752c44b78747.png)

## 最後に
Active Directory に関しては、認証基盤としての印象も多いかも知れません。一方で、世界中で最も普及しているディレクトリサービスの 1 つであり、多くの企業では社員や組織に関わる情報を集中的に管理していたりします。この情報を BI にも連携すれば、きっと有用な使い方もできるはずです。
Yellowfin と CData コネクタを組み合わせることで、色々なことが可能になりそうですね。

では皆様、良いデータ分析を! See you then, Cheers!!