04 июля 2006
P. Полозов. Современный программный комплекс. Технология CORBA.
P. Полозов
Системы безопасности, №5, 2005
Современный программный комплекс управления интегрированными системами должен отвечать длинному ряду требований. Для реализации этих требований при построении программных комплексов используются соответствующие конкурирующие между собой технологии и архитектурные решения, особое место среди которых занимает модульная технология CORBA.
Требования
Современный программный комплекс (ПК) для построения интегрированной системы безопасности среднего или крупного предприятия должен удовлетворять следующему ряду требований.
Масштабируемость
ПК должен обладать хорошей масштабируемостью, то есть способностью работать как на малых, так и на очень больших объектах. В зависимости от размера объекта используют различные варианты развертывания ПК. На малых объектах может использоваться автономная система, работающая на одном компьютере, на средних - система с централизованным подключением оборудования и возможностью управления с нескольких рабочих мест, на крупных - распределенная система с распределенным подключением оборудования и возможностью управления с любого компьютера локальной сети или из любой точки мира. Данное свойство особенно удобно, если существует необходимость связи крупного центрального офиса с удаленными небольшими филиалами организации. Установка одного и того же ПК в филиалах разного масштаба упрощает интеграцию и снижает стоимость сопровождения систем.
Надежность
Среди всех требований особое положение занимают вопросы надежности системы безопасности. Система должна иметь надежную защиту от несанкционированных действий операторов. Кроме того, работоспособность всей системы в целом не должна зависеть от работоспособности ее отдельных модулей. При выходе из строя или выключении рабочих станций или серверов, обслуживающих оборудование, могут отключаться определенные сегменты системы (оборудование при этом должно переходить в автономный режим работы), однако оставшаяся часть системы должна продолжать функционировать в полном объеме.
Универсальность
Современный ПК должен обладать возможностью объединения в единую систему различных подсистем безопасности (системы управления доступом, охранной сигнализации, пожарной сигнализации, аналогового и цифрового видеонаблюдения и т.п.) для организации эффективного взаимодействия между ними и обеспечения оперативного контроля и управления ими со стороны операторов. При этом должна обеспечиваться возможность выбора наиболее подходящего оборудования для каждой из подсистем.
Расширяемость
Комплекс должен обеспечивать возможность подключения новых модулей. Новые модули могут реализовывать дополнительную логику обработки информации или управления, гарантировать подключение к системе нового оборудования, отображение системы для операторов в нестандартном виде, стыковку и динамический обмен данными с другим программным обеспечением (ПО) и т.п. Очень важно, чтобы комплекс позволял подключать новые модули в "горячем" режиме, чтобы для обслуживания системы или добавления к ней новых модулей не приходилось отключать систему безопасности. Совместимость
Желательно, чтобы ПК мог функционировать на разных аппаратно-программных платформах. Это позволяет устанавливать комплекс на имеющемся оборудовании и упрощает интеграцию комплекса с информационными системами предприятия.
Открытость
Как это ни странно звучит, в некоторых случаях важно, чтобы ПК управления системой безопасности обладал открытостью. Под этим подразумевается возможность доработки П К силами организации-инсталлятора или конечного заказчика. Это позволит довести комплекс непосредственно под требования заказчика. В качестве возможных направлений доработки можно предложить поддержку нового оборудования, заказную логику поведения ПК в определенных ситуациях (например, отслеживание перемещения людей в помещениях, отслеживание допустимого времени пребывания автомобилей на парковке и т.п.), интеграцию с информационными системами предприятия (например, синхронизация базы данных системы управления взаимоотношениями с клиентами и базы данных пропусков системы управления доступом) и т.п. Необходимым условием для обеспечения открытости комплекса является использование наиболее распространенных и развивающихся современных технологий построения ПО.
В данной статье делается попытка предложить набор технологий и архитектурных решений, позволяющих реализовать перечисленные выше требования.
Технологии
Технологии модульного построения комплексов
Решение поставленных задач и удовлетворение постоянно возникающих новых требований к ПО возможны только в случае модульной организации ПК. На сегодняшний день существует несколько конкурирующих технологий модульного построения ПО. Из наиболее распространенных можно привести Microsoft COM+/.NET, Java 2 Enterprise Edition (J2EE) и CORBA. Все они позволяют создавать надежные, гибкие, расширяемые ПК, однако у каждой из них есть своя специфика.
Microsoft COM+/.NET
Несмотря на развитость сервисов платформы СОМ+ и (даже в большей степени) ее преемника .NET, это семейство платформ Microsoft для создания распределенных объектных приложений доступно только на платформе Windows. Отсутствие процесса стандартизации как такового, тесная интеграция с операционной системой (ОС) и, как следствие, закрытость этой платформы, а также отсутствие альтернативных реализаций ограничивают применимость семейства платформ СОМ+ / .NET для создания прикладной инфраструктуры предприятия. С технической точки зрения данные технологии вполне можно использовать, если, конечно, ставится задача построения комплекса исключительно для платформы Microsoft Windows. В этом случае упрощается задача поиска квалифицированных разработчиков, так как интерес к технологиям компании Microsoft традиционно высок. В качестве дополнительного плюса можно рассматривать то, что данные технологии часто считаются бесплатными для пользователей, так как их стоимость скрыта в стоимости ОС компании Microsoft.
Java 2 Enterprise Edition (J2EE)
Платформа J2EE, развиваемая в рамках открытого процесса стандартизации JCP (Java Community Process), впервые позволила использовать цельную компонентную модель - EJB (Enterprise JavaBeans), ориентированную на создание серверной бизнес-логики. Данная технология позволяет строить комплексы, функционирующие не только на платформе Microsoft Windows.
Она использует парадигму сервера приложений, которая в настоящее время признана критически важной для развертывания компонентов бизнес-логики в распределенной среде. Однако данная технология также обладает рядом ограничений, основное из которых - возможность использования только языка программирования Java. При построении ПК управления системой безопасности нередко возникает необходимость решения не только информационных задач, но и задач оперативного управления оборудованием, передачей и отображением аудио- и видеоинформации и т.п. Данные задачи часто требуют тонкой оптимизации на уровне работы с оборудованием или с ОС, что не всегда удобно (хотя и возможно) в рамках данной технологии.
OMG CORBA
Технология CORBA, разрабатываемая с 1989 г. консорциумом OMG (Object Management Group), является результатом работы ведущих специалистов из более чем 800 компаний и организаций. Четкий процесс стандартизации, включая аспекты взаимодействия реализаций CORBA от разных поставщиков (интероперабель-ность), независимость от языков программирования и операционных сред, фундаментальная поддержка ООП и многие другие уникальные характеристики сделали CORBA ведущим стандартом в области инфраструктурного middleware. Основой технологии CORBA являются:
- IDL (Interface Definition Language) - язык, позволяющий описать все аспекты удаленного
взаимодействия;
- схемы отображения IDL-объявлений на конкретные языки программирования;
- ORB (Object Request Broker) - объектная магистраль, позволяющая передавать запросы от
клиентов к серверам и обратно;
- сервисы (Common Object Services) CORBA;
- GIOP - спецификация протокола (команды и форматы передаваемой информации).
Распределенная система, использующая CORBA, не ориентирована на применение конкретных ОС, двоичных стандартов, сетевых протоколов и языков программирования. Фактически это единственная технология, которая обеспечивает возможность использования практически любых языков программирования и функционирование ПО почти на любых аппаратно-программных платформах.
Архитектура комплекса
При использовании технологии CORBA вся система представляет собой набор работающих в сети приложений, предоставляющих друг другу какие-либо ресурсы или обеспечивающих выполнение каких-либо задач (см. рисунок). При этом отдельными независимыми приложениями могут являться компоненты доступа к базе данных (БД), служебные сервисы системы (типа сервиса хранения настроек объектов или сервиса безопасности), драйверы работы с оборудованием, функциональные модули (работы с планами помещений, генерации отчетов, работы с БД пользователей и др.), а также пользовательские приложения, обеспечивающие отображение состояния объектов системы и возможность управления ими.
Рисунок. Архитектура ПК, построенного на основе технологии CORBA >>
Данная технология обеспечивает четкое разделение модулей системы на клиентские (пользовательские приложения) и серверные (драйверы оборудования). Технология обеспечивает удаленную стыковку модулей, установленных на разных компьютерах сети, что позволяет устанавливать серверные компоненты на выделенные компьютеры и подключать к ним оборудование, а на рабочие станции устанавливать только клиентские приложения. Кроме того, даже серверные компоненты ПК могут быть установлены на разные компьютеры сети, что позволяет разделить всю систему на независимые сегменты. При выходе из строя или выключении рабочих станций или обслуживающих оборудование серверов оставшаяся часть системы продолжает функционировать, а ранее выполняемые этими компьютерами функции автоматически переносятся на любые другие узлы сети, где установлены такие же модули. После восстановления работоспособности отключившихся узлов нагрузка может переноситься на них автоматически.
Благодаря использованию стандартной технологии стыковки между собой всех модулей системы сторонним разработчикам предоставляется возможность расширения системы за счет разработки своих собственных модулей, реализующих дополнительные возможности системы или поддержку нового специализированного оборудования.
Язык программирования
Технология CORBA позволяет вести разработку практически на любом языке программирования (C++, Java, Delphi и др.) и подлюбую аппаратно-программную платформу (Microsoft Windows - Intel, Linux, Sun Microsystems Solaris -SPARC). Однако использование языка программирования Java позволяет получить дополнительное преимущество переносимости ПК не только без его доработки, но даже и без его перекомпиляции.
Очень важным моментом является возможность использования других языков, таких как C++, для некоторых модулей системы. Например, это может понадобиться для разработки модулей работы с цифровым потоковым видео или для реализации поддержки оборудования, драйвер которого поставляется только в виде СОМ-интерфейса.
Доступ к БД
В случае использования языка Java для разработки ПК разработчик получает доступ к стандартной технологии взаимодействия с различными серверами БД JDBC (Java DataBase Connectivity). Основными частями технологии JDBC являются JDBC API (набор классов и методов, к которым обращается прикладной программист) и JDBC-драйверы, которые транслируют эти вызовы в команды API конкретной системе управления БД. При помощи данной технологии можно получить систему, независимую от используемого сервера БД, и, следовательно, иметь возможность выбора сервера непосредственно для каждого заказчика в соответствии с особенностями объекта.
Хранение данных
Для хранения настроек объектов, конфигурации рабочих мест и прочей информации в БД можно применять стандартную реляционную модель, где данные объектов каждого типа сохраняются в отдельной таблице, содержащей набор колонок, соответствующих списку свойств этих объектов. Такой вариант хранения обеспечивает быстрые сохранение, поиск и выборку данных из БД, его удобно использовать в информационных системах. Системы безопасности же имеют свою специфику. С одной стороны, здесь нет острой необходимости в быстром поиске среди миллионов записей (количество обслуживаемых аппаратных объектов обычно все-таки существенно меньше). С другой стороны, при расширении системы может возникнуть необходимость в добавлении новых типов объектов, что часто приводит к перестройке структуры БД, а это, в свою очередь, затрудняет процесс установки и поддержки системы. В качестве альтернативы можно рассмотреть хранение настроек объектов системы в полях типа BLOB в формате XML.
XML (extensible Markup Language) - стандарт структурного представления данных. Он представляет собой набор правил, которые позволяют определить структуру некоторого класса документов. Документ, созданный в соответствии с этими правилами, представляет собой текстовый файл, в котором присутствуют как собственно информация, так и теги ее разметки. Имея формально описанную структуру документа, можно проверить его корректность. Наличие тегов разметки позволяет анализировать документ не только человеку, но и программе. XML-документы, в первую очередь, предназначены для программного анализа их содержимого.
При таком подходе можно свободно сохранять в существующей таблице любые XML-документы без перестройки структуры БД, что дает возможность проводить расширение системы в "горячем" режиме без ее выключения. Однако возникает необходимость в стандартном инструменте поиска среди документов (так как стандартные средства поиска среди реляционных данных работать не будут). Для поиска удобнее всего использовать язык XPath, который предназначен для создания выражений для доступа на основании содержимого XML-документа, которые потом можно использовать в запросах к серверу БД. Некоторые серверы БД (например, Oracle Database) уже содержат встроенные средства поиска XML-документов по их содержимому. Другие же (например, Borland InterBase) обладают возможностью подключения к ним специальных модулей, реализующих данные функции.
Обмен данными с другими системами
На сегодняшний день для обмена данными с другими системами фактически все системы используют именно формат XML. При хранении конфигурации объектов в таком формате достаточно просто создать универсальную службу для обмена данными с внешними системами. Для этого достаточно экспортировать данные из БД в файлы на диск, не преобразуя их из реляционной формы в формат XML. В ряде случаев может возникать необходимость преобразования данных перед их передачей другой системе. Это может быть как преобразование структуры XML-документов, так и преобразование их в другой формат (например, текстовый с разделителями-табуляциями). Причем правила преобразования могут отличаться от одной внешней системы к другой. Данную задачу можно выполнить с помощью технологии XSL (extensible Style Language), которая представляет собой язык, позволяющий сформировать то или иное представление на базе XML-документа. Достаточно сформировать специальный документ, описывающий процесс преобразования исходного XML-документа в результирующий документ и воспользоваться существующими библиотеками преобразования.
Обмен сообщениями
Используя для построения системы технологию CORBA, для решения стандартных системных задач можно воспользоваться стандартными сервисами CORBA. Сервисы CORBA решают задачи поиска, установления отношений между объектами, сохранения их состояний, управления транзакциями и безопасностью, синхронного и асинхронного уведомления о тех или иных событиях и др. Одними из самых распространенных сервисов являются "Сервис событий" (Event Service) или идущий ему на смену и являющийся его развитием и обобщением "Сервис уведомлений" (Notification Service). Эти сервисы позволяют универсальным образом уведомлять объекты распределенной системы о происходящих событиях. Получателями могут являться программные модули, не обязательно разработанные производителем данного комплекса, что позволяет обеспечить расширение и подстройку системы под требования заказчика путем разработки новых функциональных модулей силами инсталлятора.
Обеспечение безопасности
При построении системы безопасности на базе стандартных и открытых технологий необходимо особое внимание уделить безопасности самого комплекса. Для решения этой задачи был разработан специальный "Сервис безопасности" CORBA (CORBA Security Service), который позволяет обеспечить в распределенных средах безопасность уровня В2, близкого к высшему уровню защиты, используемому в государственных учреждениях.
Пожалуй, это один из самых важных сервисов CORBA. Он решает многочисленные проблемы; идентификации пользователя, определения прав доступа к объектам, режимов делегирования полномочий при цепочке последовательных вызовов объектов друг другом, системы аудита, защиты информации при передаче, ведения достоверной истории взаимодействия объектов и многое другое. Первой из задач, решаемых данным сервисом, является задача аутентификации. Технология позволяет использовать как аутентификацию сервера клиентом (при этом используются цифровые сертификаты - public-key certificates), так и аутентификацию клиента сервером (при этом могут использоваться как цифровые сертификаты, так и обычные пароли). После аутентификации клиент может работать в системе. Каждый раз, когда клиент пытается получить доступ к каким-либо ресурсам (COR-ВА-объектам), "Сервис безопасности" выполняет процедуру авторизации. Основная задача здесь состоит в принятии решения о разрешении или запрещении доступа данного клиента к данному ресурсу. Это делается на основе идентификатора пользователя и специального списка уровней доступа (Access Control List - ACL) Обычно ACL представляет собой список ролей, которые имеют право использовать данный ресурс, а клиентам назначаются одна или несколько ролей.
При работе системы в рамках выделенной локальной сети передача CORBA-вызовов возможна и через обычные незащищенные каналы. Однако если система разворачивается в рамках общей сети (Internet или Intranet), необходимо принимать меры для защиты передаваемой информации от перехвата или модификации. Это достигается путем использования протокола безопасной передачи данных SSL (Secure Sockets Layer). В этом случае вся информация между сервером и клиентом передается в зашифрованном виде. "Сервис безопасности" - очень сложный сервис, спецификация которого состоит почти из 300 страниц, однако при всей его сложности и многочисленности решаемых им проблем, он практически не "виден" для прикладного программиста - все действия выполняются автоматически.
Разумеется, данная статья не покрывает всех возможных технологий и подходов к решению поставленных задач. Целью данной статьи было показать основные задачи, стоящие перед разработчиками ПО интегрированных систем технической безопасности, а также предложить возможные пути их решения. Автор надеется, что описанные в статье подходы и архитектурные решения могут быть полезны разработчикам ПО.
Автор выражает признательность московскому представительству компании Borland за оказанную информационную поддержку при подготовке материала.
Об авторе: P.O. Полозов, руководитель отдела разработки программного обеспечения компании "ААМ Системз"
Источник: Системы безопасности