Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Dočasné a trvalé příjemce mají různé metody zabezpečení doručování událostí.
V tomto tématu jsou popsány následující části:
- Zabezpečení dočasných spotřebitelů
- zabezpečení trvalých uživatelů
- zabezpečení trvalého předplatného
- Nastavení Administrator-Only SD
- Předstírání identity poskytovatele událostí
- Identifikátory SID a permanentní předplatné
- vytváření trvalých předplatných pomocí účtů domény
- související témata
Zabezpečení dočasných příjemců
dočasných uživatelů poběží, dokud se systém nerestartuje nebo se zastaví rozhraní WMI, ale pokud dojde k vyvolání konkrétní události, nelze ji spustit. Například volání SWbemServices.ExecNotificationQueryAsync vytvoří dočasného příjemce.
Volání SWbemServices.ExecNotificationQuery nebo IWbemServices::ExecNotificationQuery vytváří dočasné příjemce událostí. Dočasní spotřebitelé nemohou ovládat, kdo poskytuje události jímce , kterou vytvoří.
Volání metod ExecNotificationQuery lze provádět synchronně, polosynchronněnebo asynchronně. Například SWbemServices.ExecNotificationQuery je synchronní metoda, kterou lze volat polosynchronně v závislosti na nastavení parametru iflags. SWbemServices.ExecNotificationQueryAsync je asynchronní volání.
Mějte na paměti, že zpětné volání ke zdroji pro asynchronní verze těchto volání nemusí být vráceno na stejné úrovni ověřování jako volání provedené skriptem. Proto se doporučuje místo asynchronních volání používat polosynchronní volání. Pokud požadujete asynchronní komunikaci, přečtěte si téma Volání metody a Nastavení zabezpečení asynchronního volání.
Odběratelé skriptování nemohou zkontrolovat přístupová práva poskytovatele událostí k umožnění přenosu událostí do jímky vytvořené skriptem. Proto se doporučuje volat SWbemServices.ExecNotificationQuery použít polosynchronní formu volání a použít konkrétní nastavení zabezpečení. Další informace najdete v tématu Vytvoření polosynchronní volání pomocíjazyka VBScript .
Zabezpečení trvalých příjemců
trvalých uživatelů má trvalé předplatné událostí od poskytovatele událostí, které se po restartování operačního systému zachovají. Zprostředkovatel událostí, který podporuje trvalé konzumenty, je poskytovatel příjemce událostí. Pokud poskytovatel událostí není spuštěn, když dojde k události, služba WMI spustí poskytovatele, když je potřeba doručit události. Rozhraní WMI určuje, do kterého zprostředkovatele příjemce se mají události doručit, na základě instance __EventConsumerProviderRegistration, která přidruží poskytovatele příjemce __Win32Provider instanci k logické třídě příjemce, definovanou poskytovatelem příjemce. Další informace o úloze poskytovatelů spotřebitelů naleznete v části Psaní poskytovatele událostí.
Trvalí uživatelé mohou řídit, kdo jim posílá události, a poskytovatelé událostí mohou řídit, kdo přistupuje k jejich událostem.
Klientské skripty a aplikace vytvářejí instance logické třídy příjemce jako součást předplatného. Logická třída příjemce definuje, jaké informace událost obsahuje, co může klient s událostí dělat a jak se událost doručí.
Standardní třídy příjemců rozhraní WMI poskytují příklady role logických tříd spotřebitelů. Další informace naleznete v tématu Monitorování a reakce na události se standardními příjemci.
Zabezpečení trvalého předplatného
Trvalá předplatná mají větší potenciál způsobit problémy se zabezpečením ve službě WMI, a proto mají následující požadavky na zabezpečení:
Logická instance příjemce, __EventFilter, a instance __FilterToConsumerBinding musí mít stejný identifikátor zabezpečení (SID) uvedený ve vlastnosti CreatorSID. Další informace najdete v tématu Zachování stejného identifikátoru SID ve všech instancích trvalého předplatného.
Účet, který vytvoří předplatné, musí být buď doménový účet s oprávněními místního správce, nebo místní účet skupiny Administrators. Pomocí identifikátoru SID skupiny Administrators umožňuje předplatné dál pracovat na místním počítači, i když je odpojené od sítě. Použití účtu domény umožňuje přesnou identifikaci uživatele.
Pokud však počítač není připojený a vytvářený účet je doménový účet, proces selže, protože WMI nemůže ověřit identitu účtu. Pokud se chcete vyhnout selhání předplatného, pokud je počítač odpojený od sítě, použijte identifikátor SID skupiny Administrators pro předplatné. V takovém případě byste měli zajistit, aby účet LocalSystem měl přístup k datům členství ve skupinách v doméně. Někteří poskytovatelé spotřebitelů událostí mají obzvláště vysoké požadavky na zabezpečení, protože neautorizované předplatné může způsobit velké škody. Příkladem jsou standardní konzumenti, ActiveScriptEventConsumer a CommandLineEventConsumer.
Trvalé předplatné můžete nakonfigurovat tak, aby přijímalo pouze události z konkrétních identit zprostředkovatele událostí. Nastavte ve vlastnosti EventAccess instance __EventFilter popisovač zabezpečení k příslušným identitám poskytovatelů událostí. Rozhraní WMI porovná identitu zprostředkovatele událostí s popisovačem zabezpečení, aby zjistilo, jestli má zprostředkovatel WBEM_RIGHT_PUBLISH přístup. Další informace naleznete v tématu Konstanta zabezpečení WMI.
Pokud filtr umožňuje přístup k identitě zprostředkovatele událostí, důvěřuje také události. To umožňuje příjemci události vyvolat delegovanou událost.
Poznámka Výchozí hodnota popisovače zabezpečení v EventAccess je NULL, která umožňuje přístup všem. Kvůli lepšímu zabezpečení událostí se doporučuje omezit přístup v instanci předplatného __EventFilter.
Nastavení Administrator-Only SD
Následující příklad kódu C++ vytvoří popisovač zabezpečení jen pro správce v instanci __EventFilter. Tento příklad vytvoří popisovač zabezpečení pomocí Definiční jazyk popisovače zabezpečení (SDDL). Další informace o WBEM_RIGHT_SUBSCRIBEnaleznete v části WMI bezpečnostní konstanty.
// Create SD that allows only administrators
// to send events to this filter.
// The SDDL settings are O:BAG:BAD:(A;;0x80;;;BA)
// Set the EventAccess property in the
// IWbemClassObject of the __EventFilter instance.
long lMask = WBEM_RIGHT_PUBLISH;
WCHAR wBuf[MAX_PATH];
_ltow( lMask, wBuf, 16 );
HRESULT hRes = pEventFilterInstance->Put( L"EventAccess", 0,
&_variant_t( L"O:BAG:BAD:(A;;0x80;;;BA)" ), NULL );
Předchozí příklad kódu vyžaduje následující odkaz a příkazy #include.
#define _WIN32_DCOM
#include <wbemidl.h>
#include <comdef.h>
#pragma comment(lib, "wbemuuid.lib")
Zosobnění identity zprostředkovatele událostí
Trvalý odběratel může potřebovat vydávat se za poskytovatele události, aby ji zpracoval. Trvalí spotřebitelé se mohou vydávat za poskytovatele událostí, pouze pokud existují následující podmínky:
- Instance __FilterToConsumerBinding má vlastnost MaintainSecurityContext nastavena na hodnotu True.
- Událost se doručí ve stejném kontextu zabezpečení, ve které byl poskytovatel při generování události. Události v kontextu zabezpečení poskytovatele může přijímat pouze příjemce implementovaný jako knihovnu DLL, příjemce v procesu. Další informace o zabezpečení poskytovatelů v procesu a konzumentů naleznete v tématu Poskytovatel hostingu a zabezpečení.
- Zprostředkovatel událostí běží v procesu, který umožňuje napodobení.
Účet, který spouští spotřebitelský proces, musí mít FULL_WRITE přístup k úložišti rozhraní WMI (nebo úložiště CIM). V předplatném musí mít instance __FilterToConsumerBinding, __EventConsumera __EventFilter stejnou individuální hodnotu identifikátoru zabezpečení (SID) ve vlastnosti CreatorSID. WMI ukládá identifikátor SID v CreatorSID pro každou instanci.
SIDs a trvalá předplatná
Trvalé předplatné nefunguje, pokud vazby, příjemce a filtr nejsou vytvořeny stejným uživatelem, což znamená, že __FilterToConsumerBinding, __EventConsumera __EventFilter musí mít stejnou individuální identifikátor zabezpečení (SID) ve vlastnosti CreatorSID. Tato hodnota ukládá rozhraní WMI (Windows Management Instrumentation).
Vytváření trvalých předplatných pomocí účtů domény
Při používání doménových účtů k vytváření trvalých předplatných je třeba zvážit několik aspektů. Každé trvalé předplatné by mělo fungovat, i když není přihlášený žádný uživatel, což znamená, že funguje v rámci integrovaného účtu LocalSystem.
Pokud je uživatel domény tvůrcem trvalého předplatného pro uživatele citlivé na zabezpečení (ActiveScriptEventConsumer, CommandLineEventConsumer), služba WMI ověří, zda CreatorSID vlastnost třídy __EventFilter, __FilterToConsumerBinding třídy a instance příjemce patří uživateli, který je členem místní skupiny Administrators.
Následující příklad kódu ukazuje, jak můžete zadat CreatorSID vlastnost.
instance of __EventFilter as $FILTER
{
// this is the Administrators SID in array of bytes format
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
// Add filter code here ...
}
instance of ActiveScriptEventConsumer as $CONSUMER
{
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
// Add consumer code here ...
}
instance of __FilterToConsumerBinding
{
CreatorSID = {1,2,0,0,0,0,0,5,32,0,0,0,32,2,0,0};
Consumer = $CONSUMER;
Filter = $FILTER;
// Add binding code here ...
}
V situacích mezi doménami přidejte Autentizované uživatele do "Windows Authorization Access Group".
Související témata