Zabbix 5.0 GA: обновляем клиентские стенды, настраиваем MFA и зашифрованные макросы
Выпустили GA Zabbix 5.0 - Vue.js UI, TOTP-аутентификация, секретные макросы. Разбираем переход для клиентских инфраструктур под managed-обслуживанием.
Zabbix 5.0 GA (май 2020): новый Vue.js UI, поддержка MFA (TOTP), улучшенное шифрование и secret-макросы
Zabbix 5.0 вышел в GA. Мы его ждали - ещё в январе тестировали бета-сборки и описывали что там нового. Теперь можно переходить от лабораторных экспериментов к реальным клиентским стендам.
У нас под managed-сопровождением несколько десятков Zabbix-инсталляций разного масштаба. Не все нужно обновлять сразу, но несколько клиентов уже в очереди - у кого-то стоит 4.0, у кого-то 4.4, у одного вообще 3.4, который уже формально out of support. Про последнего мы тактично молчали несколько месяцев, но теперь аргумент «обновиться есть куда» стал неопровержимым.
Как прошло обновление на практике
Брали клиентов по одному, начиная с тех, кто проще: небольшие инсталляции без кастомных шаблонов и без экзотических баз данных. Стандартная схема - snapshot VM перед обновлением, upgrade через пакетный менеджер по официальной документации, проверка дашбордов, проверка алертов.
На большинстве стендов обновление прошло без сюрпризов. Нюансы начались там, где ожидали.
PHP и зависимости. Zabbix 5.0 требует PHP 7.2+. У двух клиентов на Debian Stretch стоял PHP 7.0 из дистрибутива. Пришлось сначала обновить PHP через sury.org репозиторий, и только потом двигаться к Zabbix. Не страшно, но добавило пары часов работы на каждый стенд.
Новый UI. Реакция пользователей оказалась лучше, чем мы ожидали. Дашборды с реактивным обновлением заметили сразу - без характерного мигания при перезагрузке виджетов. Несколько человек написали что «интерфейс стал быстрее», хотя бэкенд не менялся - просто Vue.js не перезагружает страницу целиком при каждом обновлении данных.
Часть экранов всё ещё в классическом PHP-исполнении - на дату релиза переезд неполный, это гибридный интерфейс. На практике это не мешает: переключение между «новым» и «старым» стилем происходит незаметно, если не знать куда смотреть.
Где сломалось. На одной инсталляции были кастомные dashboard-виджеты, добавленные через прямое редактирование PHP-шаблонов - старая история, досталась нам «по наследству» при переходе клиента на managed. Они, разумеется, не пережили обновление. Перед апгрейдом о такой кастомизации предупреждали, клиент подтвердил что виджеты некритичны. Решили заменить на стандартные средства - в 5.0 конфигуратор дашбордов стал заметно гибче, и в этом конкретном случае обошлись без кода.
MFA через TOTP
В Zabbix 5.0 появилась встроенная поддержка MFA для входа в веб-интерфейс. Метод - TOTP, то есть стандартный одноразовый код из Google Authenticator или любого совместимого приложения.
Мы включили MFA на всех клиентских Zabbix-инсталляциях для пользователей с правами администратора и superadmin. Логика простая: Zabbix-администратор видит все пароли в макросах, конфигурацию агентов, скрипты - доступ стоит защищать так же, как доступ к самой инфраструктуре.
Настройка несложная: в Administration - Authentication включается TOTP, пользователи при следующем входе получают QR-код для регистрации в приложении. Несколько минут работы на инсталляцию.
Практика, которую взяли из работы с MFA в других проектах: у каждого администратора должен быть зарегистрирован backup-код, и процедура его восстановления должна быть описана до того, как она понадобится в час ночи. В Zabbix это пока решается через прямой SQL-сброс в БД или через суперадминистратора без MFA - второй вариант удобнее, поэтому мы держим одну служебную учётку без MFA строго под нашим контролем для экстренного доступа.
Секретные макросы
Это та фича, которую мы ждали, пожалуй, дольше всего. В классическом Zabbix макросы хранятся в открытом виде - и это означало что SNMP community strings, пароли к базам для мониторинга, токены API всегда были видны в интерфейсе любому с доступом к настройкам хостов.
В 5.0 появился тип макроса «Secret text». Значение шифруется, в UI показывается как звёздочки, при экспорте конфигурации в XML значение не попадает - только имя макроса.
Прошлись по всем клиентским инсталляциям и перевели в Secret все макросы, которые содержат учётные данные. Работы на пару часов суммарно, но теперь скриншот экрана настройки хоста не превращается в список credentials. Звучит как очевидная вещь, но раньше этого просто не было.
Одно ограничение: если значение secret-макроса потеряно - восстановить из Zabbix невозможно, только перевыставить. Это нормально с точки зрения безопасности, но означает что где-то должен быть актуальный источник истины для этих паролей. У нас это запись в корпоративном менеджере паролей клиента - Zabbix-макрос и запись в хранилище должны быть синхронизированы.
Что дальше
Крупные инсталляции с более сложными зависимостями остались на следующий этап - там нужна более тщательная подготовка. Один клиент использует кастомные API-интеграции с Zabbix, и там нужно проверить совместимость с обновлённым API 5.0.
В целом обновление прошло рабочим способом - без драм. Новый UI клиенты приняли хорошо, MFA на административный доступ включили за один рабочий день, секретные макросы разгребли от открытых паролей. Три вещи, которые реально улучшают ситуацию, а не просто строчки в changelog.