Vítejte na blog.vyvojar.cz Přihlásit | Registrovat | Pomoc

Radim.NET

Radim Hampel : Microsoft business intelligence, performance management and data warehousing
Nastavení práv pro čtení EventLogu pomocí WMI

Nedávno jsem potřeboval načíst konkrétní záznamy ze systémového EventLogu. Šlo o tisky provedené na jednom serveru, které jsou ukládal do databáze. Výsledkem byl seznam toho, kdo/co/kdy/kolik tiskne. Integration Services nabízí komponentu, která uloží výsledek WMI dotazu do souboru (WMI Data Reader Task). Komponenta není bohužel napsána jako data flow source, ale i s nutným mezikrokem (uložení do souboru a následné načtení) je relativně snadno použitelná. Kromě cílového serveru se nastaví namespace pro WMI objekt, v případě EventLogu je to \root\cimv2.

WMI dotazovací jazyk (WMI Query Language - WQL) je podmnožina ANSI SQL. Dotaz na všechny tiskové události bude vypadat asi takto: Select * from Win32_NTLogEvent Where Logfile = 'System' And SourceName='Print' And TimeGenerate > '20100101141835.00000420'

Určitým problémem může být práce s časovým formátem WQL, zde ale pomůže třída System.Management.ManagementDateTimeConverter.

Služba WMI původně vznikla, aby umožnila prováděni administrativních úkolů na vzdálených počítačích. Základním (a ve většině WMI příkladů nejspíš implicitně očekávaným) nastavením jsou administrátorská práva. Při detailnějším nastavení přístupových práv je ale situace o něco složitější. Co je tedy nutno udělat?

DCOM nastavení. WMI používá DCOM pro běh kódu na cílovém počítači. První věcí je tedy umožnit vzdálený přístup k počítači.

  1. Spustit DCOM Config (DCOMCnfg.exe nebo přes administrative tools)
  2. Component Services -> Computers -> My Computer, zobrazit Properties na My Computer
  3. Zobrazit záložku COM Security
  4. Kliknout na Edit limits... pro Launch and Activation Permissions
  5. Přidat nový účet/skupinu s právy Remote Launch a Remote Activation
  6. Kliknout na Edit limits... pro Access Permissions
  7. Vybrat Anonymous Logon a přidat volbu Remote Access

Securing a Remote WMI Connection

WMI Namespace Security - přístup k jednotlivým namespace, pro tento příklad "postačí" defautní \root\cimv2

  1. Otevřít MMC add-in pro WMI Control (třeba Administrative Tools -> Computer Management -> Services and Applications -> WMI Control)
  2. Zobrazit Properties pro WMI Control
  3. Vybrat záložku Security
  4. Zvolit cílový namespace
  5. Kliknout na Security a zvolenému účtu nastavit volbu Remote Enable

Setting Namespace Security with the WMI Control

Nastavení práv pro čtení EventLogu.

  1. Spustit RegEdit pro editaci registry
  2. Vybrat větev (pro System EventLog) HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\System
  3. Zvolit CustomSD
  4. Přidat nový SD (security descriptor) záznam pro zvolený účet
  5. SD záznam bude vypadat nějak následovně: O:BAG:SYD:(A;;0x07;;;WD)S:(ML;;0x1;;;LW)
  6. Přidaný řetězec bude ve tvaru: (A;;0x1;;;SID) A-Allow, 0x1 - Read a SID bude SID vybraného účtu
  7. SID lokálního účtu (tak jsem ho vyčetl já) jde zjistit opět přes registry, větev
  8. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion \ProfileList

How to set event log security locally or by using Group Policy in Windows Server 2003
http://www.jameskovacs.com/blog/WritingToTheEventLogFromASPNETFailsWhenRunningOnWindowsServer2003SP1.aspx

Zveřejněno Sunday, January 03, 2010 4:12 PM by radim

Vedeno pod: ,

Komentář

Žádné komentáře

Nejsou povoleny nové komentáře k tomuto příspěvku