JAAS
Entaxy ION предоставляет современную и гибкую систему безопасности с использованием JAAS (Java Authentication and Authorization Service), который поддерживает управление несколькими реалмами.
Realms (реалмы)
Реалм включает в себя определение модулей входа, используемых для аутентификации и/или авторизации в этом реалме. Модули входа определяют аутентификацию и авторизацию для данного реалма.

Предустановленный 'realm karaf' по умолчанию включает в себя пять модулей:
-
karaf-properties
-
karaf-publickey
-
karaf-file-audit
-
karaf-log-audit
-
karaf-eventadminaudit
При каждой попытке входа пользователя процесс аутентификации проходит через эти модули в установленном порядке. У вас есть возможность изменять порядок этих модулей, перетаскивая соответствующие блоки.
Доступно удаление существующих или добавление дополнительных модулей безопасности.
Полный перечень доступных модулей безопасности.
Создание реалма
Чтобы создать новый реалм, перейдите в раздел 'Безопасность' - 'jaas' и нажмите кнопку 'Add Jaas Realm'.

В появившемся окне вы увидите следующие параметры:

-
General:
-
*Factory: Идентификатор используемой фабрики. Обязательный параметр с предустановленным значением -
jaas-realm
. -
*Realm Name: Название реалма.
-
Display Name: Отображаемое имя реалма. Необязательное поле.
-
*Rank: -1 (Порядок, в котором реалмы, имеющие одинаковые имена, будут участвовать в процессе аутентификации и авторизации (отрицательное значение используется по умолчанию))
-
-
Modules:
-
Добавление Login Module.
-
Модули безопасности

-
eventadmin-audit-jaas-login-module
-
Этот модуль отслеживает попытки аутентификации с использованием службы OSGi Event Admin.
-
-
file-audit-jaas-login-module
-
Этот модуль записывает информацию о попытках аутентификации непосредственно в указанный вами файл. Он не использует инфраструктуру журналирования.
-
-
jdbc-jaas-login-module
-
Реализует аутентификацию и авторизацию, используя базу данных JDBC.
-
Настройки JDBC (URL, пользователь, пароль) определяются при конфигурации модуля.
-
Аутентификация проходит по имени пользователя и паролю, а авторизация возвращает роли, связанные с пользователем.
-
-
ldap-jaas-login-module
-
Обеспечивает аутентификацию и авторизацию через протокол LDAP/S (Lightweight Directory Access Protocol).
-
Настройки включают адрес машины с LDAP/S-сервером, порт, имя пользователя и пароль.
-
Аутентификация осуществляется по имени пользователя и паролю, а авторизация возвращает роли, связанные с пользователем.
Подробнее: Создание и настройка LDAP/LDAPS модуля
-
-
log-audit-jaas-login-module
-
Записывает информацию о попытках аутентификации в лог-файлы, настроенные в инфраструктуре Pax logging.
Подробнее: Настройка аудита безопасности
-
-
properties-jaas-login-module
-
Хранит данные пользователей в формате плоского файла. Пароли могут быть опционально зашифрованы алгоритмом хеширования.
-
Данные пользователей можно редактировать напрямую текстовым редактором или управлять с использованием консольных команд jaas:*.
-
Karaf по умолчанию использует этот модуль и хранит данные пользователей в файле /etc/users.properties.
-
Аутентифицирует учетные записи с использованием имени пользователя и пароля, возвращая список связанных с аутентифицированным пользователем ролей.
Подробнее: Настройка модуля karaf-properties
-
-
publickey-jaas-login-module
-
Реализует аутентификацию с использованием открытых ключей.
-
Ключи пользователей хранятся в системе.
-
Аутентификация осуществляется по предоставленному открытому ключу.
Подробнее: Настройка модуля karaf-publickey
-
-
resource-jaas-login-module
-
Аутентифицирует учетные записи с использованием имени пользователя и пароля, возвращая список связанных с аутентифицированным пользователем ролей.
-
По умолчанию данные пользователей хранятся в файле
entaxy-file-internal:.security/users.properties
-
Связь между пользователем и профилем в Entaxy
Для установки связи между пользователем и профилем в системе Entaxy используется обозначение вида PROFILE_<имя профиля>
.
Создание пользователя в Entaxy
При создании пользователя в Entaxy и его ассоциации с определенным профилем, пользователю автоматически присваивается роль с соответствующим обозначением.
Например:
В системе существует профиль с именем system1c
.
При создании пользователя, ассоциированного с этим профилем, ему будет автоматически присвоена роль PROFILE_system1c
.
Эта взаимосвязь между именем пользователя и профилем системы отображается в конфигурационном файле users.properties.
-
В модуле karaf.properties мы создали пользователя с именем
test
и привязали его к профилюsystem1c
.

-
В users.properties мы увидим запись вида:
test = test,PROFILE_system1c

Это означает, что пользователь test
связан с профилем system1c
через соответствующую роль PROFILE_system1c
.
Создание пользователя в LDAP-сервере
Аналогичным образом происходит связка пользователя в LDAP-сервере с профилем системы в Entaxy.
-
В LDAP-сервере создайте пользователя вида
PROFILE_<имя профиля>
и группу, в которую будет входить данный пользователь. -
Настройте LDAP модуль в Entaxy с учетом параметров LDAP-сервера.
-
Эта роль
PROFILE_<имя профиля>
будет использоваться для ассоциации пользователей с профилями в системе Entaxy. -
Если пользователь
PROFILE_<имя профиля>
не входит в группу, обеспечивающую необходимый доступ, то можно в настройках маппинга LDAP указать на нее маппинг, используя роль, обладающую соответствующими правами.
-
Создание и настройка LDAP/LDAPS модуля
Ниже приведены шаги по созданию и настройке LDAP(LDAPS)-модуля для интеграции с системой управления пользователями.
Этот модуль совместим с LDAP(LDAPS)-системами, такими как Active Directory и OpenLDAP.
В разделе "Безопасность", перейдите в подраздел "jaas", выберите необходимый реалм, и на вкладке "Properties" перейдите в раздел "modules".
В открывшейся вкладке выполните следующие шаги:
-
Нажмите на кнопку "Add Login Module".
-
В открывшемся окне добавьте LDAP модуль выбрав "ldap-jaas-login-module".
-
Нажмите кнопку "Next" для продолжения.
-
В открывшемся окне вы увидите перечень параметров:
-
General
-
Factory: Идентификатор фабрики для создания LDAP-модуля;
-
Display Name: Отображаемое имя модуля. Необязательное поле;
-
Classifier: Классификатор (по умолчанию 'main');
-
Options: Тип модуля (по умолчанию 'optional');
-
Use Detailed Login Exceptions: Предоставление подробных сведений об исключениях при входе в систему.
-
-
Connection
-
Connection Protocol: ldap/ldaps;
-
Connection Host:
-
LDAP: Адрес сервера управления пользователями;
-
LDAPS: Доменное имя сервера с использованием LDAPS;
-
-
Connection Port: Порт сервера управления пользователями;
-
Username: Имя учетной записи;
-
Password: Пароль учетной записи;
-
Module Authentication: Аутентификационный модуль (по умолчанию 'simple').
Примеры:
-
Active Directory (AD):
-
Connection Host: Адрес доменного контроллера AD;
-
Connection Port: Порт AD (обычно равен 389 для LDAP-соединений и 636 для LDAPS-соединений);
-
Username: Имя пользователя в формате user@domain.com;
-
Password: Пароль пользователя.
-
-
OpenLDAP:
-
Connection Host: Адрес сервера OpenLDAP;
-
Connection Port: Порт OpenLDAP (обычно равен 389 для LDAP-соединений и 636 для LDAPS-соединений);
-
Username: Имя пользователя, обычно в формате cn=user,ou=users,dc=example,dc=com;
-
Password: Пароль пользователя.
-
-
-
LookUp
-
User base DN: Путь к организационному подразделению, в котором находятся пользователи;
-
Role base DN: Путь к организационному подразделению, в котором находятся роли;
-
User filter: Пользовательский фильтр;
-
Role filter: Фильтр ролей;
-
Role mapping: Определение соответствия ролей. Роли (группы) LDAP маппятся на роли karaf (Формат: ldapRole1=karafRole1,karafRole2;ldapRole2=karafRole3,karafRole4.)
Примеры:
-
Active Directory (AD):
-
User base DN: OU=Users,DC=example,DC=com
-
Role base DN: OU=Roles,DC=example,DC=com
-
User filter: (sAMAccountName=%u)
-
Role filter: (member=%fqdn)
-
-
OpenLDAP:
-
User base DN: ou=Users,dc=example,dc=com
-
Role base DN: ou=Roles,dc=example,dc=com
-
User filter: (uid=%u)
-
Role filter: (roleOccupant=%fqdn)
-
-
-
SSL
Настройка SSL параметров. -
Others/Encryption/Jaspyt:
Дополнительные настройки, включающие фабрику контекста, обработку исключений, шифрование и использование Jasypt.
-
Подключение к LDAPS
-
Получите сертификат сервера LDAP (например, с Domain Controller AD).
-
Импортируйте сертификат на машину "entaxy" в хранилище сертификатов с использованием утилиты keytool:
keytool -import -trustcacerts -file <путь к сертификату> -alias <Алиас сертификата> -keystore <путь к хранилищу сертификатов>
Например:
keytool -import -trustcacerts -file ca_name.cer -alias selfsignedcert -keystore /opt/java11/jdk-pro-11.0.19/lib/security/cacerts
-
Включите протокол LDAPS в настройках модуля
ldap.jaas.login.module
.
Использование LDAP в SOAP/REST сервисах
-
Authorization Realm:
Задается при создании сервиса.
Определяет реалм авторизации для сервиса, связывая его с соответствующими настройками безопасности LDAP. -
Public Service Schema:
Параметр, который позволяет сервису предоставить публичный доступ к своей схеме данных. -
Restrict Access by Roles:
Чек-бокс, позволяющий ограничивать доступ к сервису на основе ролей. -
Roles Allowed to Access:
Поле для указания ролей которым разрешен доступ к сервису.
Возможные значения:-
'*' (все): Разрешен доступ для всех ролей.
-
Указание конкретных ролей: Доступ разрешен только для пользователей, обладающих перечисленными ролями. При указании нескольких ролей, они разделяются запятой.
Примеры:
-
Разрешен доступ для всех ролей:
-
Authorization Realm: "LDAPRealm"
-
Restrict Access by Roles: (чек-бокс не активирован)
-
Roles Allowed to Access: '*'
-
-
Разрешен доступ только для пользователей с ролью "admin":
-
-
Authorization Realm: "LDAPRealm"
-
Restrict Access by Roles: (чек-бокс активирован)
-
Roles Allowed to Access: "admin"
-
Настройка модуля karaf-properties
Модуль поддерживает создание пользователей, ролей и групп.
Данные пользователей можно редактировать напрямую текстовым редактором или управлять с использованием консольных команд jaas:*.
Karaf по умолчанию использует этот модуль и хранит данные пользователей в файле /etc/users.properties.

-
Создание пользователей (Users)
-
Add User: Добавление нового пользователя с указанием имени пользователя и пароля.
-
Users List: Список пользователей (предустановленные пользователи - karaf и entaxy).
-
-
Сведения о выбранном пользователе (User Details)
После создания профиля системы вы можете назначать пользователей, роли и группы, связанные с этим профилем.
-
Associated Profile: Выбор профиля для связи с выбранным пользователем.
-
Groups and Roles: Добавление групп и ролей.
Количество результатов поиска зависит от числа ролей и групп, присвоенных пользователю, при этом роли внутри групп не учитываются.
-
-
Управление группами/ролями (Group)
-
Create Group: При создании новой группы ей автоматически присваивается предустановленная роль 'group'.
-
Groups List: Список групп (предустановленная группа admingroup, включает роли: group, admin, manager, viewer, systembundles, ssh)
-
Group Actions: Добавление/удаление ролей для выбранной группы.
В модуле предусмотрена автоматическая очистка системы от неиспользуемых групп: если группа была откреплена от последнего пользователя, связанного с этой группой, происходит автоматическое удаление данной группы из системы.
-
Настройка модуля karaf-publickey
Модуль аутентификации karaf.publickey использует файл etc/users.properties в качестве хранилища информации о пользователях, группах, ролях и паролях.
В файле users.properties изначально указан один пользователь – karaf (с паролем karaf), но по умолчанию строка закомментирована.
Пользователь karaf является членом группы admingroup.
Группа всегда имеет префикс g:.
Без этого префикса запись является пользователем.
Группа определяет набор ролей по умолчанию - admingroup, group, admin и manager.
Это означает, что у пользователя karaf будут роли, определенные в группе admingroup.
На уровне SSH Karaf поддерживает аутентификацию по ключу, что позволяет войти в систему без ввода пароля.
Ключи, разрешенные для подключения, хранятся в файле etc/keys.properties в следующем формате:
user=key,role
.

Проверка аутентификации
-
Сгенерируйте публичный и приватный ключи для пользователя (putty-gen, ssh-keygen).
-
Создайте нового пользователя:
-
Используя UI.
Перейдите раздел Безопасность → jaas → karaf → modules → karaf.publickey. Откройте вкладку User Management, нажмите кнопку Add User. В открывшемся окне введите имя пользователя и в качестве пароля укажите сгенерированный публичный ключ (файл etc/keys.properties будет автоматически заполнен введенными данными).
-
ИЛИ используя конфигурационный файл keys.properties.
Создайте нового пользователя, указав его в файле etc/keys.properties, и вставьте публичный ключ (пользователь автоматически появится в UI в модуле karaf.publickey)test=[key],_g_:admingroup
Подключитесь к Karaf, указав ваш приватный ключ в параметрах подключения и убедитесь в успешной аутентификации.
-
Аутентификация по сертификату доступна также и для доступа к MQ Artemis, но не доступна для веб-консоли Entaxy. |