Fornitura di eventi in modo sicuro
È possibile impedire agli utenti non autorizzati di ricevere eventi a cui non devono avere accesso. Il provider di eventi può fornire istanze delle proprie classi di evento, proprio come il provider del Registro di sistema fornisce classi come RegistryKeyChangeEvent. Il provider di eventi può anche fornire eventi intrinseci, ad esempio __InstanceCreationEvent. Per ulteriori informazioni, vedere Scrivere un fornitore di eventi.
Un provider di eventi può controllare l'accesso ai destinatari di eventi nei modi seguenti:
L'uso del controllo di accesso implementando IWbemEventProviderSecurity::AccessCheck è il modo più efficiente.
Il provider determina se il consumer dispone dei privilegi per ricevere un evento richiesto. Se il consumer non dispone di privilegi sufficienti per la registrazione, WMI restituisce un errore di accesso negato. Usare questa modalità quando il provider può prendere la decisione su chi può ricevere eventi. Ad esempio, un provider può fornire eventi correlati alla sicurezza e può richiedere che l'utente disponga dei privilegi di amministratore con il privilegio SeSecurityPrivilege abilitato.
L'implementazione di IWbemEventSink::SetSinkSecurity nel sink utilizzato per sollevare eventi consente di impostare un descrittore di sicurezza (SD) su quel sink per tutti gli eventi che vi transitano.
WMI esegue controlli di accesso basati su SD. Usa questa modalità quando il provider non può decidere chi sia autorizzato a usufruire dei suoi eventi, ma può scegliere un SD per un sink specifico. Ad esempio, usare IWbemEventSink::SetSinkSecurity se il fornitore di eventi ha ottenuto diversi sink tramite chiamate a IWbemEventSink::GetRestrictedSink e si desidera un descrittore di sicurezza per ogni sink.
L'impostazione della proprietà SECURITY_DESCRIPTOR di un evento consente l'impostazione di uno SD per ogni evento.
Usare questo approccio quando ogni evento recapitato al sink può avere descrittori di sicurezza diversi. Per usare questo approccio, derivare qualsiasi classe di evento estrinseca definita dal provider da __Event o __ExtrinsicEvent in modo che la classe contenga la proprietà SECURITY_DESCRIPTOR. Ad esempio, il provider di eventi può pubblicare eventi sia sicuri che normali tramite un sink. In questo caso, usare il descrittore di sicurezza dell'account Administrators per eventi sicuri e un descrittore di sicurezza null NULL per eventi normali che possono essere ricevuti da chiunque.
Proteggere Eventi tramite Fornitori di Eventi Disaccoppiati
I provider di eventi disaccoppiati differiscono dai provider di eventi non disaccoppiati nel modo in cui vengono registrati con WMI. La chiamata a IWbemEventProviderSecurity::AccessCheck per gli eventi da un provider disaccoppiato non propaga mai il token di accesso client. WMI gestisce il controllo di accesso allo stesso modo di per i provider di eventi nondecoupled. Per ulteriori informazioni sulla creazione di un provider disaccoppiato, consultare Incorporare un provider in un'applicazione.
Solo gli amministratori con privilegi di FULL_WRITE impostati in Controllo WMI del Pannello di Controllo possono generare eventi per uno spazio dei nomi. Per ulteriori informazioni, vedere Impostazione della sicurezza dello spazio dei nomi tramite il controllo WMI.
Argomenti correlati