КЭНК: подменятор дисков для vSphere
TL;DR на лету подсовываем скриптом жесткие диски виртуалкам на Windows
Архитектура одной из систем на проекте подразумевает полную сетевую изоляцию — компьютеры пользователей и сервера расположены в отдельной сети и не имеют связи с внешним миром. При этом пользователи обладают низкой компьютерной культурой и активно приносят данные в систему на флешках — а значит мы имеем ненулевую вероятность поймать вредонос, например шифровальщик. В общем, налицо необходимость регулярной доставки обновлений антивируса в систему, и стойкое нежелание делать это вручную. Твой выход, КЭНК-мен!
Кстати про супергероев. 12 лет назад я работал в классной дружной команде: мы фигачили с такой вовлечённостью и нацеленностью на результат, что совершенно естественным стало желание сдизайнить и заказать для айтишной группы плакаты и магниты на холодильник. Именно с таким ощущением мне с тех пор особенно сильно нравится работать:
После лирического отступления, возвращаемся к подменятору дисков. Так как и в основной и в изолированной системе работают центры администрирования Касперского, строим из подручных средств такой велосипед:
- добавляем по одному дополнительному vmdk диску к каждому серверу с KSC
- включаем опцию на основном сервере KSC, копирующую дубль обновлений на подменный диск
- делаем регулярную задачу на vCenter, стартующую скрипт PowerCLI, который меняет местами эти подменные диски между основным и изолированным KSC
- настраиваем изолированный KSC на забирание обновлений баз из папки на подменном диске
- заодно настраиваем регулярную выгрузки в папку на подменном диске статистики работы и мониторинга ИС
В итоге: требование сетевой изоляции соблюдено, базы антивируса с задержкой на 1-2 часа от внешнего мира обновляются автоматически, в мониторинг основой инфраструктуры попадают сведения из изолированной (с допустимым по SLA временем реакции).
Система вышла уязвимой к снапшотам, так как конфигурацию дисков на ВМ со снимками менять нельзя. Поэтому во время создания резервных копий серверов KSC подмены дисков не происходит. Впрочем накладка этих событий случается достаточно редко и сильно на работу системы не влияет — ничего страшного, переключатся в следующую итерацию.
Самое сложное в этом велосипеде — подобрать период переключения и времена стартов соответствующих задач на KSC, так как скачивание баз с репозиториев в интернетах происходит далеко не мгновенно (но это отдельная печальная песня). В нашем случае диски меняются местами раз в три часа.
Пока не решил, стоит ли тут заливать код скрипта на гитхаб, всё же ценность этого кэнк-решения в идее, а реализация довольно тривиальна. Но может заодно с другими выложу как-нибудь.
КЭНК!
Слава Роботам!