Веб-консоль управления и мониторинга Entaxy ION

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

Безопасность

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

Комплексный подход обеспечивает надежность и безопасность веб-консоли Entaxy ION в рамках ее использования.

Получите подробную информацию о политике поддержки и обновлений здесь (https://entaxy.ru/eula). Техническая поддержка также доступна:

Требования по безопасности при конфигурировании Entaxy

Для обеспечения безопасности Entaxy мы можем рекомендовать использовать следующий подход:

  1. Для обеспечения безопасности на сетевом уровне рекомендуется использовать Firewall и сетевые правила. Список необходимых для работы сетевых портов доступен здесь (Сетевые параметры).

  2. Безопасность на транспортном уровне решается за счет использования протоколов HTTP и SSL.

  3. Безопасность на уровне БД организуется за счет решений Best practice, которые относятся к конкретной версии СУБД.

  4. Безопасность на уровне ОС реализуется за счёт использования стойких к взлому паролей. Также, рекомендуется не использовать учётную запись суперпользователя для запуска служб Entaxy.

  5. Безопасность на уровне приложения Entaxy реализуется за счёт использования сложных паролей, смены паролей для well-known учётных записей и использования LDAP для аутентификации пользователей. LDAP также позволяет использовать парольные политики для учётных записей.

  6. В качестве превентивной меры мы можем рекомендовать регулярно проверять логи безопасности приложения для выявления возможных нарушений информационной безопасности.

Настройка таймаута сессии в Hawtio

Для установки таймаута сессии в Hawtio необходимо отредактировать файл ${karaf.home}/etc/system.properties. Добавьте следующую строку и укажите желаемое количество секунд:

hawtio.sessionTimeout = [кол-во секунд]

Если этот параметр не задан, то hawtio использует таймаут сессии по умолчанию - 1800 секунд/30 минут.

Возможный список ролей для разграничения прав доступа к консоли управления Entaxy

  1. Общее описание

    Консоль управления 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

  2. Настройки по умолчанию

    По умолчанию в составе Entaxy ION есть настройки верхнего уровня, определенные в файле jmx.acl.cfg:

    Паттерн

    Роль

    list*

    viewer

    get*

    viewer

    is*

    viewer

    set*

    admin

    *

    admin

    Интерпретация настроек:

    • Для роли viewer доступно чтение всех атрибутов и их списков (list*, get*, is*).

    • Все остальные операции, включая установку атрибутов (set*), доступны только для пользователей с ролью admin.

    • Пользователи, не обладающие ни одной из указанных ролей, не имеют доступа к консоли.

  3. Разграничение доступа к функциональности Entaxy ION

    1. Настройка доступа к корню дерева 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, данные всех компонентов будут скрыты.

      roles 1

    Для возможности просмотра необходимо добавить пользователю хотя бы роль entaxyViewer.

  4. Структура дерева Entaxy ION

    Дерево JMX-бинов Entaxy ION имеет следующую структуру:

    • ru.entaxy.esb – корневой элемент, соответствующий пространству имен JMX.

    • 0.0.0.0 – текущий узел кластера, к которому пользователь подключился через консоль, в нем сосредоточена вся функциональность.

    • Узлы вида <ip:port> - другие узлы кластера, по которым доступна только общая информация.

      Структура текущего узла 0.0.0.0

      roles 2

      Платформа/фабрики – список доступных фабрик объектов, сгруппированных по типам объектов.
      Фабрика представляет собой внутренний компонент Entaxy, позволяющий создавать объекты времени исполнения, такие как профили, коннекторы, конфигурации, реалмы безопасности и другие.

      • Пример использования фабрик:

        Необходимо ограничить возможность создания файловых входных коннекторов только определенной ролью.

        1. Для этого требуется:

          1. найти соответствующую фабрику.

            roles 3
          2. определить ее JMX-имя

            roles 4

            В данном случае это «ru.entaxy.esb:localNode=0.0.0.0,group=platform,category=factories,producerType=entaxy.runtime.connector,factoryId=file-connector-in»

          3. создать файл конфигурации
            jmx.acl.ru.entaxy.esb.0.0.0.0.platform.factories.entaxy.runtime.connector.file_connector_in.cfg
            create* = objectCreator

            теперь создавать входные файловые коннекторы сможет только пользователь с ролью objectCreator

      • Пример: необходимо ограничить создание объектов безопасности (реалмы, хранилища ключей и прочее), предоставив эту возможность только пользователям с ролью securityDev.

        Необходимо:

        1. найти узел, общий для всех фабрик конкретных объектов безопасности (например, хранилища ключей):

          roles 5
        2. создать файл конфигурации jmx.acl.ru.entaxy.esb.0.0.0.0.platform.factories.entaxy.security.keystore.cfg

          create* = securityDev
          Состояние – корневой узел поддерева, отображающего текущие объекты времени исполнения – коннекции, профили, коннекторы и прочее.

      • Пример: необходимо разрешить читать свойства объектов безопасности только роли securityMan Необходимо:

        1. найти корневой узел объектов безопасности

          roles 6
        2. определить его JMX-имя

          В данном случае узел «Безопасность» не является самостоятельным бином, а только неким подобием папки или каталога для группировки других узлов. Необходимо перейти на дочерний узел и определить имя через него:

          roles 7
          roles 8

          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

        3. создать файл конфигурации jmx.acl.ru.entaxy.esb.0.0.0.0.runtime.security.cfg
          * = securityMan

  5. Заключение

    Набор конкретных ролей в Entaxy ION зависит от организации процесса разработки и эксплуатации, принятой в конечной организации. Руководствуясь общими принципами и примерами из данного документа, можно создать сколь угодно сложные системы.
    Кроме дерева Entaxy ION в консоли управления присутствует еще множество бинов, доступ к которым тоже можно разграничить. Весь доступный список можно получить на вкладке JMX:

    roles 9

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

    roles 10
    1. найти в дереве соответствующий бин

      roles 11
    2. создать файл jmx.acl.hawtio.LogQuery.cfg
      * = support
      Для пользователей без роли support раздел Log не будет даже отображаться

    roles 12

Шифрование и Хранение Паролей

Внутренний Доступ: Логины и Ключи

Для внутренней аутентификации в платформе 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". Это может потребовать внесения логинов и паролей, определяющих системные подключения к базам данных и брокеру, в конфигурационные файлы в открытом виде.

Чтобы обеспечить безопасность данных, рекомендуется выполнить следующие шаги:

  1. Выполните первый запуск системы Entaxy ION. При этом система инициализирует "secure vaults", обеспечивая безопасное хранение учетных данных.

  2. После успешного запуска системы добавьте необходимые учетные данные в "secure vaults" с использованием соответствующих инструментов управления хранилищем секретов.

  3. Внесите соответствующие изменения в конфигурацию системы, чтобы она использовала учетные данные из "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

  1. Создайте keystore:
    keytool -genkey -keyalg RSA -alias entaxy -keystore keystore -storepass karaf1234 -validity 360 -keysize 2048

  2. Разместите в keystore в папке, доступной для Karaf

  3. Определите полный путь к файлу keystore (например, ${karaf.etc}/keystore.pkcs12)

  4. Настройте файл 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
    cfg

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

    После отключения http протокола (при указании параметра false в строчке org.osgi.service.http.enabled=false) необходимо перезагрузить Entaxy

  5. Готово

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.

Если параметр topics.process указан, обрабатываются только события, установленные в нем; в противном случае обрабатываются все события, кроме игнорируемых.

Если перехваченное событие является 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

Эти логи помогают отслеживать действия администраторов и изменения конфигурации, обеспечивая полную прозрачность и контроль над системой.