【IDM】監査イベントを監視してユーザー管理を自動化するためのスクリプト(汎用版)


4月24日のセミナー「AD 次の一手」にて、「小規模なシステムの場合には、高価なパッケージではなくスクリプトレベルのプログラミングで同期を行うことも可能」というお話をしました。


セミナー資料にはスクリプトを掲載することができませんでしたが、ここに使用したスクリプトを掲載いたします。


以下のスクリプトは、DC001 というドメインコントローラに接続して、監査イベント 4720 と 5136 を待ち合わせるものです。VBscript で書かれていますので、拡張子を vbs として保存し、コマンドプロンプトから実行してください。



CScript xxxxx.vbs


くれぐれも、あたまの CScript を忘れないでください。忘れると、ポップアップメッセージが大量に表示されることになります。もしくは、以下のコマンドで、事前にスクリプトのホストを cscript に変更しておきましょう。



Cscript //h:cscript


ユーザー管理に関する監査イベントの詳細については、以下をご参照ください。 



【Windows Server 2008】監査イベントの Event ID が変わります
http://blogs.technet.com/junichia/archive/2008/01/11/2008-id.aspx






strDC = "DC001"
UserAdmin = ""
UserPassword = ""


Rec = now & ",ドメインコントローラに接続します," & "DC=" & strDC
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
objLocator.Security_.Privileges.AddAsString "SeSecurityPrivilege", True
Set objService = objLocator.ConnectServer(DC, "root\cimv2", UserAdmin, UserPassword)


If Err.Number = 0 Then
   Rec = now & ",ドメインコントローラへの接続完了," & "DC=" & strDC
   wscript.echo Rec
End 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 Rec
End 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.vbs
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.


2008/04/25 22:32:56,ドメインコントローラへの接続完了,DC=DC001
2008/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 (1)

Skip to main content