Безопасное предоставление событий

Вы можете запретить несанкционированным пользователям получать события, к которым у них не должно быть доступа. Поставщик событий может предоставлять экземпляры собственных классов событий так же, как поставщик системного реестра предоставляет классы, такие как RegistryKeyChangeEvent. Поставщик событий также может доставлять встроенные события, такие как __InstanceCreationEvent. Дополнительные сведения см. в статье Создание поставщика событий.

Поставщик событий может управлять доступом к получателям событий следующими способами:

  • Наиболее эффективным способом является управление доступом путем реализации IWbemEventProviderSecurity::AccessCheck .

    Поставщик определяет, имеет ли потребитель права на получение запрошенного события. Если потребитель не имеет достаточных привилегий для регистрации, WMI возвращает ошибку об отказе в доступе. Используйте этот режим, когда поставщик может принять решение о том, кто может получать события. Например, поставщик может предоставлять события, связанные с безопасностью, и может требовать, чтобы у потребителя были права администратора с включенной привилегией SeSecurityPrivilege .

  • Реализация IWbemEventSink::SetSinkSecurity в приемнике, используемом для создания событий, позволяет задать дескриптор безопасности (SD) в приемнике для всех событий, проходящих через.

    WMI выполняет проверки доступа на основе SD. Используйте этот режим, если поставщик не может принять решение о том, кому разрешено использовать его события, но может выбрать SD для конкретного приемника. Например, используйте IWbemEventSink::SetSinkSecurity , если поставщик событий получил несколько приемников путем вызовов IWbemEventSink::GetRestrictedSink и требуется дескриптор безопасности для каждого приемника.

  • Установка свойства SECURITY_DESCRIPTOR события позволяет задать SD для каждого события.

    Используйте этот подход, если каждое событие, доставляемое в приемник, может иметь разные дескрипторы безопасности. Чтобы использовать этот подход, наследуйте любой из классов событий, определенных поставщиком, от __Event или __ExtrinsicEvent чтобы класс содержал свойство SECURITY_DESCRIPTOR . Например, поставщик событий может публиковать как безопасные, так и обычные события через приемник. В этом случае используйте дескриптор безопасности учетной записи администраторов для безопасных событий и дескриптор безопасности NULL для обычных событий, которые могут быть получены любым пользователем.

Защита событий с помощью развязанных поставщиков событий

Поставщики событий, разделенные, отличаются от неразделанных поставщиков событий тем, как они регистрируются с помощью WMI. Вызов IWbemEventProviderSecurity::AccessCheck для событий от несвязанного поставщика никогда не распространяет маркер доступа клиента. WMI обрабатывает управление доступом так же, как и для поставщиков событий без параметров. Дополнительные сведения о написании несвязанного поставщика см. в разделе Включение поставщика в приложение.

Создавать события для пространства имен могут только администраторы с привилегиями FULL_WRITE, заданными в элементе управления WMIпанель управления. Дополнительные сведения см. в разделе Настройка безопасности пространства имен с помощью элемента управления WMI.

Защита событий WMI