Integrity SCADA: обеспечение кросс-платформенности без технологий Wine
C 2014 г. стратегия импортозамещения в промышленности, в том числе снижения уровня зависимости от зарубежного программного обеспечения, стала одним из приоритетных направлений. Уже тогда компания «ЭлеСи» имела в своем арсенале многолетний опыт разработки собственной SCADA-системы с внедрениями по всей стране на таких объектах, как Братская ГЭС, СДКУ Транснефть, проект «Север», ЕСУ ТС ВСТО, АСДУ Московского метрополитена, Единая диспетчерская СУЭК-Кузбасс, СОДУ «Сила Сибири» и многие другие. Но, как и остальные отечественные производители, мы разрабатывали свой программный продукт под операционные системы семейства Windows как наиболее распространенного семейства операционных систем. Собственный программный код компонентов, использовавший преимущества Windows, не обеспечивал кроссплатформенность, и о 100%-ной импортозамещенности говорить было нельзя, поскольку средой выполнения программного обеспечения оставалась Windows.
На тот момент у нас возник вопрос, как обеспечить независимость от операционной системы Windows и дать потребителю возможность выбора других платформ, в том числе и отечественных. На волне импортозамещения появились и получили новый толчок в развитии такие операционные системы, как Astra Linux, RedOS, AltLinux, и другие.
На поверхности было два решения: быстрое и с минимальными доработками — использование Wine-технологии или подобных технологий виртуализации, либо долгое и затратное — полная переработка исходных кодов программных продуктов для обеспечения кросс-платформенности. Мы выбрали второй путь и не ошиблись.
Опираясь на 20-летний опыт разработки SCADA-систем, в 2016 г. наша компания начала разработку нового программного комплекса — платформы для создания систем управления и автоматизации под ОС различных семейств, без ограничения на использование по отраслям промышленности, с нуля. В 2019 г. «ЭлеСи» представила первую версию кросс-платформенного продукта — Integrity SCADA.
Integrity SCADA не привязана к конкретному типу производства и может применяться на предприятиях различных отраслей промышленности. Integrity SCADA имеет модульную структуру, что позволяет реализовывать проекты любого масштаба, только из необходимых функциональных компонентов в зависимости от целей проекта автоматизации (рис. 1).
Компонентный подход Integrity SCADA позволяет строить системы автоматизации под конкретные задачи, на базе только необходимых компонентов и на коммуникационных протоколах, вплоть до интеграции отдельных компонентов Integrity SCADA со сторонними системами, за счет строгого соответствия промышленным стандартам и спецификациям.
Серверные резервируемые компоненты
К серверным резервируемым компонентам относятся: IntegrityServer — сервер ввода/вывода оперативных данных; IntegrityHistoryServer — сервер истории; IntegrityReports — мощный инструмент по созданию отчетов с собственным редактором; IntegrityDataTransport — сервер транспорта данных.
IntegrityServer предназначен для сбора данных по промышленным протоколам, математической предобработки данных, генерации сообщений о событиях и авариях, предоставления данных сторонним системам и клиентским приложениям. Коммуникационные протоколы реализованы в виде подключаемых модулей. Можно собрать конфигурацию сервера только из необходимых модулей. Подтвержденная работоспособность сервера 24×7, с легкой масштабируемостью, от малых проектов 0–25 000 сигналов до проектов, содержащих более 2 000 000 сигналов. Предусмотрена возможность создавать распределенные системы обработки данных. Обмен данными со сторонними системами осуществляется по стандартным промышленным протоколам и спецификации OPC UA. Открытый формат конфигурации позволяет выполнять конфигурирование сторонними средствами. Встроены механизмы предотвращения потери оперативных данных и событий для клиентских подключений. Низкие требования к аппаратной составляющей, возможность работы без графического интерфейса на серверных операционных системах. Обеспечено горячее резервирование серверов данных с синхронизацией оперативных данных и событий. Исчерпывающие функции самодиагностики с предоставлением диагностической информации. Разграничение доступа к данным сервера ввода/вывода.
IntegrityHistoryServer обеспечивает сбор и хранение данных технологического процесса, а также предоставление исторических данных сторонним системам и клиентским приложениям. Распределенная структура хранения данных, разделение БД на БД хранения данных и БД хранения событий, как следствие — повышение скорости чтения/записи технологических данных. Предусмотрена схема распределенного резервирования — для каждого сервера истории можно назначить список коллекторов — сборщиков технологических данных и событий. Имеется настраиваемая защита от корректировки и удаления данных истории. Хранение данных осуществляется в первичном и архивном виде, сжатие первичных и архивных данных с настройкой уровня сжатия. Встроенная СУБД собственной разработки. Доступ к историческим данным и событиям посредством SQL-запросов и по спецификации OPC UA. Разграничение доступа к данным сервера истории.
IntegrityReports отвечает за формирование и управление отчетами различного уровня сложности для анализа исторических данных и оперативной производственной информации. Обладает широким набором базовых шаблонов отчетов, есть собственный встроенный редактор шаблонов отчетов. Получение оперативных и исторических данных для отчетов по спецификации ОРС UA или посредством SQL-запросов, в том числе со сторонних серверов данных. Генерация отчетов по расписанию, по событию, по запросу пользователя. Рассылка отчетов по E-Mail.
IntegrityDataTransport осуществляет транспорт данных как между локальными компонентами ПК, так и в рамках территориально распределенных источников данных и клиентских компонентов, организует единое адресное пространство. Внешняя коммуникация — ОРС UA. Резервирование источников, резервирование сетевых интерфейсов. Единое адресное пространство. Работа в условиях распределенной сети и нестабильных каналов связи. Шифрование данных по открытому и закрытому ключам, SSL-сертификаты. Низкие требования к пропускной способности каналов.
Встроенные компоненты клиентской безопасности
Сервер клиентской безопасности IntegrityClientSecurity служит для управления правами доступа пользователей к функциям клиентских приложений SCADA-системы. Использование кросс-платформенных служб организации учетных записей пользователей. Распределенная система резервирования. Возможность создания кластера клиентской безопасности с общей точкой входа пользователя на нескольких АРМ одновременно.
IntegrityEnvironmentControl осуществляет контроль целостности среды исполнения проекта: проверка контрольных сумм файлов, слежение за процессами и службами, контроль утилизации ресурсов операционной системы.
Клиентские компоненты Integrity SCADA
- IntegrityHMI — приложение визуализации;
- IntegrityTrends — приложение отображения графиков;
- Integrity Alarms — приложение отображения событий;
- IntegritySimpleReports — приложение для простого создания отчетов;
- IntegrityContainer — приложение-контейнер для встраивания клиентских приложений.
IntegrityHMI отображает технологический процесс в виде наглядной интерактивной схемы взаимодействия технологических объектов. Обладает собственным графическим векторным редактором. Выполняет создание проекта, а не отдельных мнемосхем. Единое дерево сигналов всего проекта. Редактор вычислений для встроенной обработки сигналов, можно использовать привычные среды разработки, редактирование стандартных динамик, возможность создания пользовательских динамик. ОРС UA с неограниченным количеством источников данных. Библиотека графических примитивов со сквозным изменением объектов, готовые встроенные отраслевые библиотеки.
IntegrityTrends — отображение в виде графиков изменения оперативных и исторических технологических параметров. Получение оперативных и исторических данных по спецификации OPC UA. Единое приложение — как часть приложения контейнера, единое приложение как часть проекта визуализации. Возможность добавления неограниченного количества графиков. Широкие возможности по формированию поля графиков. Дискретизация времени отображения данных до 1 мс. Гибкие настройки для ускорения работы с большими объемами данных. Экспорт в открытые форматы png, xlsx, odt, csv, html, печать.
IntegrityAlarms — отображение данных о технологическом процессе в виде таблицы сообщений о событиях, авариях и тревогах. Получение оперативных и исторических событий по спецификации OPC UA. Полная поддержка АЕ-модели. Единое приложение как часть приложения контейнера, единое приложение как часть проекта визуализации. Широкие возможности фильтрации событий, мигание сообщений. Экспорт в открытые форматы xlsx, odt, csv, html, печать.
IntegritySimpleReports — простое создание отчетов на основе шаблонов, подготовленных в офисных пакетах как по оперативным срезам данных, так и отчетов по историческим данным.
IntegrityContainer — приложение-контейнер, в которое встраиваются клиентские приложения (IntegrityTrends, IntegrityAlarms, IntegrityXYPlot), позволяющие из встраиваемых приложений сделать отдельный десктоп-клиент. Позволяет не реализовывать отдельные десктопные приложения, а создать универсальные клиентские приложения, которые могут одинаково встраиваться как в среду визуализации, так и в приложение-контейнер.
Веб-приложение визуализации IntegrityWeb. Реализован клиент визуализации посредством веб-клиента для отображения технологической информации в наглядном виде на любой платформе, в любом браузере. Предоставление технологии настоящего «тонкого клиента», только браузер, HTML, JS. Поддержка популярных браузеров без искажения отображения проекта автоматизации. Использование бесплатного кросс-платформенного веб-сервера. Получение данных и событий по спецификации OPC UA. Работа с десктопным проектом визуализации с поддержкой скриптов. веб-компонентов и событий в рамках проекта визуализации.
Информационная архитектура и производительность компонентов позволяют создавать системы как вертикального, так и горизонтального масштабирования (рис. 2).
Интеграционные возможности позволяют не только интегрироваться в действующую систему управления предприятием, но и стать ядром нового объекта (рис. 3). Компоненты, входящие в состав комплекса, полностью перекрывают уровень SCADA и частично проникают на другие уровни автоматизации, позволяя создавать системы управления любым технологическим процессом и инфраструктурой предприятия.
Кросс-платформенность компонентов и их унификация на уровне обмена данными позволяют создавать проекты под ОС различных семейств — например, с расположением сервера оперативных данных и сервера истории под управлением одной ОС, а клиентской части под управлением другой ОС (рис. 4).
Все компоненты Integrity SCADA разработаны на языке С++ без использования специфических системных функций, что в свою очередь обеспечивает максимальную производительность высоконагруженных систем.
Абсолютно все компоненты Integrity SCADA функционируют под Linux, в том числе средства визуализации, конфигурирования и собственная СУБД истории.
В Integrity SCADA не требуются виртуализация, применение Wine- и Wine-подобных решений или java-контейнеры.
Wine — это свободное программное обеспечение, позволяющее пользователям UNIX-подобных операционных систем, например Linux, исполнять приложения, созданные исключительно для Windows, без наличия установленной Windows. Wine также предоставляет программистам библиотеку программ Winelib, при помощи которой они могут компилировать Windows-приложения для портирования их в UNIX-подобные операционные системы. По сути, Wine является «прослойкой» между выполняемым приложением и операционной системой, позволяющей запускать приложения, написанные не под целевую операционную систему. Очевидные минусы технологии — невозможность 100%-ной эмуляции всех функций и технологий Windows, дополнительные существенные затраты ресурсов оборудования, так как появляется добавочная прослойка, что увеличивает конечную стоимость проекта автоматизации и существенно ограничивает быстродействие системы. Проблемы с лицензией использования Wine в коммерческих целях, и самый существенный минус — проблемы сертификации и безопасности. Использование сторонней Wine-технологии противоречит требованиям по обеспечению безопасности значимых объектов КИИ Российской Федерации (Приказ № 239 ФСТЭК России от 25.12.2017) в соответствии с Федеральным законом от 26.07.2017 № 187-ФЗ «О безопасности критической информационной инфраструктуры Российской Федерации».
На сегодня компания «ЭлеСи» активно продвигает и использует методы безопасной разработки ПО. Программный комплекс Integrity SCADA создан в соответствии с требованиями ГОСТ Р 56939–2016 по безопасной разработке программного обеспечения и лицензии ФСТЭК России на разработку и производство средств защиты конфиденциальной информации.
Большое внимание в Integrity SCADA уделено встроенным средствам информационной безопасности.
Безопасность реализуется за счет применения безопасного протокола передачи данных во всех компонентах комплекса. Поддерживаются все актуальные политики безопасности в соответствии со спецификацией OPC UA 1.05.02. Подключение с помощью учетных данных или сертификата пользователя. Выполняется асимметричное шифрование по открытому и закрытому ключу. Организация защищенного канала связи в распределенных системах даже в условиях открытой сети. Выполняется настройка разграничения доступа на основе ролевой модели, гибкая настройка политик безопасности. Встроен аудит действий пользователей и администраторов системы, ограничение доступа по времени и продолжительности сессии. Кластерная авторизация пользователей, журнал информационной безопасности, интеграция с SIEM-системами по Syslog, в том числе с Ankey SIEM NG.
Выполняется контроль утилизации ресурсов (загрузка ЦП, ОЗУ, дисков, температуры), контроль среды исполнения (состояние процессов, служб), контроль целостности системного и прикладного ПО. Встроено ограничение запуска прикладного ПО при нарушении целостности. Происходят регистрация, формирование сигнализации и возможность автоматической реакции на инциденты. Существует интеграция с журналом ИБ и SIEM-системами по Syslog.
В ходе выполнения работы было принято во внимание Постановление Правительства PФ от 14 ноября 2023 года № 1912 «О порядке перехода субъектов критической информационной инфраструктуры Российской Федерации на преимущественное применение доверенных программно-аппаратных комплексов на принадлежащих им значимых объектах критической информационной инфраструктуры Российской Федерации». Применение технологий виртуализации Wine в системах автоматизации практически всех отраслей промышленности для обеспечения требований к отечественным программным решениям в конечном итоге демонстрирует свою нежизнеспособность. Мы же, как показало время, не ошиблись в своем выборе.
Сегодня Integrity SCADA служит для реализации проектов на отечественных операционных системах в различных отраслях промышленности (рис. 5).