Kompira

Menu Menu

Enterprise Technical information

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

Windowsで情報システムを構築している場合、規模が大きくなるにつれて管理負荷が大きくなるため、Active Directoryを利用してアカウントやIT資源の集中管理を行います。今回の記事ではKompiraからActive Directoryにアクセスして、登録されている情報の検索を行います。 (Active Directoryは既存のサーバーを利用する想定です。)
動作確認環境   Kompira
ソフトウェア バージョン
Kompira 1.5.5.post7
LinuxOS CentOS7.8.2003
  Windows Server
ソフトウェア バージョン
Active Directory スキーマバージョン 88
OS Windows Server 2019
  ※本記事は上記環境を利用して検証しております。掲載時点の情報であり、最新のものとは異なる場合があります。予めご了承ください。  
  事前準備 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モジュールをインポートしておく必要があります。
Import-Module ActiveDirectory
では、「直近の30日間ログオンしていないユーザーを検索」というスクリプトジョブを作成します。拡張子に”ps1″を付けることを忘れないでください。 スクリプトジョブ「直近の30日間ログオンしていないユーザーを検索」
Import-Module ActiveDirectory
Search-ADAccount -AccountInactive -TimeSpan 30 -UsersOnly
あわせて、ActiveDirectoryサーバーのノード情報、アクセスするアカウント情報のオブジェクトも作成してください。 上記のジョブフローを実行すると以下のような結果となります。   実行結果 このように検索条件に該当するユーザーアカウントの情報が列挙されます。 出力結果を扱いやすくするため、「ConvertTo-Json」コマンドレットを使用してJSON形式にしてみましょう。 スクリプトジョブ「直近の30日間ログオンしていないユーザーを検索」その2
Import-Module ActiveDirectory
Search-ADAccount -AccountInactive -TimeSpan 30 -UsersOnly | ConvertTo-Json -Compress
出力をテキストエディタで整形すると次のようになります。   JSONデータ   ジョブフローからスクリプトジョブを呼び出す スクリプトジョブからの応答をJSON化した所で、これを利用するジョブフローを作成してみます。 例として、ユーザー名を抽出して表示します。 スクリプトジョブからの応答はJSON形式の文字列のため、これをKompiraの辞書形式のデータにするためにjson_parse()関数を利用しています。  
|__node__ = ./NodeOfActiveDirectory |
[./直近の30日間ログオンしていないユーザーを検索] -> # スクリプトジョブの呼び出し
[res = json_parse($RESULT)] ->
{ for id in res |
  print(id.Name)
}
実行結果は以下のようになります。   検索結果   今回の記事では、PowerShellを使ったスクリプトジョブから、Active Directoryの情報検索を行いました。モジュールにはユーザーや機器の情報登録・参照・削除などの多くのコマンドレットが用意されているため、同様の手法でWindows関連のリソース管理をKompiraから行う事が出来るでしょう。

スタートガイド

Kompiraジョブフローの基礎

ジョブフローの簡単な例

Kompiraの機能

外部との連携