Що таке WMI
Windows Management Instrumentation (WMI) в дослівному перекладі - це інструментарій управління Windows. Якщо говорити більш розгорнуто, то WMI - це одна з базових технологій для централізованого управління і стеження за роботою різних частин комп'ютерної інфраструктури під управлінням платформи Windows. Технологія WMI - це розширена і адаптована під Windows реалізація стандарту WBEM, прийнятого багатьма компаніями, в основі якого лежить ідея створення універсального інтерфейсу моніторингу та управління різними системами і компонентами розподіленої інформаційної середовища підприємства з використанням об'єктно-орієнтованих ідеологій і протоколів HTML і XML.
В основі структури даних в WBEM лежить Common Information Model (CIM), що реалізує об'єктно-орієнтований підхід до подання компонентів системи. CIM є розширюваної моделлю, що дозволяє програмам, системам і драйверам додавати в неї свої класи, об'єкти, методи і властивості.
WMI, заснований на CIM, також є відкритою уніфікованою системою інтерфейсів доступу до будь-яких параметрах операційної системи, пристроїв і додатків, які функціонують в ній.
Важливою особливістю WMI є те, що зберігаються в ньому об'єкти відповідають динамічним ресурсів, тобто параметри цих ресурсів постійно змінюються, тому параметри таких об'єктів не зберігаються постійно, а створюються за запитом споживача даних. Сховище властивостей об'єктів WMI називається репозиторієм і розташоване в системній папці операційної системи Windows:
Класи, події і безпеку WMI
Так як WMI побудований за об'єктно-орієнтованому принципом, то всі дані операційної системи представлені у вигляді об'єктів і їх властивостей і методів.
Всі класи групуються в простору імен, які ієрархічно впорядковані і логічно пов'язані один з одним за певною технологією або галузі управління. У WMI є одне кореневе простір імен Root, яке в свою чергу має 4 підпростору: CIMv2, Default, Secutiry і WMI.
Класи мають властивості і методи і знаходяться в ієрархічній залежності один від одного, тобто класи-нащадки можуть успадковувати або перевизначати властивості класів-батьків, а також додавати свої властивості.
Властивості класів використовуються для однозначної ідентифікації примірника класу і для опису стану використовуваного ресурсу. Зазвичай все властивості класів доступні тільки для читання, хоча деякі з них можна модифікувати певним методом. Методи класів дозволяють виконати дії над керованим ресурсом.
Кожному екземпляру класу можна звернутися по повному шляху, який має наступну структуру:
Приклад звернення до процесу з ім'ям "Calc.exe", який запущений на локальній машині:
Примірники класів можуть генерувати події, до яких можна підписуватися. При настанні події WMI автоматично створює екземпляр того класу, якому відповідає ця подія. Такий механізм зручно використовувати для виконання певної команди при настанні певної події, тобто стежити за станом об'єктів операційної системи.
Загальна безпеку в WMI реалізується на рівні операційної системи, а додаткова політика безпеки заснована на рівнях просторів імен і протоколу DCOM. Тобто якщо користувач не має права робити якусь дію через операційну систему, він не зможе це зробити і через WMI. Якщо ж користувачеві дано якесь право в операційній системі, то це ще не означає, що це право буде і в WMI, так як в WMI діють додаткові параметри безпеки на рівні просторів імен.
Кожен об'єкт операційної системи має свій опис безпеки (SD) зі своїм списком доступу (ACL), в якому перераховані ідентифікатори користувачів (SID) і їх привілеї. Кожне простір імен може мати власну SD зі своїм ACL, де користувачам можуть бути призначені дозволу на читання даних, виконання методів, запис класів і даних та інші. Дані про додаткові дозволи зберігаються в репозиторії WMI. Окремі класи з просторів імен не мають власних описів безпеки, вони успадковують їх від свого простору імен.
За замовчуванням адміністратор комп'ютера має повні права на використання WMI, а решта користувачів можуть лише викликати методи, зчитувати дані і записувати в репозиторій екземпляри класів провайдерів WMI.
Для доступу до інфраструктури WMI використовується протокол DCOM, через який користувач підключається до WMI. Щоб визначити, які права будуть у підключився користувача, використовується механізми уособлення і аутентифікації протоколу DCOM.
Рівні уособлення можуть набувати наступних значень: