Dela via


Tillhandahålla händelser på ett säkert sätt

Du kan förhindra att obehöriga användare tar emot händelser som de inte ska ha åtkomst till. Händelseprovidern kan tillhandahålla instanser av sina egna händelseklasser, precis som System Registry Provider tillhandahåller klasser som RegistryKeyChangeEvent. Händelseleverantören kan också leverera inbyggda händelser som __InstanceCreationEvent. Mer information finns i Skriva en händelseleverantör.

En händelseprovider kan styra åtkomsten till händelsemottagare på följande sätt:

  • Att använda åtkomstkontroll genom att implementera IWbemEventProviderSecurity::AccessCheck är det mest effektiva sättet.

    Providern avgör om konsumenten har behörighet att ta emot en begärd händelse. Om konsumenten saknar tillräckliga behörigheter för att registrera sig returnerar WMI ett felmeddelande om nekad åtkomst. Använd det här läget när providern kan fatta beslut om vem som kan ta emot händelser. En provider kan till exempel tillhandahålla säkerhetsrelaterade händelser och kan kräva att konsumenten har administratörsbehörighet med SeSecurityPrivilege- behörighet aktiverad.

  • Om du implementerar IWbemEventSink::SetSinkSecurity på mottagaren som används för att generera händelser kan du ange en säkerhetsbeskrivning (SD) på en mottagare för alla händelser som passerar.

    WMI utför åtkomstkontroller baserat på SD:n. Använd det här läget när providern inte kan fatta beslut om vem som får använda dess händelser, men kan besluta om en SD för en specifik mottagare. Använd till exempel IWbemEventSink::SetSinkSecurity om händelseleverantören fick flera mottagare genom anrop till IWbemEventSink::GetRestrictedSink och du vill ha en säkerhetsbeskrivare för varje mottagare.

  • Om du anger egenskapen SECURITY_DESCRIPTOR för en händelse kan du ange en SD för varje händelse.

    Använd den här metoden när varje händelse som levereras till mottagaren kan ha olika säkerhetsbeskrivningar. Om du vill använda den här metoden härleder du någon av de extrinsiska händelseklasser som definierats av leverantören från __Event eller __ExtrinsicEvent så att klassen innehåller egenskapen SECURITY_DESCRIPTOR. Händelseprovidern kan till exempel publicera både säkra och normala händelser via en mottagare. I det här fallet använder du säkerhetsbeskrivningen för administratörskontot för säkra händelser och en NULL- säkerhetsbeskrivning för normala händelser som kan tas emot av vem som helst.

Skydda händelser genom frikopplade händelseleverantörer

Frikopplade händelseleverantörer skiljer sig från icke-frikopplade händelseleverantörer på det sätt som de registrerar sig hos WMI. Anropet till IWbemEventProviderSecurity::AccessCheck för händelser från en frikopplad leverantör sprider aldrig klientens åtkomsttoken. WMI hanterar åtkomstkontrollen på samma sätt som för icke-oberoende händelseprovidrar. Mer information om hur du skriver en frikopplad tjänstleverantör finns i Införliva en tjänstleverantör i en applikation.

Endast administratörer med FULL_WRITE rättigheter som anges i WMI Control i Kontrollpanelen har behörighet att generera händelser för ett namnområde. Mer information finns i Ange namnområdessäkerhet med WMI-kontrollen.

Säkerställa WMI-händelser