Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Можно ли считать SCADA российской, если она зависит от иностранного ПО?

Можно ли считать SCADA российской, если она зависит от иностранного ПО?

Что находится внутри SCADA

Официально статус отечественного программного обеспечения подтверждается формальными критериями: нахождением в Реестре российского ПО, принадлежностью правообладателя к российской юрисдикции и заявленной поддержкой отечественных операционных систем. Однако если заглянуть под интерфейс оператора, окажется, что SCADA-система представляет собой сложный цепочечный стек технологий. В него входят среды исполнения, библиотеки, базы данных, средства генерации отчётов, сетевые драйверы и компиляторы. Некоторые из этих компонентов созданы за рубежом и не принадлежат самому создателю диспетчерского комплекса.

Означает ли это автоматическую утрату технологического суверенитета? Вовсе нет. В современной индустрии разработки практически не существует абсолютно изолированных программных платформ. Ключевой вопрос заключается в другом: сохраняет ли компания-разработчик возможность самостоятельно компилировать, модифицировать, обновлять и сопровождать свой продукт, если внешние сервисы и поддержка зарубежных вендоров станут полностью недоступны.

Архитектурные слои автоматизированных систем управления
Взаимодействие ядра SCADA с операционной системой и драйверами.
Поддержка Linux и сред совместимости в SCADA
Сравнение нативного запуска в Linux и работы через прослойку Wine.
Сравнительный анализ систем SCADA по открытым документам
Сопоставление популярных отечественных SCADA-систем по типу зависимостей.
Жизненный цикл и автономность программного комплекса SCADA
Полный контроль над сборкой и обновлением ПО как главный фактор суверенитета.

Дистрибутив SCADA редко представляет собой монолитную программу. Это распределённый инженерный комплекс, состоящий из множества специализированных модулей. В типовую программную архитектуру SCADA входят следующие уровни:

Реклама
  • Операционная система: среда исполнения (Windows, Linux или кроссплатформенная сборка). Поддержка Linux может быть как нативной, так и реализованной через слои совместимости.
  • Среда исполнения (Runtime): промежуточные платформы вроде .NET Runtime или Java Virtual Machine, без которых запуск исполнительных файлов невозможен.
  • Ядро SCADA: ключевой модуль, отвечающий за обработку тегов, логику алармов, обработку событий, архивацию данных и механизмы дублирования (горячего резервирования).
  • Коммуникационный уровень: драйверы протоколов связи (Modbus, MQTT, IEC 60870-5-104), а также стек OPC DA и OPC UA.
  • Хранение данных: встроенные специализированные архивы реального времени либо внешние системы управления базами данных (например, PostgreSQL или Microsoft SQL Server).
  • Визуализация (HMI): графический десктопный клиент для диспетчера, веб-интерфейс или гибридный вариант.
  • Сервер тревог (алармов): подсистема фиксации аварийных событий, фильтрации и отправки оповещений.
  • Подсистема отчётности: встроенный генератор формализованных отчётов или внешний программный модуль.
  • Инструментарий разработки (Toolchain): компиляторы, библиотеки SDK и сторонние зависимости, необходимы для сборки новых релизов.

Если в продукте применяется PostgreSQL, веб-сервер Nginx или открытый релиз .NET, это не делает весь комплекс импортным. При условии, что компоненты можно свободно дистрибутировать, ставить в автономном режиме и подменять при необходимости, такая зависимость является управляемой. Проблемы возникают тогда, когда внешний закрытый компонент нельзя исключить или подменить без полного разрушения архитектуры.

Можно ли считать SCADA российской при наличии внешних зависимостей
Наличие внешних библиотек в SCADA не всегда лишает продукт статуса отечественной разработки.

Яркий пример — запуск Windows-приложения в среде Linux с помощью прослойки Wine. Это не прямой порт под Linux, а работа через эмулятор окружения, что влечёт за собой специфические риски: сбои в работе систем печати, графических подсистем и стека OPC DA. Некоторые разработчики честно документируют такие особенности, в то время как другие используют .NET Framework или привязывают веб-клиенты к IIS в Windows и Apache/Nginx в Linux. Сама по себе технология не плоха и не хороша — имеет значение то, насколько разработчик контролирует её поведение.

Все программные зависимости SCADA я делю на три ключевых типа:

Реклама
  • Некритические: внешние модули, отключение которых не нарушает базовый функционал диспетчеризации и сбора данных.
  • Заменяемые: обязательные компоненты, для которых существуют проверенные аналоги, не требующие переработки ядра приложения.
  • Критические: модули, без которых система теряет работоспособность, а их замена требует переписывания исходного кода или смены архитектуры.

Иностранный компонент — ещё не иностранная SCADA

Наличие внешних библиотек и компонентов в составе SCADA — стандартная практика мировой разработки. Создавать с нуля собственную СУБД, веб-сервер, компилятор и графический движок для одного продукта экономически нецелесообразно и технически не оправдано. Существенное значение имеет не страна происхождения стороннего модуля, а степень контроля над ним со стороны авторов SCADA.

Составные элементы и библиотеки в составе SCADA
Компоненты разработки, СУБД и фреймворки, входящие в структуру SCADA.

Например, такие решения, как PostgreSQL или Nginx, хотя и создавались изначально с участием international-сообществ, распространяются по открытым лицензиям. Их исходный код доступен для аудита, а сами дистрибутивы можно разворачивать в закрытых технологических контурах без связи с внешними серверами аутентификации или обновлений.

Модели технологической зависимости

Использование сред .NET или Java требует индивидуального разбора. Важно учитывать конкретный вариант исполнения (открытый .NET Core / OpenJDK или проприетарные сборки), условия лицензирования и жесткую привязку к конкретной версии фреймворка. Обычное упоминание .NET в системных требованиях само по себе не означает критическую уязвимость, если используется открытая среда исполнения.

Настоящие риски возникают при использовании закрытых зарубежных модулей, отвечающих за ключевые функции: опрос оборудования, ведение технологического архива, лицензирование или компиляцию проектов. Если разработчик не способен самостоятельно устранить ошибку в таком бинарном модуле, он теряет контроль над жизненным циклом своего ПО.

Модели технологической зависимости диспетчерских систем
Основные категории технологической зависимости SCADA от стороннего ПО.

На основе этого можно выделить три модели технологической зависимости:

  • Российская SCADA с контролируемыми открытыми компонентами: ядро создано внутри страны, внешние модули представляют собой с открытым кодом решения с возможностью локальной сборки.
  • Российская SCADA, зависящая от внешней платформы: код системы отечественный, но запуск невозможен без проприетарных иностранных фреймворков или узких закрытых сред.
  • Локализованный зарубежный продукт: формальным правообладателем выступает российская структура, но ядро, архитектура и исходный код контролируются зарубежным разработчиком.

С юридической точки зрения все три варианта могут присутствовать в реестрах, однако степень реальной независимости у них кардинально отличается.

Реклама
Градация уровней технологической зависимости SCADA
Четыре уровня контроля над программными компонентами SCADA.

Как оценить технологическую зависимость SCADA

При оценке совместимости с Linux важно разделять нативные сборки и запуск через эмуляцию. Одна SCADA может иметь нативный бинарный код, скомпилированный непосредственно под архитектуру Linux и библиотеки glibc. Другая остается нативным Windows-приложением, запускаемым в Astra Linux или Red OS с помощью пакета Wine. Для конечного оператора интерфейс может выглядеть одинаково, но надёжность и глубинные зависимости будут разниться.

Запуск через Wine часто накладывает ограничения на работу с устаревшими стандартами OPC DA, а также на прямую печать отчётов через системные драйверы Windows. Это не аннулирует российский статус системы, но добавляет промежуточный слой, требующий отдельного сопровождения.

Аналогичным образом стоит оценивать .NET, Java, внешние СУБД и специализированные OPC-серверы. Я выделил четыре уровня контроля технологических зависимостей:

  1. Контролируемый: модуль поставляется с открытым кодом либо может собираться и сопровождаться инженерами компании-разработчика автономно.
  2. Заменяемый: компонент необходим для работы, но на рынке присутствуют альтернативные решения, переход на которые не требует глобальной переработки системы.
  3. Платформенный: работоспособность системы жёстко связана с определенной операционной системой, исполняемой средой или слоем совместимости.
  4. Критический: запуск ПО, опрос контроллеров или сборка обновлений невозможны без закрытого внешнего компонента, который разработчик не может модифицировать самостоятельно.

Сравнение технологических зависимостей российских SCADA

Для наглядности я проанализировал открытые технические данные и документацию нескольких популярных на российском рынке SCADA-систем. Сравнение строится на архитектурных особенностях, способах обеспечения кроссплатформенности и уровне прозрачности документации.

SCADA Нативная поддержка Linux Использование фреймворков (Wine / .NET) Основные технологические зависимости Прозрачность архитектуры Уровень независимости
SCADA 1 Да Автономная сборка под каждую ОС Независимая архитектура Средняя Независимая
SCADA 2 Нет .NET Framework .NET Runtime; Nginx (Linux), IIS (Windows) Высокая (открытый код) Зависимая (запуск через .NET Framework)
SCADA 3 Нет Wine Слой Wine Высокая Зависимая (запуск через Wine)
SCADA 4 Нет .NET Framework .NET Runtime, Nginx Средняя Зависимая (запуск через .NET Framework)
SCADA 5 Частично Wine / .NET для модуля EventLogViewer Apache, Wine, .NET Средняя Контролируемая (частичный запуск через Wine / .NET)
SCADA 6 Нет Wine Фреймворк Wine Высокая Зависимая (Wine Framework)

Примечание: Данные получены из официальной технической документации производителей. Приведённый анализ отражает характер архитектурных зависимостей, но не является оценкой функциональной полноты или производительности продуктов.

Сравнительный анализ показывает, что значительная часть отечественных SCADA-систем пока не имеет полноценной нативной сборки под Linux-дистрибутивы, полагаясь на слои совместимости Wine или инфраструктуру .NET Framework. Разница между продуктами заключается не столько в факте использования сторонних библиотек, сколько в глубине интеграции и количестве критических зависимостей.

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

Итог

По-настоящему технологически независимой можно признать ту SCADA-систему, полный жизненный цикл которой находится под контролем компании-разработчика. Инженеры поставщика должны иметь техническую возможность самостоятельно компилировать исполнительные файлы, выпускать патчи безопасности, поддерживать 핵심-модули и безболезненно менять внешние библиотеки при изменении внешних условий.

Использование сторонних компонентов с открытым исходным кодом, сторонних СУБД или универсальных сред исполнения не лишает SCADA отечественного статуса. Однако реальный уровень суверенитета определяется тем, сможет ли продукт функционировать и развиваться, если поддержка со стороны внешних экосистем прекратится.

Источник: habr.com

01.