- Использование Windows Management Instrumentation для диагностики Using Windows Management Instrumentation for Diagnostics
- Реализация WMI Enabling WMI
- Доступ к данным WMI Accessing WMI Data
- Безопасность Security
- Предоставление дополнительным пользователям разрешений на регистрацию WCF WMI Granting WCF WMI Registration Permissions to Additional Users
- Предоставление разрешения на доступ к пространству имен WMI To grant WMI namespace access permission
- Предоставление доступа к регистрации поставщика To grant provider registration access
- Предоставление доступа произвольным пользователям или группам Granting Access to Arbitrary Users or Groups
- Доступ к экземплярам удаленных объектов WMI Accessing Remote WMI Object Instances
- WMI CIM Studio WMI CIM Studio
- Тестер инструментария управления Windows Windows Management Instrumentation Tester
Использование Windows Management Instrumentation для диагностики Using Windows Management Instrumentation for Diagnostics
Windows Communication Foundation (WCF) предоставляет данные проверки службы во время выполнения через поставщик WCF инструментарий управления Windows (WMI) (WMI). Windows Communication Foundation (WCF) exposes inspection data of a service at runtime through a WCF Windows Management Instrumentation (WMI) provider.
Реализация WMI Enabling WMI
Инструментарий WMI — это реализованный корпорацией Майкрософт стандарт управления предприятием через Интернет (WBEM). WMI is Microsoft’s implementation of the Web-Based Enterprise Management (WBEM) standard. Дополнительные сведения о пакете SDK для инструментария WMI см. в разделе инструментарий управления Windows (WMI). For more information about the WMI SDK, see Windows Management Instrumentation. WBEM является отраслевым стандартом предоставления приложениями инструментария управления для внешних средств управления. WBEM is an industry standard for how applications expose management instrumentation to external management tools.
Поставщик инструментария WMI — это компонент, предоставляющий инструментарий в среде выполнения с помощью совместимого с WBEM интерфейса. A WMI provider is a component that exposes instrumentation at runtime through a WBEM-compatible interface. Он состоит из набора объектов инструментария WMI, имеющих пары атрибут/значение. It consists of a set of WMI objects that have attribute/value pairs. Пары могут быть нескольких простых типов. Pairs can be of a number of simple types. Средства управления могут подключаться к службам через интерфейс во время выполнения. Management tools can connect to the services through the interface at runtime. WCF предоставляет атрибуты служб, такие как адреса, привязки, поведения и прослушиватели. WCF exposes attributes of services such as addresses, bindings, behaviors, and listeners.
Встроенный поставщик инструментария WMI может быть активирован в файле конфигурации приложения. The built-in WMI provider can be activated in the configuration file of the application. Это делается с помощью wmiProviderEnabled атрибута в разделе, как показано в следующем образце конфигурации. This is done through the wmiProviderEnabled attribute of the in the section, as shown in the following sample configuration.
Эта запись конфигурации предоставляет интерфейс инструментария WMI. This configuration entry exposes a WMI interface. Теперь приложения управления могут подключаться через этот интерфейс и обращаться к инструментарию управления приложения. Management applications can now connect through this interface and access the management instrumentation of the application.
Доступ к данным WMI Accessing WMI Data
Доступ к данным инструментария WMI может осуществляться несколькими различными способами. WMI data can be accessed in many different ways. Корпорация Майкрософт предоставляет API-интерфейсы WMI для сценариев, Visual Basic приложений, приложений C++ и платформа .NET Framework. Microsoft provides WMI APIs for scripts, Visual Basic applications, C++ applications, and the .NET Framework. Дополнительные сведения см. в разделе Использование WMI. For more information, see Using WMI.
При использовании предоставляемых .NET Framework методов для программного доступа к данным WMI следует помнить о том, что при установке подключения эти методы могут вызывать исключения. If you use the .NET Framework provided methods to programmatically access WMI data, you should be aware that such methods may throw exceptions when the connection is established. Подключение устанавливается не во время создания экземпляра ManagementObject, а при получении первого запроса, при котором происходит реальный обмен данными. The connection is not established during the construction of the ManagementObject instance, but on the first request involving actual data exchange. Следовательно, следует использовать блок try..catch для перехвата возможных исключений. Therefore, you should use a try..catch block to catch the possible exceptions.
Можно изменить уровень ведения журнала сообщений и трассировок, а также параметры журнала сообщений для источника трассировки System.ServiceModel в инструментарии WMI. You can change the trace and message logging level, as well as message logging options for the System.ServiceModel trace source in WMI. Это можно сделать, обратившись к экземпляру аппдомаининфо , который предоставляет эти логические свойства: LogMessagesAtServiceLevel , LogMessagesAtTransportLevel , LogMalformedMessages и TraceLevel . This can be done by accessing the AppDomainInfo instance, which exposes these Boolean properties: LogMessagesAtServiceLevel , LogMessagesAtTransportLevel , LogMalformedMessages , and TraceLevel . Поэтому, если в файле конфигурации прослушиватель трассировки настроен на ведение журнала, но эти параметры имеют значение false , можно впоследствии изменить их значения на true , когда приложение будет выполняться. Therefore, if you configure a trace listener for message logging, but set these options to false in configuration, you can later change them to true when the application is running. В результате ведение журнала будет включено во время выполнения. This will effectively enable message logging at runtime. Аналогично, если ведение журнала было включено в файле конфигурации, его можно отключить во время выполнения с помощью инструментария WMI. Similarly, if you enable message logging in your configuration file, you can disable it at runtime using WMI.
Необходимо помнить, что если прослушиватели трассировок журнала сообщений для журнала сообщений или прослушиватели трассировок System.ServiceModel для трассировок не заданы в файле конфигурации, ни одно из изменений не будет применено, даже если эти изменения принимаются инструментарием WMI. You should be aware that if no message logging trace listeners for message logging, or no System.ServiceModel trace listeners for tracing are specified in the configuration file, none of your changes are taken into effect, even though the changes are accepted by WMI. Дополнительные сведения о правильной настройке соответствующих прослушивателей см. в разделе Настройка ведения журнала сообщений и Настройка трассировки. For more information on properly setting up the respective listeners, see Configuring Message Logging and Configuring Tracing. Уровень трассировки всех остальных источников трассировки, заданных конфигурацией, действителен только при запуске приложения и не может быть изменен. The trace level of all other trace sources specified by configuration is effective when the application starts, and cannot be changed.
WCF предоставляет GetOperationCounterInstanceName метод для создания скриптов. WCF exposes a GetOperationCounterInstanceName method for scripting. Если передать этому методу имя операции, он возвращает имя экземпляра счетчика производительности. This method returns a performance counter instance name if you provide it with an operation name. Однако он не проверяет входные данные. However, it does not validate your input. Таким образом, если передать ему неправильное имя операции, возвращается неверное имя счетчика. Therefore, if you provide an incorrect operation name, an incorrect counter name is returned.
OutgoingChannel Свойство Service экземпляра не учитывает каналы, открытые службой для подключения к другой службе, если клиент WCF для целевой службы не создан в Service методе. The OutgoingChannel property of the Service instance does not count channels opened by a service to connect to another service, if the WCF client to the destination service is not created within the Service method.
Внимание! WMI поддерживает только TimeSpan значение до 3 десятичных разделителей. Caution WMI only supports a TimeSpan value up to 3 decimal points. Например, если одному из свойств служба присваивает значение MaxValue, при просмотре через WMI это значение усекается до 3 знаков после десятичного разделителя. For example, if your service sets one of its properties to MaxValue, its value is truncated after 3 decimal points when viewed through WMI.
Безопасность Security
Так как поставщик WMI WCF позволяет обнаруживать службы в среде, следует соблюдать особую осторожность при предоставлении доступа к ней. Because the WCF WMI provider allows the discovery of services in an environment, you should exercise extreme caution for granting access to it. При изменении настроек по умолчанию, при которых доступ предоставляется только администратору, третьи лица с более низкой степенью доверия могут получить доступ к конфиденциальным данным в среде. If you relax the default administrator-only access, you may allow less-trusted parties access to sensitive data in your environment. В частности, при расширении разрешений для удаленного доступа к WMI могут возникнуть атаки на переполнение. Specifically, if you loosen permissions on remote WMI access, flooding attacks can occur. При переполнении процесса избыточными запросами WMI производительность процесса может снизится. If a process is flooded by excessive WMI requests, its performance can be degraded.
Кроме того, при расширении прав доступа к файлу MOF третьи лица с более низкой степенью доверия могут управлять поведением WMI и изменять объекты, находящиеся в схеме WMI. In addition, if you relax access permissions for the MOF file, less-trusted parties can manipulate the behavior of WMI and alter the objects that are loaded in the WMI schema. Например, поля могут быть удалены таким образом, что критические данные скрыты от администратора; или поля, которые не заполняются или вызывают исключения, добавляются в файл. For example, fields can be removed such that critical data is concealed from the administrator or that fields that do not populate or cause exceptions are added to the file.
По умолчанию поставщик WMI WCF предоставляет разрешения «выполнить метод», «запись поставщика» и «включить учетную запись» для администратора, а также разрешение «включить учетную запись» для ASP.NET, локальной службы и сетевой службы. By default, the WCF WMI provider grants «execute method», «provider write», and «enable account» permission for Administrator, and «enable account» permission for ASP.NET, Local Service and Network Service. В частности, на платформах, отличных от Windows Vista, учетная запись ASP.NET имеет доступ на чтение к пространству имен WMI ServiceModel. In particular, on non-Windows Vista platforms, the ASP.NET account has read access to the WMI ServiceModel namespace. Если требуется не предоставлять эти привилегии определенной группе пользователей, нужно либо деактивировать поставщика инструментария WMI (по умолчанию он отключен), либо запретить доступ указанной группы пользователей. If you do not want to grant these privileges to a particular user group, you should either deactivate the WMI provider (it is disabled by default), or disable access for the specific user group.
Возможно, поставщик инструментария WMI не удастся включить через конфигурацию по причине недостаточных привилегий пользователя. In addition, when you attempt to enable WMI through configuration, WMI may not be enabled due to insufficient user privilege. Однако при возникновении этого сбоя никакой записи в журнале событий не делается. However, no event is written to the event log to record this failure.
Для изменения уровней привилегий пользователя выполните следующие шаги. To modify user privilege levels, use the following steps.
Нажмите кнопку Пуск, а затем запустите и введите compmgmt. msc. Click Start and then Run and type compmgmt.msc.
Щелкните правой кнопкой мыши службы, приложения и элементы управления WMI , чтобы выбрать свойства. Right-click Services and Application/WMI Controls to select Properties.
Откройте вкладку Безопасность и перейдите к пространству имен root/ServiceModel . Select the Security Tab, and navigate to the Root/ServiceModel namespace. Нажмите кнопку Безопасность . Click the Security button.
Выберите конкретную группу или пользователя, которым требуется управлять доступом, и используйте флажок Разрешить или запретить для настройки разрешений. Select the specific group or user that you want to control access and use the Allow or Deny checkbox to configure permissions.
Предоставление дополнительным пользователям разрешений на регистрацию WCF WMI Granting WCF WMI Registration Permissions to Additional Users
WCF предоставляет доступ к данным управления для WMI. WCF exposes management data to WMI. Это достигается за счет размещения внутрипроцессного поставщика WMI, который иногда называется «несвязанным поставщиком». It does so by hosting an in-process WMI provider, sometimes called a «decoupled provider». Для предоставления доступа к данным управления учетная запись, которая регистрирует этот поставщик, должна иметь необходимые разрешения. For the management data to be exposed, the account that registers this provider must have the appropriate permissions. В Windows регистрация несвязанных поставщиков по умолчанию доступна только небольшому числу привилегированных учетных записей. In Windows, only a small set of privileged accounts can register decoupled providers by default. Это обстоятельство вызывает затруднения, поскольку пользователям обычно нужно предоставлять доступ к данным WMI из службы WCF, которая работает с учетной записью, не входящей в набор по умолчанию. This is a problem because users commonly want to expose WMI data from a WCF service running under an account that is not in the default set.
Чтобы предоставить такой доступ, администратор должен предоставить дополнительной учетной записи следующие разрешения в указанном порядке: To provide this access, an administrator must grant the following permissions to the additional account in the following order:
разрешение на доступ к пространству имен WCF WMI; Permission to access to the WCF WMI Namespace.
разрешение на регистрацию несвязанного поставщика WMI для WCF. Permission to register the WCF Decoupled WMI Provider.
Предоставление разрешения на доступ к пространству имен WMI To grant WMI namespace access permission
Запустите следующий сценарий PowerShell. Run the following PowerShell script.
Этот сценарий PowerShell использует язык определения дескрипторов безопасности (SDDL) для предоставления группе Built-In Users доступа к пространству имен WMI root/ServiceModel. This PowerShell script uses Security Descriptor Definition Language (SDDL) to grant the Built-In Users group access to the «root/servicemodel» WMI namespace. В нем указываются следующие списки управления доступом. It specifies the following ACLs:
Встроенная учетная запись администратора (BA) — уже имеет доступ. Built-In Administrator (BA) — Already Had Access.
Сетевая служба (NS) — уже имеет доступ. Network Service (NS) — Already Had Access.
Локальная система (LS) — уже имеет доступ. Local System (LS) — Already Had Access.
Встроенные пользователи — группа, которой предоставляется доступ. Built-In Users — The group to grant access to.
Предоставление доступа к регистрации поставщика To grant provider registration access
Запустите следующий сценарий PowerShell. Run the following PowerShell script.
Предоставление доступа произвольным пользователям или группам Granting Access to Arbitrary Users or Groups
В примере из этого раздела всем локальным пользователям предоставляются права доступа к регистрации поставщика WMI. The example in this section grants WMI Provider registration privileges to all local users. Если вы хотите предоставить доступ пользователю или группе, которые не являются встроенными, необходимо получить идентификатор безопасности (SID) этого пользователя или группы. If you want to grant access to a user or group that is not built in, then you must obtain that user or group’s Security Identifier (SID). Нет общего метода для получения идентификатора безопасности любого пользователя. There is no simple way to get the SID for an arbitrary user. В качестве одного из решений можно выполнить вход от имени нужного пользователя, а затем выполнить следующую команду в командной оболочке. One method is to log on as the desired user and then issue the following shell command.
Дополнительные сведения см. в разделе хорошо известные идентификаторы безопасности. For more information, see Well Known SIDs.
Доступ к экземплярам удаленных объектов WMI Accessing Remote WMI Object Instances
Если необходимо получить доступ к экземплярам WMI WCF на удаленном компьютере, необходимо включить конфиденциальность пакетов для средств, используемых для доступа. If you need to access WCF WMI instances on a remote machine, you must enable packet privacy on the tools that you use for access. В следующем разделе описывается, как это можно сделать с помощью WMI CIM Studio, тестера инструментария управления Windows или .NET SDK 2.0. The following section describes how to achieve these using the WMI CIM Studio, Windows Management Instrumentation Tester, as well as .NET SDK 2.0.
WMI CIM Studio WMI CIM Studio
Если вы установили средства администрирования WMI, вы можете использовать WMI CIM Studio для доступа к экземплярам WMI. If you’ve installed WMI Administrative Tools, you can use the WMI CIM Studio to access WMI instances. Эти средства находятся в следующей папке: The tools are in the following folder:
Средства Филес\вми%Виндир%\програм\ %windir%\Program Files\WMI Tools\
В окне Подключение к пространству имен: введите рут\сервицемодел и нажмите кнопку ОК. In the Connect to namespace: window, type root\ServiceModel and click OK.
В окне входа WMI CIM Studio нажмите кнопку Параметры >> , чтобы развернуть окно. In the WMI CIM Studio Login window, click the Options >> button to expand the window. Выберите параметр Конфиденциальность пакетов для уровня проверки подлинности и нажмите кнопку ОК. Select Packet privacy for Authentication level, and click OK.
Тестер инструментария управления Windows Windows Management Instrumentation Tester
Это средство установлено Windows. This tool is installed by Windows. Запустите командную консоль, введя cmd.exe в диалоговом окне Запуск/Запуск и нажмите кнопку ОК. To run it, launch a command console by typing cmd.exe in the Start/Run dialog box and click OK. Затем введите wbemtest.exe в командном окне. Then, type wbemtest.exe in the command window. Запустится средство Тестер инструментария управления Windows. The Windows Management Instrumentation Tester tool is then launched.
Нажмите кнопку подключить в правом верхнем углу окна. Click the Connect button on the top right corner of the window.
В новом окне введите рут\сервицемодел в поле пространство имен и выберите параметр Конфиденциальность пакетов для уровня проверки подлинности. In the new window, enter root\ServiceModel for the Namespace field, and select Packet privacy for Authentication level. Нажмите кнопку Соединить. Click Connect.