【IDM】監査イベントを監視してユーザー管理を自動化するためのスクリプト(汎用版)
4月24日のセミナー「AD 次の一手」にて、「小規模なシステムの場合には、高価なパッケージではなくスクリプトレベルのプログラミングで同期を行うことも可能」というお話をしました。
セミナー資料にはスクリプトを掲載することができませんでしたが、ここに使用したスクリプトを掲載いたします。
以下のスクリプトは、DC001 というドメインコントローラに接続して、監査イベント 4720 と 5136 を待ち合わせるものです。VBscript で書かれていますので、拡張子を vbs として保存し、コマンドプロンプトから実行してください。
CScript xxxxx.vbs
くれぐれも、あたまの CScript を忘れないでください。忘れると、ポップアップメッセージが大量に表示されることになります。もしくは、以下のコマンドで、事前にスクリプトのホストを cscript に変更しておきましょう。
Cscript //h:cscript
ユーザー管理に関する監査イベントの詳細については、以下をご参照ください。
【Windows Server 2008】監査イベントの Event ID が変わります
https://blogs.technet.com/junichia/archive/2008/01/11/2008-id.aspx
strDC = "DC001"UserAdmin = ""UserPassword = "" Rec = now & ",ドメインコントローラに接続します," & "DC=" & strDCSet objLocator = CreateObject("WbemScripting.SWbemLocator")objLocator.Security_.Privileges.AddAsString "SeSecurityPrivilege", TrueSet objService = objLocator.ConnectServer(DC, "root\cimv2", UserAdmin, UserPassword) If Err.Number = 0 Then Rec = now & ",ドメインコントローラへの接続完了," & "DC=" & strDC wscript.echo RecEnd If strQuery = "Select * from __InstanceCreationEvent WITHIN 10" & _ " where TargetInstance isa 'Win32_NTLogEvent' and " & _ "TargetInstance.LogFile='Security' and " & _ "(TargetInstance.EventCode='4720' Or TargetInstance.EventCode='5136')" Set colMonitoredEvents = objService.ExecNotificationQuery(strQuery, "WQL", 48) If Err.Number = 0 Then Rec = now & "," & strDC & " の監査イベントを監視しています" Wscript.Echo RecEnd If Do set objLatestEvent = colMonitoredEvents.NextEvent Message = objLatestEvent.TargetInstance.Message colMessage = split(Message,vbCrLf) For each m in colMessage Wscript.Echo m 'ここに m を解析し、同期を行う処理を組み込む Next Loop |
実行結果例を以下に示します。
C:\tmp>cscript waitevent.vbsMicrosoft (R) Windows Script Host Version 5.7Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. 2008/04/25 22:32:56,ドメインコントローラへの接続完了,DC=DC0012008/04/25 22:32:56,JUNICHIA03 の監査イベントを監視していますディレクトリ サービス オブジェクトが変更されました。 サブジェクト: セキュリティ ID: S-1-5-18 アカウント名: JUNICHIA03$ アカウント ドメイン: EXAMPLE64 ログオン ID: 0x451127 ディレクトリ サービス: 名前: example64.jp 種類: Active Directory ドメイン サービス オブジェクト: DN: CN=junichia,CN=Users,DC=example64,DC=jp GUID: {94E6B11B-BCF9-407E-8B73-0CF88BA1638B} クラス: user 属性: LDAP 表示名: unixUserPassword 構文 (OID): 2.5.5.10 値: <Binary> 操作: 種類: 値が削除されました 相関 ID: {D55665FD-B5BA-4E64-BD95-E9D2CBE1A690} アプリケーションの相関 ID: -ディレクトリ サービス オブジェクトが変更されました。 サブジェクト: セキュリティ ID: S-1-5-18 アカウント名: JUNICHIA03$ アカウント ドメイン: EXAMPLE64 ログオン ID: 0x451127 ディレクトリ サービス: 名前: example64.jp 種類: Active Directory ドメイン サービス オブジェクト: DN: CN=junichia,CN=Users,DC=example64,DC=jp GUID: {94E6B11B-BCF9-407E-8B73-0CF88BA1638B} クラス: user 属性: LDAP 表示名: unixUserPassword 構文 (OID): 2.5.5.10 値: <Binary> 操作: 種類: 値が追加されました 相関 ID: {D55665FD-B5BA-4E64-BD95-E9D2CBE1A690} アプリケーションの相関 ID: - |
Comments
- Anonymous
January 01, 2003
PingBack from http://blogs.technet.com/junichia/pages/3234067.aspx