kintone アプリから Active Directory ユーザーアカウントを自動作成する
はじめに
この記事ではkintoneを通じて、Active Directory(AD)のユーザーアカウントを自動作成するしくみを紹介します。
Windows Serverで定期実行されるPowerShellスクリプトがkintoneアプリからユーザー情報を読み込み、ADユーザーアカウントを自動作成するというものです。
想定する読者
- Active Directoryを活用している方
- kintoneを活用した自動化に興味がある方
- システム管理者の方
利用するツールとしくみ
まずは、kintoneアプリにレコードを登録するだけで、外部のシステムで適切なタスクが自動実行されるしくみを想像してみてください。
さらにその実行結果がkintoneアプリに自動でフィードバックされるとします。便利そうですよね?
外部のシステムとしてWindows Serverを想定します。
そして実行したいタスクをPowerShellスクリプトで実装するとしましょう。もしもPowerShell用のkintone SDKがあると話は簡単なのですが、残念ながらありません。
kintone REST APIを使うという選択肢もありますが、ここではcli-kintoneを使います。
cli-kintone(kintoneコマンドラインツール)についての詳細はこちらを確認してください。
はじめようcli-kintone
主なツールは次のとおりです。
-
PowerShellのコマンドレット
Import-CSV
: CSVファイルからPowerShellオブジェクトを生成する。Export-CSV
: PowerShellオブジェクトからCSVファイルを生成する。
-
cli-kintoneのサブコマンド
これらを下図のように組み合わせることにより、ユーザーがPowerShellオブジェクトをCSVファイル経由でkintoneアプリに入出力できます。
つまり、PowerShellスクリプトでkintoneアプリのレコード情報を読み書きする処理を記述できます。
Active Directory ユーザーアカウントの自動作成
ここから、ADのユーザーアカウントを自動作成するしくみを紹介します。
このTipsの実装には、cybozu.com共通管理のシステム管理者権限が必要です。
kintoneの構成
ユーザー情報アプリとログアプリを用意します。
各アプリの役割と、フィールドを簡単に説明します。
ユーザー情報アプリ
- ユーザー情報(ユーザー名、初期パスワード、表示名)を格納します。
- 状態を表すためのフィールドが2種類あります。
使い方は 状態遷移で説明します。
フィールド名 | フィールドコード | 種類 | 備考 |
---|---|---|---|
レコード番号 | RecordNumber | レコード番号 | |
ユーザー名 | Name | 文字列(1行) | |
初期パスワード | Password | 文字列(1行) | |
表示名 | DisplayName | 文字列(1行) | |
ステータス | Status | ドロップダウン | 処理全体の状態を表します。 設定する値:計画中、実施中、完了 |
AD User | Check_AD_User | チェックボックス | ADユーザーアカウント作成処理が正常に完了されたかどうかを表します。ADユーザーアカウント作成以外の別の処理がある場合は、違うフィールドを追加してください。 設定する値:Done |
ログアプリ
- PowerShellスクリプトのエラーログを格納します。
フィールド名 | フィールドコード | 種類 | 備考 |
---|---|---|---|
レコード番号 | RecordNumber | レコード番号 | |
ステータス | Status | 文字列(1行) | ログの状態を表します |
詳細 | Details | 文字列(複数行) | ログの詳細を表します |
Windows Serverの構成
- Windows Serverでは、タスクスケジューラでPowerShellスクリプトを定期実行します。
cli-kintone
事前にcli-kintoneの インストールが必要です。
PowerShellスクリプト
PowerShellスクリプトでは次の処理を行います。
- ユーザー情報取得:ユーザー情報アプリから取得します。
- ユーザーアカウント作成:取得した情報を元にし、ADユーザーアカウントを作成します。
- 結果のレスポンス:実行結果の情報をユーザー情報アプリにフィードバックします。
- ログ登録:実行時に発生したエラーログをログアプリへ登録します。
動作環境
次の環境で動作確認済みです。
なおOSにバンドルされているPowerShell5.1では動作しません。
PowerShell 7.4.xが必要です。
項目 | バージョン | 備考 |
---|---|---|
OS | Windows Server 2019 | |
PowerShell | 7.4.3 | PowerShell ドキュメント |
cli-kintone | 1.11.0 | kintoneコマンドラインツール |
cli-kintoneの配置場所
C:\opt\cli-kintone\バージョン番号\cli-kintone.exe
に配置します。
バージョン毎にフォルダーを用意する方式です。
例:1.11.0の場合:C:\opt\cli-kintone\1.11.0\cli-kintone.exe
スクリプトのファイル構成
ベースフォルダーの配下にファイルとフォルダーを配置します。
項目 | 備考 |
---|---|
C:\opt\add-ad-user |
ベースフォルダー |
C:\opt\add-ad-user\add-ad-user.ps1 |
スクリプトファイル |
C:\opt\add-ad-user\conf.ps1 |
設定ファイル |
C:\opt\add-ad-user\lib.ps1 |
ライブラリーファイル |
C:\opt\add-ad-user\csv |
CSV ファイル出力先フォルダー |
C:\opt\add-ad-user\log |
ログファイル出力先フォルダー |
タスクスケジューラの設定
add-ad-user.ps1
を実行するためのタスクを登録します。
タスクのプロパティの[操作]には次のとおり設定します。
項目 | 値 |
---|---|
プログラム/スクリプト | pwsh.exe |
引数の追加 | -Command ".\add-ad-user.ps1" |
開始 | C:\opt\add-ad-user |
スクリプト
メインスクリプト(add-ad-user.ps1)
|
|
スクリプトの解説
try
節- ユーザー情報アプリから条件にマッチするレコードを取得します。
- ADユーザーアカウントを作成します。
- 作成結果の情報をユーザー情報アプリに登録します。
catch
節- エラー情報をログアプリに登録します。
finally
節- エラー情報をログファイルに出力します。
設定ファイル(conf.ps1)
|
|
スクリプトの解説
次の変数の値は例示のための架空の値です。
$base_url
kintoneのベースURL$app
ユーザー情報アプリのアプリID$api_token
ユーザー情報アプリのAPIトークン(アクセス権:レコード閲覧/編集/レコード追加)$log_app
ログアプリのアプリID$log_api_token
ログアプリのAPIトークン(アクセス権:レコード閲覧/編集/レコード追加)$AD_domain
$AD_user_path
ライブラリーファイル(lib.ps1)
|
|
スクリプトの解説
Select-User
関数- ユーザー情報アプリから条件にマッチするレコードを取得し、CSVファイルにエクスポートします。
Result
クラスAdd-ADUser
関数の実行結果の情報を格納するためのPowerShellオブジェクトのひな型です。
Register-Result
関数Add-ADUser
関数の実行結果の情報をユーザー情報アプリに登録します。
Log
クラス- スクリプトの実行時に発生したエラー情報を格納するためのPowerShellオブジェクトのひな型です。
Register-Log
関数- スクリプトの実行時に発生した情報をログアプリへ登録します。
Add-ADUser
関数- 内部で
New-ADUser
コマンドレットを実行することにより、ADユーザーアカウントを作成します。
- 内部で
動作の確認方法
- ユーザー情報アプリにレコードを登録します。デフォルトのステータスは「計画中」です。
- レコードのステータスを「実施中」に変更します。
- レコードのステータスが「完了」になるまで待ちます。
状態遷移
kintoneの構成のとおり、ユーザー情報アプリには状態を表すためのフィールドが2種類あります。
- ステータス
- AD User
下記では4名分のユーザー情報からADユーザーアカウントを自動作成する場合を例として説明します。
以降の画面では、
条件書式プラグインでステータスを装飾しています。
ステータス: 計画中
kintoneアプリにユーザー情報のレコードを登録する際に設定する初期ステータスです。
ステータスが「計画中」のレコードは、スクリプトが実行されても処理の対象になりません。
ステータス: 実施中
ADユーザーアカウントの作成を許可する際に設定するステータスです。
ステータスが「実施中」のレコードは、スクリプトが実行されると処理の対象になります。
ステータス: 完了
スクリプト実行されてADユーザーアカウントが正常に作成されると、対象レコードの[AD User]フィールド(チェックボックス)が自動でONになります。
併せてステータスが自動で「完了」になります。
ステータスが「完了」のレコードは、処理の対象になりません。
自動作成されたADユーザーアカウントが実際に存在することを確認します。
|
|
おわりに
ADユーザーアカウントの自動作成を例としてそのしくみを紹介しました。
利用する側はkintoneアプリに情報を登録して待つだけという手軽さが長所です。
このしくみは他にも応用が効くかと思いますので、参考にしてみてください。
このTipsは、2024年7月版kintoneで動作を確認しています。