column

外部との連携 Active Directoryから情報を取得する

Windowsで情報システムを構築している場合、規模が大きくなるにつれて管理負荷が大きくなるため、Active Directoryを利用してアカウントやIT資源の集中管理を行います。今回の記事ではKompiraからActive Directoryにアクセスして、登録されている情報の検索を行います。
(Active Directoryは既存のサーバーを利用する想定です。)

※本記事はKompira v1.4.10b0, Windows Server 2016を利用して検証しております。掲載時点の情報であり、最新のものとは異なる場合があります。予めご了承ください。

 
事前準備

Active DirectoryはLDAPやDNSなどの仕組みを利用した管理基盤です。Kompiraからのアクセス方法はLDAPの利用なども考えられますが、今回は「Windows PowerShell 用 Active Directory モジュール」を利用して、KompiraのスクリプトジョブからPowerShellでの操作を行います。

Active Directoryサーバーのサーバーマネージャーを起動してから、「機能」>「機能の追加」>「役割と機能の追加ウィザード」>「機能」>「Role Administration Tools」>「AD DS and AD LDS Tools」と選択します。「Active Directory module for Windows PowerShell」のチェックを指定して、インストールを選択してください。(デフォルトでインストールされていた場合には、そのままで構いません。)

AD Module

またKompiraからWindowsサーバーにアクセスできるように、WinRMの設定を行う必要があります。詳細は以前の記事Windowsでリモートスクリプトを実行する(その1)の、「Windows側での設定」をご参照ください。

 
スクリプトジョブの準備

Active Directoryモジュールに含まれるコマンドレット(Cmdlets)については、以下の記事を参照してください。

Windows Tech Net: Active Directory Cmdlets in Windows PowerShell

またスクリプトジョブを作成するにあたり、各コマンドレットの動作確認はサーバー側のWindows PowerShellウィンドウを使ってコマンドを投入してみると良いでしょう。

PowerShellを利用して上述のコマンドレットからActiveDirectoryを操作するためには、最初に以下のコマンドレットを実行して、ActiveDirectoryモジュールをインポートしておく必要があります。

では、「直近の30日間ログオンしていないユーザーを検索」というスクリプトジョブを作成します。拡張子に”ps1″を付けることを忘れないでください。

あわせて、ActiveDirectoryサーバーのノード情報、アクセスするアカウント情報のオブジェクトも作成してください。

上記のジョブフローを実行すると以下のような結果となります。

実行結果

このように検索条件に該当するユーザーアカウントの情報が列挙されます。

出力結果を扱いやすくするため、「ConvertTo-Json」コマンドレットを使用してJSON形式にしてみましょう。

出力をテキストエディタで整形すると次のようになります。

JSONデータ

 
ジョブフローからスクリプトジョブを呼び出す

スクリプトジョブからの応答をJSON化した所で、これを利用するジョブフローを作成してみます。
例として、ユーザー名を抽出して表示します。

スクリプトジョブからの応答はJSON形式の文字列のため、これをKompiraの辞書形式のデータにするためにjson_parse()関数を利用しています。

実行結果は以下のようになります。

検索結果

今回の記事では、PowerShellを使ったスクリプトジョブから、Active Directoryの情報検索を行いました。モジュールにはユーザーや機器の情報登録・参照・削除などの多くのコマンドレットが用意されているため、同様の手法でWindows関連のリソース管理をKompiraから行う事が出来るでしょう。