Веб-консоль управления и мониторинга Entaxy ION
Веб-консоль предоставляет удобный пользовательский интерфейс для мониторинга и управления компонентами системы Entaxy ION в режиме реального времени. Она обеспечивает эффективное отслеживание работы приложений, позволяет осуществлять контроль и администрирование, а также предоставляет удобный доступ к разнообразным функциям и данным в рамках системы Entaxy.
Безопасность
Обеспечение безопасности включает в себя разносторонний набор мер и механизмов для гарантирования доступности, защиты программного обеспечения, сетевой безопасности и интегрированных средств идентификации и аутентификации.
-
Идентификация и аутентификация
-
Панель управления брокера Apache ActiveMQ Artemis поддерживает разные способы аутентификации пользователей, в том числе двустороннюю аутентификацию по клиентскому сертификату.
-
Комплексный подход обеспечивает надежность и безопасность веб-консоли Entaxy ION в рамках ее использования.
Получите подробную информацию о политике поддержки и обновлений здесь (https://entaxy.ru/eula).
Техническая поддержка также доступна:
-
По email: support@entaxy.ru
-
Через портал поддержки (https://support.entaxy.ru/).
Требования по безопасности при конфигурировании Entaxy
Для обеспечения безопасности Entaxy мы можем рекомендовать использовать следующий подход:
-
Для обеспечения безопасности на сетевом уровне рекомендуется использовать Firewall и сетевые правила. Список необходимых для работы сетевых портов доступен здесь (Сетевые параметры).
-
Безопасность на транспортном уровне решается за счет использования протоколов HTTP и SSL.
-
Безопасность на уровне БД организуется за счет решений Best practice, которые относятся к конкретной версии СУБД.
-
Безопасность на уровне ОС реализуется за счёт использования стойких к взлому паролей. Также, рекомендуется не использовать учётную запись суперпользователя для запуска служб Entaxy.
-
Безопасность на уровне приложения Entaxy реализуется за счёт использования сложных паролей, смены паролей для well-known учётных записей и использования LDAP для аутентификации пользователей. LDAP также позволяет использовать парольные политики для учётных записей.
-
В качестве превентивной меры мы можем рекомендовать регулярно проверять логи безопасности приложения для выявления возможных нарушений информационной безопасности.
Настройка таймаута сессии в Hawtio
Для установки таймаута сессии в Hawtio необходимо отредактировать файл ${karaf.home}/etc/system.properties.
Добавьте следующую строку и укажите желаемое количество секунд:
hawtio.sessionTimeout = [кол-во секунд]
Если этот параметр не задан, то hawtio использует таймаут сессии по умолчанию - 1800 секунд/30 минут.
Возможный список ролей для разграничения прав доступа к консоли управления Entaxy
-
Общее описание
Консоль управления Entaxy работает на базе фреймворка hawtio (https://hawt.io/) и архитектурно базируется на компонентах (бинах) JMX (https://ru.wikipedia.org/wiki/Java_Management_Extensions), которые выставляются через REST-интерфейс посредством Jolokia (https://jolokia.org/).
Каждый JMX-бин обладает операциями и атрибутами (которые в свою очередь тоже публикуются как операции
setXXX
,getXXX
,isXXX
).
Каждый бин обладает уникальным идентификатором (JMX object name), который имеет структуру видаnamespace;attr=value[,attr=value]*
. За счет последовательности атрибутов JMX-бины формируют дерево.Пример: JMX-бин профиля системы sys-1 обладает именем «ru.entaxy.esb:localNode=0.0.0.0,group=runtime,category=profiles,profile=sys-1», что формирует следующее JMX-дерево:
ru.entaxy.esb | +-- 0.0.0.0 | | | +-- runtime | | | +-- profiles | | | +-- sys-1
На каждом уровне дерева могут быть настроены права доступа для операций и атрибутов с помощью соответствующих файлов конфигурации в
${karaf.home}/etc
. Названия файлов конфигураций для примера выше приведены в таблице:Уровень Дерева
Конфигурационный Файл
ru.entaxy.esb
jmx.acl.ru.entaxy.esb.cfg
0.0.0.0
jmx.acl.ru.entaxy.esb.0.0.0.0.cfg
runtime
jmx.acl.ru.entaxy.esb.0.0.0.0.runtime.cfg
profiles
jmx.acl.ru.entaxy.esb.0.0.0.0.runtime.profile.cfg
sys-1
jmx.acl.ru.entaxy.esb.0.0.0.0.runtime.profile.sys_1.cfg
Обратите внимание, что при формировании имени файла «-» (дефис) заменяется на «_» (подчеркивание).
Более подробно: https://karaf.apache.org/manual/latest/#_rbac -
Настройки по умолчанию
По умолчанию в составе Entaxy ION есть настройки верхнего уровня, определенные в файле
jmx.acl.cfg
:Паттерн
Роль
list*
viewer
get*
viewer
is*
viewer
set*
admin
*
admin
Интерпретация настроек:
-
Для роли
viewer
доступно чтение всех атрибутов и их списков (list*, get*, is*). -
Все остальные операции, включая установку атрибутов (
set*
), доступны только для пользователей с рольюadmin
. -
Пользователи, не обладающие ни одной из указанных ролей, не имеют доступа к консоли.
-
-
Разграничение доступа к функциональности Entaxy ION
-
Настройка доступа к корню дерева Entaxy ION
Эта настройка может быть определена в файлах
jmx.acl.ru.entaxy.esb.cfg
илиjmx.acl.ru.entaxy.esb.0.0.0.0.cfg
.
Например, если мы выдадим права на операции только специализированным ролям:Паттерн
Роль
list*
entaxyViewer
get*
entaxyViewer
is*
entaxyViewer
set*
entaxyAdmin
*
entaxyAdmin
то при попытке зайти пользователем, у которого есть только роль viewer, данные всех компонентов будут скрыты.
Для возможности просмотра необходимо добавить пользователю хотя бы роль entaxyViewer.
-
-
Структура дерева Entaxy ION
Дерево JMX-бинов Entaxy ION имеет следующую структуру:
-
ru.entaxy.esb
– корневой элемент, соответствующий пространству имен JMX. -
0.0.0.0
– текущий узел кластера, к которому пользователь подключился через консоль, в нем сосредоточена вся функциональность. -
Узлы вида
<ip:port>
- другие узлы кластера, по которым доступна только общая информация.Структура текущего узла 0.0.0.0
Платформа/фабрики – список доступных фабрик объектов, сгруппированных по типам объектов.
Фабрика представляет собой внутренний компонент Entaxy, позволяющий создавать объекты времени исполнения, такие как профили, коннекторы, конфигурации, реалмы безопасности и другие.-
Пример использования фабрик:
Необходимо ограничить возможность создания файловых входных коннекторов только определенной ролью.
-
Для этого требуется:
-
найти соответствующую фабрику.
-
определить ее JMX-имя
В данном случае это «ru.entaxy.esb:localNode=0.0.0.0,group=platform,category=factories,producerType=entaxy.runtime.connector,factoryId=file-connector-in»
-
создать файл конфигурации
jmx.acl.ru.entaxy.esb.0.0.0.0.platform.factories.entaxy.runtime.connector.file_connector_in.cfg
create* = objectCreator
теперь создавать входные файловые коннекторы сможет только пользователь с ролью objectCreator
-
-
-
Пример: необходимо ограничить создание объектов безопасности (реалмы, хранилища ключей и прочее), предоставив эту возможность только пользователям с ролью securityDev.
Необходимо:
-
найти узел, общий для всех фабрик конкретных объектов безопасности (например, хранилища ключей):
-
создать файл конфигурации jmx.acl.ru.entaxy.esb.0.0.0.0.platform.factories.entaxy.security.keystore.cfg
create* = securityDev
Состояние – корневой узел поддерева, отображающего текущие объекты времени исполнения – коннекции, профили, коннекторы и прочее.
-
-
Пример: необходимо разрешить читать свойства объектов безопасности только роли securityMan Необходимо:
-
найти корневой узел объектов безопасности
-
определить его JMX-имя
В данном случае узел «Безопасность» не является самостоятельным бином, а только неким подобием папки или каталога для группировки других узлов. Необходимо перейти на дочерний узел и определить имя через него:
ru.entaxy.esb:localNode=0.0.0.0,group=runtime,section=security,security=jaas
Имя родительского узла: ru.entaxy.esb:localNode=0.0.0.0,group=runtime,section=security -
создать файл конфигурации jmx.acl.ru.entaxy.esb.0.0.0.0.runtime.security.cfg
* = securityMan
-
-
-
-
Заключение
Набор конкретных ролей в Entaxy ION зависит от организации процесса разработки и эксплуатации, принятой в конечной организации. Руководствуясь общими принципами и примерами из данного документа, можно создать сколь угодно сложные системы.
Кроме дерева Entaxy ION в консоли управления присутствует еще множество бинов, доступ к которым тоже можно разграничить. Весь доступный список можно получить на вкладке JMX:Допустим, необходимо ограничить доступ к просмотру логов, предоставив его только пользователям с ролью support.
-
найти в дереве соответствующий бин
-
создать файл jmx.acl.hawtio.LogQuery.cfg
* = support
Для пользователей без роли support раздел Log не будет даже отображаться
-
Шифрование и Хранение Паролей
Внутренний Доступ: Логины и Ключи
Для внутренней аутентификации в платформе Entaxy используются пароли и ключи. Они могут представлять собой внешние учетные данные (Active Directory) или быть включены в login modules на основе файлов users.properties. В последнем случае применяются хеши паролей, сохраненные в безопасном виде.
Настройки реалма Apache Karaf включают опцию "enable encryption" (включить шифрование), которая регулирует использование шифрования в login modules. При включенном шифровании пароль автоматически шифруется при первом входе пользователя в систему и затем сравнивается с сохраненным хешем в системе.
Внешний Доступ: Secure Vaults для Логинов и Паролей
Логины и пароли для внешних доступов обеспечиваются безопасностью через "secure vaults" - защищенное хранилище секретов. Secure Vaults предоставляют удобный механизм для записи учетных данных под псевдонимами, обеспечивая безопасное интегрирование внешних учетных данных в конфигурацию системы.
Первый запуск системы Entaxy ION
При первом запуске системы Entaxy ION важно учитывать отсутствие доступа к безопасному хранилищу секретов - "secure vaults". Это может потребовать внесения логинов и паролей, определяющих системные подключения к базам данных и брокеру, в конфигурационные файлы в открытом виде.
Чтобы обеспечить безопасность данных, рекомендуется выполнить следующие шаги:
-
Выполните первый запуск системы Entaxy ION. При этом система инициализирует "secure vaults", обеспечивая безопасное хранение учетных данных.
-
После успешного запуска системы добавьте необходимые учетные данные в "secure vaults" с использованием соответствующих инструментов управления хранилищем секретов.
-
Внесите соответствующие изменения в конфигурацию системы, чтобы она использовала учетные данные из "secure vaults". Это обеспечивает безопасное взаимодействие с внешними системами, используя зашифрованные или хешированные данные.
Хеш-алгоритмы
По умолчанию при подключении по ssh и https используются алгоритмы:
DIGEST ALGORITHMS | CIPHER ALGORITHMS/SIGNATURE ALGORITHMS |
---|---|
MD2 |
AES |
MD5 |
AESWRAP |
SHA |
AESWRAP_128 |
SHA-224 |
AESWRAP_192 |
SHA-256 |
AESWRAP_256 |
SHA-384 |
AES_128/CBC/NOPADDING |
SHA-512 |
AES_128/CFB/NOPADDING |
SHA-512/224 |
AES_128/ECB/NOPADDING |
SHA-512/256 |
AES_128/GCM/NOPADDING |
SHA3-224 |
AES_128/OFB/NOPADDING |
SHA3-256 |
AES_192/CBC/NOPADDING |
SHA3-384 |
AES_192/CFB/NOPADDING |
SHA3-512 |
AES_192/ECB/NOPADDING |
SHA3-224 |
AES_192/GCM/NOPADDING |
SHA3-256 |
AES_192/OFB/NOPADDING |
SHA3-384 |
AES_256/CBC/NOPADDING |
SHA3-512 |
AES_256/CFB/NOPADDING |
AES_256/ECB/NOPADDING |
|
AES_256/GCM/NOPADDING |
|
AES_256/OFB/NOPADDING |
|
ARCFOUR |
|
BLOWFISH |
|
CHACHA20 |
|
CHACHA20-POLY1305 |
|
DES |
|
DESEDE |
|
DESEDEWRAP |
|
PBEWITHHMACSHA1ANDAES_128 |
|
PBEWITHHMACSHA1ANDAES_256 |
|
PBEWITHHMACSHA224ANDAES_128 |
|
PBEWITHHMACSHA224ANDAES_256 |
|
PBEWITHHMACSHA256ANDAES_128 |
|
PBEWITHHMACSHA256ANDAES_256 |
|
PBEWITHHMACSHA384ANDAES_128 |
|
PBEWITHHMACSHA384ANDAES_256 |
|
PBEWITHHMACSHA512ANDAES_128 |
|
PBEWITHHMACSHA512ANDAES_256 |
|
PBEWITHMD5ANDDES |
|
PBEWITHMD5ANDTRIPLEDES |
|
PBEWITHSHA1ANDDESEDE |
|
PBEWITHSHA1ANDRC2_128 |
|
PBEWITHSHA1ANDRC2_40 |
|
PBEWITHSHA1ANDRC4_128 |
|
PBEWITHSHA1ANDRC4_40 |
|
RC2 |
|
RSA |
|
RSA/ECB/PKCS1PADDING |
Остальные функциональности достигаются с использованием библиотек Axiom JDK, Bouncy Castle или CryptoPro.
При подключении дополнительных компонент, таких как Axiom JDK или CryptoPRO, поддержка средств криптографической защиты информации осуществляется с использованием стандартных интерфейсов JCA.
Настройка использования https
-
Создайте keystore:
keytool -genkey -keyalg RSA -alias entaxy -keystore keystore -storepass karaf1234 -validity 360 -keysize 2048 -
Разместите в keystore в папке, доступной для Karaf
-
Определите полный путь к файлу keystore (например, ${karaf.etc}/keystore.pkcs12)
-
Настройте файл org.ops4j.pax.web.cfg на каждом узле кластера для включения SSL
Пример:
org.osgi.service.http.port.secure=8443 org.osgi.service.http.secure.enabled=true org.ops4j.pax.web.ssl.keystore=${karaf.etc}/keystore.pkcs12 org.ops4j.pax.web.ssl.password=karaf1234 org.ops4j.pax.web.ssl.keypassword=karaf1234
Обратите внимание, что этот конфигурационный файл автоматически не синхронизируется между узлами кластера. Поэтому необходимо внести соответствующие изменения на каждом узле.
После отключения http протокола (при указании параметра false в строчке org.osgi.service.http.enabled=false) необходимо перезагрузить Entaxy
-
Готово
SSH Конфигурация
Настройка SSH зависит от версии Java, определяя, какой алгоритм шифрования будет использован.
В файле org.apache.karaf.shell.cfg вы можете изменить порт прослушивания, длину ключа и алгоритм шифрования для управления безопасностью.
Конфигурационный файл находится по следующему пути: /etc/init/org.apache.karaf.shell.cfg
Многофакторная аутентификация (MFA)
Поддержка механизмов многофакторной аутентификации (MFA) реализуется через Keycloak или аналоги.
Поддержка единого входа в систему (SSO)
В этом разделе вы найдете подробные шаги по настройке технологии единого входа в систему (SSO) с применением Keycloak.
Журналирование событий изменения полномочий и действий администраторов
Конфигурация и инфраструктура
Журналирование событий в Entaxy базируется на инфраструктуре OSGi Event Admin.
Основные настройки находятся в файле /etc/org.ops4j.pax.logging.cfg
.
В конце файла находится раздел, предназначенный для настройки аудита:
# Entaxy CEF logger
Сообщения рассылаются через Event Admin, активируемый параметром audit.eventadmin.enabled=true
в файле /etc/org.apache.karaf.management.cfg
, что позволяет отслеживать каждое действие в JMX.
Перехват и обработка событий
Для обработки событий используются следующие настройки в файле /etc/ru.entaxy.audit.interpreter.jmx
:
topics.ignore=GETATTRIBUTE, GETMBEANINFO
topics.process=INVOKE
Эти параметры указывают, что игнорируются события типа GETATTRIBUTE и GETMBEANINFO, а перехватываются события типа INVOKE.
Если параметр |
Если перехваченное событие является INVOKE, оно передается на дальнейшую обработку (при наличии соответствующего обработчика).
Журналирование действий в Hawtio
События login и logout обрабатываются в веб-приложении Hawtio. При входе и выходе из системы Hawtio формирует события, которые отправляются в Event Admin и обрабатываются соответствующим обработчиком.
Логирование
Все изменения фиксируются в лог-файле cef-audit.log
.
Система не различает создание и изменение объекта, всегда указывая, что объект был изменен: |
CEF:0|EMDEV|ENTAXY|1.1.10-SNAPSHOT|ENTAXY OBJECTS|sys-1:common-system-profile|3|src=127.0.0.1:54069 suser=karaf msg=Object sys-1 of factory common-system-profile was changed outcome=Success end=1721122168415
Другие примеры логов включают обновление конфигурации и авторизацию пользователей:
CEF:0|EMDEV|ENTAXY|1.1.10-SNAPSHOT|Update configuration|org.apache.karaf.log.cfg|3|src=127.0.0.1 suser=local msg=Updating configuration from org.apache.karaf.log.cfg outcome=Success end=1721122233114
CEF:0|EMDEV|ENTAXY|1.1.10-SNAPSHOT|auth|login|3|src=127.0.0.1 suser=karaf msg=AUTHORIZED outcome=Success end=1721122004971
CEF:0|EMDEV|ENTAXY|1.1.10-SNAPSHOT|auth|logout|3|src=127.0.0.1 suser=karaf msg=SUCCESS outcome=Success end=1721122025777
Эти логи помогают отслеживать действия администраторов и изменения конфигурации, обеспечивая полную прозрачность и контроль над системой.