- Print
- DarkLight
- PDF
Архитектура Doczilla Pro
Архитектура Doczilla Pro представлена на рисунке.
Doczilla Pro является веб-приложением. Клиентская часть функционирует в веб-браузере и не требует установки никаких дополнительных компонентов.
Компоненты сервера
Серверная часть приложения, функционирующая в среде Java Runtime Environment (JRE), состоит из следующих компонентов:
- веб-сервер - принимает клиентские запросы по протоколу HTTP(S), - центр авторизации - осуществляет аутентификацию и авторизацию пользователя, а также выполняет функции балансировщика в режиме кластера (см. описание архитектуры кластера далее),
- сервер приложений - исполняет бизнес-логику приложения, осуществляет взаимодействие с СУБД.
Компоненты сервера в зависимости от конфигурации приложения могут запускаться как единый процесс, либо как несколько независимых процессов. В случае запуска в разных процессах компоненты взаимодействуют по стандартной для Java-приложений технологии Remote Method Invocation (RMI).
Алгоритм обработки запросов пользователей
- Веб-сервер принимает запрос от веб-браузера пользователя по протоколу HTTP(S).
- Веб-сервер идентифицирует сессию пользователя и отправляет её на проверку в центр авторизации.
- Центр авторизации осуществляет проверку сессии пользователя. В случае, если сессия не авторизована, запускается протокол авторизации, описанный в п.4 настоящего документа. Если сессия авторизована, центр авторизации возвращает управление веб-серверу и указывает, какой сервер приложений должен обработать запрос пользователя. (В режиме работы без кластера серверов приложений все запросы пользователей обрабатывает единственный экземпляр сервера приложений.)
- Сервер приложений определяет тип запроса и обрабатывает его, запуская соответствующие алгоритмы бизнес-логики приложения. При необходимости сервер приложений формирует запросы к СУБД, файловой системе и иным ресурсам. Результат обработки запроса возвращается в веб-сервер.
- Веб-сервер возвращает результат обработки запроса в веб-браузер.
Режим кластера
Doczilla Pro поддерживает работу в режиме кластера. Архитектура кластера представлена на рисунке.
Кластеризации подлежат сервера приложений. При этом центр авторизации начинает выполнять роль балансировщика нагрузки: при получении очередного запроса пользователя центр авторизации указывает веб-серверу, какой из доступных серверов приложений должен обработать запрос исходя из их загруженности.
Сервера приложений могут запускаться как на отдельных физических серверах, так и в любой среде виртуализации.
Кластер серверов приложений целесообразно применять совместно с кластером СУБД, выделяя каждому экземпляру сервера приложений отдельный экземпляр СУБД.
Сетевые взаимодействия
Все компоненты сервера Doczilla Pro (в случае, если они запущены как отдельные процессы) взаимодействуют между собой через доработанный программный интерфейс RMI (Remote Method Invocation) с использованием транспортного протокола TCP. Сервер приложений взаимодействует с сервером СУБД также по протоколу TCP.
Каждый компонент сервера резервирует определённый в конфигурации TCP порт. По умолчанию резервируются следующие порты:
- веб-сервер – 9080,
- центр авторизации – 10000,
- сервер приложений – 15000.
Клиентская часть взаимодействует с сервером по протоколу HTTP(S).
Состав ПО
Клиентская часть
Клиентская часть разработана на языке JavaScript (HTML5, CSS3) без использования сторонних библиотек.
Серверная часть
Серверная часть разработана на языке Java с использованием следующих библиотек с открытым исходным кодом:
- Eclipse Jetty 9.2.20 (лицензия EPL) - встраиваемый контейнер сервлетов, поддерживающий спецификацию Java Servlets 3.0,
- Eclipse Business Intelligence and Reporting Tools (BIRT, лицензия EPL) - библиотека поддержки отчетов и бизнес-аналитики,
- Apache Commons (лицензия Apache License) - набор Java-библиотек общего назначения,
- PostgreSQL JDBC Driver 42 (лицензия BSD-2) - драйвер взаимодействия с СУБД PostgreSQL.
Обеспечение защиты информации
Идентификация, аутентификация и авторизация
1. Идентификация субъектов и объектов доступа
Субъектами доступа в модели разграничения доступа к данным Doczilla Pro являются пользователи. Каждый пользователь идентифицируется уникальным именем - логином.
При входе в систему пользователю назначается текущая сессия, идентифицируемая универсальным уникальным идентификатором в соответствии со стандартом Universally Unique Identifier (UUID). Все дальнейшие запросы пользователя к серверу содержат идентификатор сессии. Объекты доступа подразделяются на:
- статические объекты - не создаваемые и не удаляемые объекты, создаваемые при развертывании системы, либо являющиеся ее частью,
- динамические объекты - объекты, создаваемые и удаляемые пользователями в процессе работы с системой.
К статическим объектам относятся:
- таблицы базы данных,
- столбцы (поля) таблиц базы данных,
- обработчики запросов - программные модули, реализующие алгоритмы обработки данных.
Статические объекты идентифицируются типом и уникальным в рамках типа именем.
К динамическим объектам относятся прикладные объекты:
- документы,
- шаблоны,
- формулировки базы знаний
- прочее.
Каждый динамический объект являются записью в некоторой таблице базы данных, либо совокупностью записей в нескольких таблицах. Каждая запись таблицы идентифицируется универсальным уникальным идентификатором UUID.
2. Аутентификация субъектов доступа
Перед началом работы в системе пользователь проходит процедуру аутентификации. Процедура аутентификации выполняется в центре авторизации.
Общая схема аутентификации представлена на рисунке.
- Пользователь вводит в браузере логин и пароль. Веб-браузер передает логин и пароль в веб-сервер. В зависимости от настроек и используемого механизма аутентификации веб-браузер передает пароль в открытом виде, либо вычисляет значение хэш-функции для пароля.
- Веб-сервер запрашивает у центра авторизации проверку логина и пароля.
- Центр авторизации осуществляет проверку логина и пароля. В зависимости от настроек:
- Центр авторизации вычисляет значение хэш-функции пароля (если он был передан в открытом виде), получает через сервер приложений из базы данных сохраненное значение хэш-функции пароля для заданного логина и сопоставляет значения.
- Центр авторизации формирует запрос аутентификации к внешнему LDAP-серверу, сообщая логин и пароль.
3. Собственный механизм аутентификации Doczilla Pro
В Docazilla Pro реализован собственный механизм аутентификации на основе логина и пароля. Система хранит результат применения к паролю хэш функции. При входе в систему пользователь сообщает свой логин и пароль. Система вычисляет хэш-функцию пароля и сравнивает полученное значение со значением, хранимым в базе данных. В случае совпадения значений пользователю назначается сессия с уникальным идентификатором.
В зависимости от настроек вычисление хэш-функции производится либо в клиентской части, либо в серверной (в центре авторизации). Doczilla Pro использует хэш-функцию стандарта MD5.
4. Аутентификация с использованием LDAP или Microsoft Active Directory
Помимо собственного механизма аутентификации в Doczilla Pro реализован механизм аутентификации с использованием внешнего сервера LDAP, либо Microsoft Active Directory (MS AD).
Для обеспечения взаимодействия Doczilla Pro с внешним сервером LDAP в системных настройках указывается URL подключения к LDAP. Хэширование пароля на стороне клиента отключается.
При входе в систему пользователь также сообщает свой логин и пароль. Система формирует запрос аутентификации к внешнему LDAP-серверу. В случае успешной аутентификации в LDAP-сервере Doczilla Pro проверяет наличие учетной записи пользователя в собственной базе данных. Если учетная запись пользователя не существует, то, в зависимости от настроек, она может быть создана автоматически, либо нет. Если учетная запись отсутствует и не создается, аутентификация пользователя считается неуспешной.
Настройки Doczilla Pro позволяют указать перечень пользователей, аутентификация которых должна производиться только собственными средствами Doczilla Pro. По умолчанию в этот перечень входит администратор системы, чтобы доступ в систему не был полностью заблокирован при отсутствии связи с сервером LDAP.
5. Авторизация субъектов доступа
В случае успешной аутентификации центр авторизации вычисляет права доступа пользователя, создает пользовательскую сессию и возвращает ее идентификатор в веб-браузер, который, в свою очередь, передает идентификатор сессии в веб-браузер пользователя. Далее идентификатор сессии передается веб-браузером в каждом пользовательском запросе.
Идентификаторы сессии и перечень текущих прав пользователей хранятся только в оперативной памяти центра авторизации. В случае перезапуска центра авторизации все выданные ранее идентификаторы сессии становятся недействительными. Очередной запрос пользователя не проходит процедуру авторизации, центр авторизации возвращает в веб-сервер соответствующую ошибку, и веб-сервер запрашивает у веб-браузера повторный ввод логина и пароля. Процедура аутентификации и авторизации повторяется. Работа пользователя при этом не прерывается: после успешной повторной аутентификации и авторизации пользователь продолжает работу в том же окне приложения.
Разграничение доступа к данным
1. Общее описание механизмов разграничения доступа к данным
В Doczilla Pro реализовано два уровня разграничения доступа к данным:
- системный - осуществляется разграничение доступа к статическим объектам системы - таблицам и столбцам (полям) таблиц базы данных, а также прочим системным объектам;
- прикладной - осуществляется разграничение доступа к динамическим (создаваемым в процессе работы) объектам - документам, шаблонам, записям в базе знаний и прочее.
Механизмы разграничения доступа к данным реализованы встроенными средствами в сервере приложений. Каждый запрос пользователя к серверу проходит проверку доступа сначала на системном уровне, затем на прикладном.
Внешние средства разграничения доступа к данным не используются. Взаимодействие сервера приложений с СУБД производится от имени единой учетной записи СУБД.
2. Системный уровень разграничения доступа к данным
Объектами разграничения доступа на системном уровне являются статические объекты СУБД:
- таблицы,
- столбцы (поля) таблиц, а также специальные объекты сервера приложений:
- обработчики запросов.
Обработчики запросов - специальные системные объекты, обрабатывающие запросы пользователя в сервере приложений. К обработчику запроса в сервере приложений привязана определенная бизнес-логика, исполняемая при обработке запроса. Таким образом, разграничение доступа на системном уровне осуществляется не только к объектам СУБД, хранящим данные приложения, но и к отдельным алгоритмам, обрабатывающим эти данные.
Разграничение доступа к системным объектам осуществляется в соответствии с принципами ролевой дискреционной модели. Роли (группе) сопоставляется набор прав доступа к объектам:
- таблицы - чтение, редактирование, создание, копирование и удаление записи в таблице;
- столбцы (поля) - чтение и редактирование поля;
- обработчики запросов - исполнение.
Интерфейс системного администратора, управляющий правами доступа ролей (групп) к системным объектам представлен на рисунке.
Пользователю может быть назначен любой необходимый перечень ролей (групп).
При авторизации пользователя система вычисляет совокупность прав доступа из перечня назначенных ролей и их прав. Далее совокупные права применяются при проверке каждого запроса.
3. Прикладной уровень разграничения доступа к данным
Прикладной уровень разграничения доступа к данным реализован в самих алгоритмах бизнес-логики Doczilla Pro. Проверки прикладного уровня применяются к динамическим объектам системы - документам, шаблонам, записям в базе знаний и прочим. Каждый динамический объект являются записью в некоторой таблице базы данных, либо совокупностью записей в нескольких таблицах.
При создании объекта ему назначается владелец - пользователь, обладающий полными правами доступа к объекту. Владелец объекта определяет доступ к объекту и его частям для других пользователей.
Владелец объекта может комбинировать виды доступа пользователя к объекту или его частям.
Виды доступа к объекту:
- чтение;
- редактирование;
- комментирование.
Распределение функций между типами пользователей представлено в таблице