Как стать автором
Обновить

Мониторинг установки нового программного обеспечения на персональных компьютерах специалситов предприятия, с использованием Kaspersky Administration KIT

Исходные данные

У нас в организации, корпоративная сеть состоящая из 30 персональных компьютерах. Для централизованного администрирования антивирусной защиты организации мы используем Kaspersky Administration KIt. На каждом персональном компьютере установлены Антивирус Касперского и «Агент администрирования лаборатории Касперского».

Задача

Информирование администратора сети об установки программного обеспечения. Это поможет избежать несанкционированную установку. Автоматизация ведения журнала установленного программного обеспечения(ПО) на персональных компьютерах(ПК).

Анализ

Краткий принцип сбора и хранения информации Kaspersky Administration KIt таков: Kaspersky Administration KIt использует базу данных Microsoft SQL Server для хранения информации своей конфигурации, об антивирусной активности, о структуре сети и многое другое. Около 140 таблиц. Нас будет интересовать всего три таблицы, о которых я расскажу дальше. Агент администрирования лаборатории Касперского, установленные на каждом компьютере специалиста, собирает в реальном времени всю необходимую информацию и передает на сервер администрирования.

В БД нам интересны таблица hst_inventory_product — это своего рода номенклатура ПО, которое установлено либо было когда-то установлено в нашей организации. Пример одной строчки таблицы:

nID strId bIsMsi wstrDisplayName wstrDisplayVersion wstrPublisher ... ...
570 DF635BCE8840F718166AFAF0797BAAC9 True 1С: Предприятие 8.2 Тонкий клиент (8.2.18.61) 8.2.18.61 1C ... ...


Следующая таблица Hosts содержит информацию об хостах(персональных компьютерах). Пример одной строчки таблицы:

nId timeLastVisible timeLastInfoUpdate nGroupe nNtDomain strWinHostName ...
31 31.05.2013 7:23:37 31.05.2013 7:23:37 0 2 WS0340122801 ...


Следующая таблица hst_inventory_hstprds это таблица в которой nHostId-это вторичный ключ поля nId таблицы Hosts. nProduct это вторичный ключ поля nId таблицы hst_inventory_product. Пример одной строчки таблицы:

nId nHostId nProduct tmInstalDate ...
1838 1 26 23.11.2010 0:00:00 ...


Реализация

Для таблицы hst_inventory_hstprds создаем триггер.

ALTER TRIGGER [dbo].[inventory_new_inst]
ON [dbo].[hst_inventory_hstprds]   FOR INSERT
as
BEGIN
		insert into inventory_new_install 
		select inserted.nId from inserted
END


Таблица inventory_new_install это таблица с единственным столбцом nId являющаяся вторичным ключом поля nId таблицы hst_inventory_hstprds.
Теперь, как только на персональном компьютере произойдет установка программного обеспечения, Агент администрирования Kaspersky передаст соответствующую информацию на сервер администрирования. Сервер администрирования сохранит поступившие данные в БД. Как только на таблице hst_inventory_hstprds произойдет событие insert, запустится триггер inventory_new_inst, который добавит запись в таблицу inventory_new_install. Далее, следующим запросом мы получаем список установленного ПО.

SELECT 	inventory_new_install.nProduct ,Hosts.strWinHostName, 
	 hst_inventory_products.wstrDisplayName, 
	 hst_inventory_products.wstrDisplayVersion,
	 hst_inventory_hstprds.tmInstallDate,
	 hst_inventory_hstprds.wstrInstallDir
 FROM hst_inventory_products
 INNER JOIN hst_inventory_hstprds ON hst_inventory_products.nId = hst_inventory_hstprds.nProduct
     INNER JOIN inventory_new_install ON hst_inventory_hstprds.nId=inventory_new_install.nProduct
     LEFT OUTER JOIN Hosts ON hst_inventory_hstprds.nHostId=Hosts.nId 


Тем самым, мы осуществили контроль установки ПО с занесением в БД. Далее, я создал простенький web интерфейс с возможностью просмотра установленного ПО по дате, по хостам. Так-как мне по работе необходимо вести журнал установленного ПО, мне пришлось создавать таблицу inventory_new_inst. Если вам, достаточно только оповещение об установленном ПО, можно в триггере вызывать процедуру отправки письма на электронный ящик администратора.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.