| Слушать на Google Podcasts | Слушать на Mave | Слушать на Яндекс Музыке |
Руслан Рахметов, Security Vision
Рис. 1 – Работающий сценарий – автоматизация порядка
В текущей статье мы разберем такие понятия, как сценарий, плейбук и скрипт, а также способы их реализации с точки зрения задач специалистов ИТ и информационной/экономической безопасности. Для начала определимся с терминологией и тем, что мы в дальнейшем будем описывать. Несмотря на одинаковый перевод*, договоримся, что скриптом в этой статье мы будем называть последовательность операций на каком-либо языке программирования (например, python), сценарием и плейбуком – последовательность действий, описанную человеческим языком (в том числе на бумаге или визуализированную в виде блок-схем). В различия между терминами мы закладываем особенности восприятия: если инженеру и программисту может быть просто работать с программным кодом (скриптом), то обычному пользователю – с блок-схемами, обычным текстом и памятками (сценарием/плейбуком). Именно благодаря стремлению делать инструкции проще и понятнее свою популярность обрели комиксы, изначально задумывавшиеся как пошаговые инструкции. В статье мы будем применять и этот термин – «инструкция», который объединяет наши понятия и встречался каждому читателю.
*Сценарий – слово итальянско-греческого происхождения со значением, близким к «подмосткам». Плейбук и скрипт имеют английские корни и на родном языке означают «сборник пьес» (playbook) и «сценарий» (script) соответственно. Все три термина пришли из театра, но укоренились в сфере информационной безопасности вместе с термином «оркестрация».
Рис. 2 – Пример процесса взятия заявки в работу в виде блок-схемы
Инструкции работают там, где есть алгоритм, т.е. если понятно, что делать в том или ином случае. Невозможно написать инструкцию для случаев, когда непонятно, что и когда делать. Таким образом, инструкции (сценарии, скрипты, плейбуки) связаны с задачами автоматизации. Но у этого инструмента могут быть разные формы и области применения: для описания функций нового холодильника, правил проезда в метро, особенностей распорядка в компании или даже нарушений, карающихся согласно уголовному кодексу. Любая инструкция состоит из причины (или цели), действия и результата. Например, чтобы правильно проехать на автобусе, нужно валидировать проездной билет, а для проверки компьютера на возможное заражение – запустить антивирусное ПО. Чем сложнее объект, тем сложнее структура инструкции: так в неё добавляются различные условия. Если включена лампочка «on air» на радиостанции, то идёт запись и лучше не шуметь, а если корпоративный ноутбук просит обновиться, то для обеспечения безопасности лучше сделать это в выделенное время.
Самое простое, что автоматизируют на первых этапах внедрения любой ИТ-системы, это рассылка уведомлений. Сама по себе рассылка - это мини-процесс, в котором есть триггер (причина возникновения уведомления, например, превышение лимита бесплатного места в облаке), текст уведомления и процедура его отправки конечному пользователю. Зачастую стандартные уведомления можно редактировать, добавляя туда свой текст или удаляя целые блоки, но иногда возникает потребность в применении более гибких конструкторов. Хорошими примерами будут BPM (Business Process Management) движки в CRM системах и решениях типа SOAR.
Аналогичным способом работает процесс, обратный рассылке уведомлений - процесс парсинга входящего сообщения. Например, обработка заявки от сотрудника на оформление оплачиваемого отпуска, анализ письма, отправленного специалисту ИБ на подозрение в фишинге, проверка доступности мест в офисной переговорке при бронировании через Exchange и т.д. Такие процессы направлены не на отправку писем, а на запуск процессов по причине того, что получено определённое письмо.
Существуют и более сложные процессы, в которых вовлечено сразу несколько пользователей и автоматические действия различных информационных систем. На картинке выше - пример процесса принятия в работу заявки на устранение уязвимости, в котором могут принимать участие пользователи L1-L2 уровней реагирования, их руководство и привлекаемые ИТ-специалисты.
В общем виде сценариев может быть очень много, а работать с ними при высоком уровне автоматизации может любой сотрудник в офисе или обычный человек дома. В случае с офисом, это конечно ИБ/ИТ специалисты, работа которых организована в пересекающихся системах, да и сами процессы часто вовлекают специалистов смежного департамента. Автоматизированные сценарии могут использовать и HR специалисты (для запуска оценки «360», отправки уведомлений о просроченных отпускных), бухгалтеры (отправка расчётных листков, электронное подписание заявок от сотрудников их руководителями), руководители (получение статистики по загрузке персонала, полугодовая оценка эффективности и премирования) и другие сотрудники.
Но сценарии существуют и дома, а реализованы могут быть не только в «умной» технике. Даже отложенный запуск стиральной машинки – тоже сценарий с простым условием запуска процесса после сработки таймера. Точно такие же условия применяются и в ИТ, когда для защиты от перегрузки сервера выставляется таймаут на отработку команды не более Х секунд. В качестве триггера для запуска скрипта может использоваться сигнал с датчика (включение лампы при фиксации движения, оповещение сотрудника ЭБ о возможной утечке конфиденциальной информации от DLP-системы). Дополнительным триггером может служить расписание, выполняющееся периодично (открытие штор во время рассвета, запуск чайника за 5 минут до будильника, очистка устаревших писем раз в полгода или бэкап большой базы данных в ночное время).
Рис. 3 – Пример процесса в виде скрипта
Второй тип инструкций – машиночитаемые скрипты. Чтобы автоматизировать что угодно, нужно запрограммировать компьютер на решение этой задачи, например, переместить файл из папки А в папку Б или найти дубликаты файлов (по имени, размеру и/или хэш-суммам). Если для решения задач есть возможность привлечь собственную разработку, то написать такие скрипты будет логично, поскольку автоматизировать таким образом можно очень много всего. Так работают, например, скрипты в Ansible Automation Platform (наборы сценариев там пишутся в YAML) и других решениях с удобным интерфейсом (исходный код программы состоит именно из машиночитаемых инструкций). Если интерфейс решения не позволяет строить алгоритмы в виде блок-схем, то скорее всего оперировать придётся такими «роботами» и «скриптами». Скрипты, конечно, помогают творить «магию», но для разных задач нужно знать разные языки программирования: Go, Python для работы с файлами, SQL для БД, SSH для процессов на Linux рабочих станциях и PowerShell скрипты для отработки сценариев на MS Windows АРМ и серверах.
Таким образом, любые задачи, у которых есть алгоритм, могут быть автоматизированы. Если вы выполняете одно и то же действие сотни раз и представляете, в каких условиях придётся повторять его снова, – пора задуматься об экономии времени и автоматизации. Применять можно разные инструменты: написать свою мини-программу (или не обязательно мини) или использовать визуально удобные блок-схемы и BPM-движки. Но самым удобным будет тот способ автоматизации, который позволит комбинировать гибкость скриптов и удобство работы с плейбуками в виде графических схем.