2008:auditpol で使用可能な subcategory の一覧を取得する

28日は久しぶりの IT Pro 道場でした。私は、高添スピーカーの補助としてオペレータを勤めたわけですが、操作担当といえども案外緊張するものです(笑)。

で、道場終了後にご質問をいただきましたので、この場を借りて回答させていただきます。

なお、監査については高添のblogでも触れられていますのでご一読ください。

https://blogs.technet.com/osamut/archive/2007/07/15/active-directory.aspx
https://blogs.technet.com/osamut/archive/2007/07/15/windows-server-2008-active-directory.aspx

質問

auditpol で使用可能なsubcategoryの一覧を参照するにはどうしたらよいですか?

回答

/list パラメタを使用して category および subcategory 一覧を参照することができます。 

ご質問の subcategory を参照するには、以下の通りに入力して実行します。 

auditpol.exe /list /subcategory:*

実行したところ以下のような一覧を取得することができました。

システム   ← category  セキュリティ状態の変更   ← subcategory  セキュリティ システムの拡張  システムの整合性  IPsec ドライバ  その他のシステム イベントログオン/ログオフ  ログオン  ログオフ  アカウント ロックアウト  IPsec メイン モード  IPsec クイック モード  IPsec 拡張モード  特殊なログオン  その他のログオン/ログオフ イベントオブジェクト アクセス  ファイル システム  レジストリ  カーネル オブジェクト  SAM  証明書サービス  生成されたアプリケーション  ハンドル操作  ファイルの共有  フィルタリング プラットフォーム パケットのドロップ  フィルタリング プラットフォームの接続  その他のオブジェクト アクセス イベント特権の使用  重要な特権の使用  重要でない特権の使用  その他の特権の使用イベント詳細追跡  プロセスの作成  プロセス終了  DPAPI アクティビティ  RPC イベントポリシーの変更  ポリシーの変更の監査  ポリシーの変更の認証  ポリシーの変更の承認  MPSSVC ルールレベル ポリシーの変更  フィルタリング プラットフォームのポリシー変更  その他のポリシー変更イベントアカウント管理  ユーザー アカウント管理  コンピュータ アカウント管理  セキュリティ グループ管理  配布グループの管理  アプリケーション グループ管理  その他のアカウント管理イベントDS アクセス  ディレクトリ サービス アクセス  ディレクトリ サービスの変更  ディレクトリ サービスのレプリケーション  詳細なディレクトリ サービス レプリケーションアカウント ログオン  資格情報の確認  Kerbaros Service Ticket Operations  その他のアカウント ログオン イベント  Kerberos Authentication Service

本日高添の道場でも触れられていた通り、"ディレクトリ サービスの変更" を使用すると、Active Directoryに加えられた変更前変更後の値を監査ログで取得することができます。"ディレクトリ サービスの変更" を有効にするには、上位の category と 下位の subcategory の両方を有効にする必要があります。

auditpol /set /category:"DS アクセス"auditpol /set /subcategory:"ディレクトリ サービスの変更"

この機能、いいですよね。

少々残念なのは、それぞれが別々のイベントとして報告されるということと、イベントIDが同じであるということ...。ちなみに、イベントID 5136 で報告されます。

WMI を使用してイベントログを監視しているような場合、是非とも変更前と後の値を取り出したいですよね。でも、イベントIDが同じなので、ちょいと判断ロジックを工夫しないと難しそうです。必ず「変更前」→「変更後」と報告されるのならばよいのですが、大量に変更を行った場合、「変更前」がしばらく続いて、その後「変更後」が出現する可能性もあります。

もしそうだとすれば、変更されたオブジェクトをプログラム中でキャッシュしておき、変更後イベントとのマッチングを行う必要があります。うーん...ちょっと面倒かも...

もうひとつ考えられる方法としては、「変更前」だけ取得して、変更後の値は直接ADに参照しに行くか...ただしこの場合に注意しなければならないのはイベントが発生したドメインコントローラに見に行かなければならないということ。でないと、複製が完了していない可能性があり、古い値を参照してしまうかもしれません。それに、ADに負荷をかけてしまうことにもなるのか...。

うまく両者を取り出すことができれば、プロビジョニングにも流用できそうですし、ちょっと夢が広がりますね。メタバースを用意しなくても、ADを直接管理簿として使用するということも考えられます。

あ、ILM を否定しているわけではありません。手軽にやるならば、そんな方法もあるんじゃないかということです。

イベントの発生順序については今後検証してみますので、またここで報告します。