JAAS
Entaxy ION предоставляет современную и гибкую систему безопасности с использованием JAAS (Java Authentication and Authorization Service), который поддерживает управление несколькими реалмами.
Realms (реалмы)
Реалм включает в себя определение модулей входа, используемых для аутентификации и/или авторизации в этом реалме. Модули входа определяют аутентификацию и авторизацию для данного реалма.
Предустановленный 'realm karaf' по умолчанию включает в себя пять модулей:
-
karaf-properties
-
karaf-publickey
-
karaf-file-audit
-
karaf-log-audit
-
karaf-eventadminaudit
При каждой попытке входа пользователя процесс аутентификации проходит через эти модули в установленном порядке. У вас есть возможность изменять порядок этих модулей, перетаскивая соответствующие блоки.
Доступно удаление существующих или добавление дополнительных модулей безопасности.
Полный перечень доступных модулей безопасности.
По умолчанию реалм Karaf настроен на использование локальных файлов для хранения данных авторизации.
Для работы в кластере необходимо использовать распределенное хранилище, чтобы обеспечить синхронизацию данных между узлами.
Например, можно добавить логин-модуль resource-jaas-login-module .
В противном случае данные будут сохраняться только на одном узле, что может привести к несогласованности данных в кластере.
|
Создание реалма
Чтобы создать новый реалм, перейдите в раздел 'Безопасность' - '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. |