Sdílet prostřednictvím


Nastavení výchozí úrovně zabezpečení procesu pomocí jazyka VBScript

Skript může použít výchozí nastavení ověřování a zosobnění rozhraní WMI. Skript ale může potřebovat připojení s větším zabezpečením nebo se může připojit k oboru názvů, který vyžaduje šifrované připojení. Další informace naleznete v tématu Nastavení popisovačů zabezpečení oboru názvů a Vyžadování šifrovaného připojení k oboru názvů.

V nejjednodušším případě může skript použít výchozí nastavení ověřování a zosobnění. WMI se obvykle spouští v hostitelském procesu sdílené služby a sdílí stejné ověřování jako ostatní procesy v tomto procesu. Pokud chcete spustit proces rozhraní WMI s jinou úrovní ověřování, spusťte rozhraní WMI s příkazem winmgmt s přepínačem /standalonehost a obecně nastavte úroveň ověřování pro rozhraní WMI. Další informace naleznete v části Údržba zabezpečení WMI.

Následující skript používá výchozí nastavení pro zosobnění a úrovně ověřování.

strComputer = "." 
Set objServices = GetObject("winmgmts:\\" _
    & strComputer & "\root\CIMV2") 
set objProcessSet = objServices.ExecQuery _
     ("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
    WScript.Echo Process.Name
Next

Můžete také použít moniker ve volání GetObjecta nastavit výchozí nastavení zabezpečení, jako v následujícím příkladu.

strComputer = "." 
Set objServices = GetObject( _
    "winmgmts:{impersonationLevel=impersonate," _
    & "authenticationLevel=pktPrivacy}!root/cimv2")
set objProcessSet = objServices.ExecQuery _
     ("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
    WScript.Echo Process.Name
Next

Další informace o nastavení různých úrovní zosobnění nebo ověřování ve skriptu nebo nastavení výchozích hodnot počítače najdete v následujících tématech:

Změna výchozích přihlašovacích údajů pro ověřování pomocí jazyka VBScript

Úroveň ověřování ve skriptu můžete změnit pomocí řetězce monikeru a objektů SWbemLocator a SWbemSecurity.

Úroveň ověřování musí být nastavená podle požadavků cílového operačního systému, ke kterému se připojujete. Další informace naleznete v tématu Připojení Mezi Různými Operačními Systémy.

Následující příklad kódu VBScript ukazuje, jak změnit úroveň ověřování ve skriptu, který získá data volného místa ze vzdáleného počítače s názvem Server1.

strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{authenticationLevel=Pkt}!\\" _
    & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
    Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
        "FreeSpace: " & vbTab & objDisk.FreeSpace 
    NextstrComputer = "." 
    Set objServices = GetObject( "winmgmts:{impersonationLevel=impersonate," _
                               & "authenticationLevel=pktPrivacy}!root/cimv2")
    Set objProcessSet = objServices.ExecQuery("SELECT Name FROM Win32_Process",,48)
    For Each Process in objProcessSet
        WScript.Echo Process.Name
    Next
Next

Při připojování skriptu pomocí monikeru k rozhraní WMI použijte krátký název zobrazený ve sloupci "Moniker name/description" v tabulce níže. Například v následujícím skriptu je úroveň ověřování nastavena na WbemAuthenticationLevelPktIntegrity.

SetobjWMIService = GetObject( _
    "winmgmts:{authenticationLevel=pktPrivacy}!root\cimv2")

Následující tabulka uvádí úrovně ověřování, které můžete nastavit. Tyto úrovně jsou definovány ve Wbemdisp.tlb v výčtu WbemAuthenticationLevelEnum.

Název/hodnota Popis
WbemAuthenticationLevelDefault
0
Přezdívka: Výchozí
Rozhraní WMI používá výchozí nastavení ověřování systému Windows. Toto je doporučené nastavení, které umožňuje rozhraní WMI vyjednat na úroveň požadovanou serverem pro vracení dat. Pokud však obor názvů vyžaduje šifrování, použijte WbemAuthenticationLevelPktPrivacy.
WbemAuthenticationLevelNone
1
Moniker: None
Nepoužívá žádné ověřování.
WbemAuthenticationLevelConnect
2
Moniker: Connect
Ověřuje přihlašovací údaje klienta pouze v případech, kdy klient vytvoří relaci se serverem.
WbemAuthenticationLevelCall
3
Zavolat
Ověřuje se pouze na začátku každého volání, když server obdrží požadavek.
WbemAuthenticationLevelPkt
4
Moniker: Pkt
Ověřuje, že všechna přijatá data pocházejí z očekávaného klienta.
WbemAuthenticationLevelPktIntegrity
5
Moniker: PktIntegrity
Autentizuje a ověřuje, že žádná data přenášená mezi klientem a serverem nebyla změněna.
WbemAuthenticationLevelPktPrivacy
6
Moniker: PktPrivacy
Ověřuje všechny předchozí úrovně zosobnění a šifruje hodnotu argumentu každého vzdáleného volání procedury. Toto nastavení použijte, pokud obor názvů, ke kterému se připojujete, vyžaduje šifrované připojení.

Pokud chcete zjistit úspěšné volání, zkontrolujte návratovou hodnotu po změně úrovně ověřování.

Například protože místní připojení mají vždy úroveň ověřování wbemAuthenticationLevelPktPrivacy, následující příklad nemůže nastavit úroveň ověřování, protože se připojuje k místnímu počítači.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate," _
    & "authenticationLevel=pktPrivacy}!" _
    & "\\" & strComputer & "\root\cimv2")

Zprostředkovatel může nastavit zabezpečení v oboru názvů tak, aby se nevracela žádná data, pokud v připojení k danému oboru názvů nepoužíváte ochranu osobních údajů paketů (PktPrivacy). Tím se zajistí, že se data šifrují, protože překračují síť. Pokud se pokusíte nastavit nižší úroveň ověřování, zobrazí se zpráva o odepření přístupu. Další informace naleznete v tématu Zabezpečení oborů názvů rozhraní WMI.

Změna výchozích úrovní zosobnění pomocí jazyka VBScript

Při volání rozhraní API pro skriptování pro rozhraní WMI se doporučuje použít výchozí hodnoty, které rozhraní WMI poskytuje pro úroveň zosobnění. Vzdálená volání a někteří poskytovatelé s více než jedním segmentem směrování sítě vyžadují vyšší úroveň zosobnění, než používá rozhraní WMI. Pokud úroveň zosobnění nestačí, poskytovatel může žádost odmítnout nebo poskytnout neúplné informace.

Pokud úroveň zosobnění nenastavíte v monikeru nebo nastavením SWbemSecurity.ImpersonationLevel na zabezpečitelný objekt, nastavte výchozí úroveň zosobnění modelu DCOM pro operační systém. Úroveň zosobnění musí být nastavena podle požadavků cílového operačního systému, ke kterému se připojujete. Další informace naleznete v tématu Připojení Mezi Různými Operačními Systémy.

Následující příklad kódu jazyka VBScript ukazuje změnu úrovně zosobnění ve stejném skriptu uvedeném výše.

strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" _
                              & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
             "FreeSpace: " & vbTab & objDisk.FreeSpace 
Next

Následující tabulka uvádí úrovně ověřování v WbemImpersonationLevelEnum, které se používají.

Název/hodnota Popis
wbemImpersonationLevelAnonymous
1
Moniker: Anonymní
Skryje přihlašovací údaje volajícího. Volání rozhraní WMI může selhat s touto úrovní zosobnění.
wbemImpersonationLevelIdentify
2
Moniker: Identifikace
Umožňuje objektům dotazovat přihlašovací údaje volajícího. Volání rozhraní WMI může selhat s touto úrovní zosobnění.
wbemImpersonationLevelImpersonate
3
Moniker: Napodobit
Umožňuje objektům používat přihlašovací údaje volajícího. Toto je doporučená úroveň imitační pro skriptovací API pro volání rozhraní WMI.
wbemImpersonationLevelDelegate
4
Moniker: Delegát
Umožňuje objektům povolit, aby jiné objekty používaly přihlašovací údaje volajícího. Toto převzetí identity bude fungovat s API pro skriptování pro volání WMI, ale může představovat zbytečné bezpečnostní riziko.

Následující příklad ukazuje, jak nastavit zosobnění v řetězci moniker při získání konkrétní instance Win32_Process.

Set object = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2:Win32_Process.Handle='0'")

Další informace naleznete v tématu Vytvoření aplikace rozhraní WMI nebo skript.

Nastavení výchozí úrovně zosobnění pomocí registru

Pokud máte přístup k registru, můžete také nastavit výchozí klíč registru na úrovni zosobnění. Tento klíč určuje, jakou úroveň zosobnění rozhraní API pro skriptování pro rozhraní WMI používá, pokud není uvedeno jinak. Následující cesta identifikuje cestu registru.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\skriptování\Výchozí úroveň zosobnění

Ve výchozím nastavení je klíč registru nastaven na hodnotu 3 a určuje úroveň zosobnění. Někteří poskytovatelé můžou vyžadovat vyšší úroveň zosobnění.

Přístup k objektu SWbemSecurity v jazyce VBScript

Další způsob, jak nastavit úroveň zosobnění, je pomocí objektu zabezpečení SWbemSecurity, který se zobrazí jako vlastnost Security_ objektů SWbemServices, SWbemObject, SWbemObjectSet, SWbemEventSource, SWbemObjectPatha SWbemLocator.

Rozhraní WMI předá nastavení zabezpečení nadřazeného objektu potomkům původního objektu. Proto můžete nastavit úroveň impersonation objektu SWbemServices po přihlášení k rozhraní WMI a při volání rozhraní API s využitím tohoto objektu nebo objektů, které jsou jím vytvořeny, například u objektů typu SWbemObject.

připojení k rozhraní WMI na vzdáleném počítači

zabezpečení skriptovacího klienta