Indeed Core Server
Indeed Core Server (Core Server) — это основной модуль системы, который отвечает за:
- централизованное хранение аутентификаторов, паролей и настроек пользователей;
- централизованное управление и администрирование;
- централизованный прием и обработку запросов от других модулей системы;
- координирование действий отдельных модулей и системы в целом.
Core Server кеширует данные при получении пользователя, группы, контейнера, сценариев авторизации и бизнес логики. Основные запросы в каталог — получение пользователя, группы, контейнера по ID — отдаются из кеша. Все остальные запросы — по имени, по телефону, email — только обновляют кеш данными из каталога. Первый запрос пользователя по ID также обновляет кеш, последующие берутся из кеша. Время жизни объекта в кеше — 10 минут.
Установка Core Server
Отдельно устанавливать Core Server не нужно. Компонент устанавливается автоматически при распаковке архива am-<номер версии>.tar.gz.
Для корректной работы компонента Core Server необходимо выполнить следующие шаги:
- Отредактируйте конфигурационный файл Core Server.
- Запустите контейнер с приложением.
- Настройте начальную аутентификацию.
- При необходимости задайте опциональные настройки.
Редактирование конфигурационного файла
Для настройки Core Server внесите изменения в конфигурационный файл am/core/app-settings.json.
Измените только параметры со значениями вида !!! комментарий !!!.
В блоке
Behaviorдля параметраAdministrationв строкеRootAdministratorукажите имя привилегированного пользователя.ПримечаниеПользователь, заданный в этом параметре, автоматически получит права первичного администратора при первой аутентификации в Management Console.
- Active Directory
- FreeIPA
Укажите имя привилегированного пользователя в формате UserId_GUID.
Где:
UserId— произвольный уникальный идентификатор каталога (параметрId). Идентификатор может состоять только из букв и цифр, спецсимволы не поддерживаются.GUID— уникальный идентификатор пользователя из Active Directory.
Получить GUID можно с помощью команды на контроллере домена:
Get-ADUser -Filter 'Name -like "<User logon name>"' | FT Name,ObjectGUID -A
Укажите имя привилегированного пользователя в формате UserId_entryUUID.
Где:
entryUUID — уникальный идентификатор пользователя из FreeIPA.
Получить entryUUID можно с помощью команды на контроллере домена:
ldapsearch -x -D "uid=admin-indeed,cn=users,cn=accounts,dc=test,dc=local" -W -b "cn=users,cn=accounts,dc=test,dc=local" "uid=admin-indeed" entryUUID
- Задайте каталог конечных пользователей, для этого измените следующие строки в параметре `UserCatalog`.
- Active Directory
- FreeIPA
Пример настройки каталога
"Administration": {
"RootAdministrator": "UserId_15511150-6804-4bf2-ac7c-b8a8520ea357"
}
},
"UserCatalog": {
"RootProvider": "UserId",
"Providers": {
"Ldap": [
{
"Id": "UserId",
"Domain": "second.com",
"Port": 636,
"SecureSocketLayer": true,
"LdapServerType": "ActiveDirectory",
"ContainerPath": "CN=users,DC=second,DC=com",
"UserName": "admin@second.com",
"Password": "password"
}
]
},
RootProvider— идентификатор корневого пользовательского каталога. Также с помощью этого параметра вы можете объединить несколько каталогов через правилоOR.Id— произвольный уникальный идентификатор каталога. Если вы планируете использовать базу данных от версии Access Manager 8.2.x, идентификаторы каталога должны совпадать.Domain— имя домена или имя конкретного контроллера домена Active Directory, в котором находится каталог.Port— порт для соединения по протоколу LDAPS/LDAP, по умолчанию задано значение 636.
Не рекомендуется использовать незащищенное LDAP-соединение ("Port": 389, "SecureSocketLayer": false). При таком соединении ваши данные не защищены.
SecureSocketLayer— опция для включения или отключения SSL для защищенного соединения, по умолчанию указано значение true.LdapServerType— настройка определяет тип LDAP-сервера, задайте значениеActiveDirectory.ContainerPath— путь к контейнеру в виде Distinguished Name или весь домен, если для хранения пользователей используется весь домен.UserName— имя сервисной учетной записи для подключения к каталогу пользователей.Password— пароль сервисной учетной записи.
Не изменяйте настройки в параметре UserCatalog в секции SensitiveDataEncryption.
Пример настройки каталога
"Administration": {
"RootAdministrator": "UserId_15511150-6804-4bf2-ac7c-b8a8520ea357"
}
},
"UserCatalog": {
"RootProvider": "UserId",
"Providers": {
"Ldap": [
{
"Id": "UserId",
"Domain": "second.com",
"Port": 636,
"SecureSocketLayer": true,
"LdapServerType": "FreeIpa",
"ContainerPath": "cn=accounts,DC=second,DC=com",
"UserName": "uid=admin-indeed,cn=users,cn=accounts,dc=second,dc=com",
"Password": "password",
"CatalogFilter": "|(objectClass=person)(objectClass=ipausergroup)(entrydn=cn=users,cn=accounts,*)"
}
]
},
RootProvider— идентификатор корневого пользовательского каталога. Также с помощью этого параметра вы можете объединить несколько каталогов через правилоOR.Id— произвольный уникальный идентификатор каталога. Если вы планируете использовать базу данных от версии Access Manager 8.2.x, идентификаторы каталога должны совпадать.Domain— имя домена или имя конкретного контроллера домена FreeIPA, в котором находится каталог.Port— порт для соединения по протоколу LDAPS/LDAP, по умолчанию задано значение 636.SecureSocketLayer— опция для включения или отключения SSL для защищенного соединения, по умолчанию указано значение true.LdapServerType— настройка определяет тип LDAP-сервера, задайте значениеFreeIPA.ContainerPath— путь к контейнеру в виде Distinguished Name или весь домен, если для хранения пользователей используется весь домен.UserName— имя сервисной учетной записи в формате Distinguished Name.Password— пароль сервисной учетной записи.CatalogFilter— фильтр поиска пользователей в Management Console. Чтобы не отображать среди вариантов поиска системные контейнеры, задайте значение|(objectClass=person)(objectClass=ipausergroup).
В блоке
Storageв секцииSensitiveDataEncryptionпараметрыAlgorithmиKeyзаполняются автоматически при генерации ключа.Чтобы сгенерировать ключ, запустите скрипт am/tools/tool_encryption_db.sh. Для просмотра и выбора алгоритма, можно вывести справку.
sudo bash ./tool_encryption_db.sh --help
sudo bash ./tool_encryption_db.sh -a AesПримечаниеЕсли при обновлении вы используете базу данных от Access Manager 8.x, укажите значения
AlgorithmиKeyиз конфигурационного файла Core Server для Access Manager 8.x (C:\inetpub\wwwroot\am\core\Web.config, тегencryptionSettings). Таким образом вы избежите повторного шифрования базы данных.Укажите параметры базы данных.
- Microsoft SQL
- PostgreSQL
Измените следующие строки в блоке
Storageдля параметраProvider:Type— укажите тип используемой СУБД —Mssql.ConnectionString— укажите следующие данные:Data Source— IP-адрес сервера базы данных.Initial Catalog— имя базы данных.User ID— имя пользователя, который имеет полные права для базы данных.Password— пароль пользователя.TrustServerCertificate— доверие серверному сертификату. Убедитесь, что задано значениеTrueдля подключения Microsoft SQL к серверу.
Пример
"Provider": {
"Type": "Mssql",
"ConnectionString": "Data Source=[Db host address];Initial Catalog=[AM Db];User ID=[Db service account];Password=[Db service password];TrustServerCertificate=True;"
},
Измените следующие строки в блоке
Storageдля параметраProvider:Type— укажите тип используемой СУБД —PostgreSql.ConnectionString— укажите следующие данные:server— IP-адрес сервера базы данных.port— используемый порт. По умолчанию — 5432.user id— имя пользователя, который имеет полные права для базы данных.password— пароль пользователя.database— база данных, содержащая данные об Indeed Core Server.
Пример
"Provider": {
"Type": "PostgreSql",
"ConnectionString": "server=192.168.80.30;port=5432;user id=amservice;password=password;database=AMdebian2"
},
В параметре
Authenticationдля параметраSignполяpublicKeyиprivateKeyзаполняются автоматически при генерации публичного и секретного ключа для подписи токена пользователя.Чтобы сгенерировать публичный и секретный ключи, запустите скрипт am/tools/tool_keygen.sh:
sudo bash ./tool_keygen.shПример
"Authentication": {
"Token": {
"Sign": {
"privateKey": "значение секретного ключа",
"publicKey": "значение публичного ключа"
}
},
Запуск контейнера
Для создания и запуска контейнера выполните следующую команду:
sudo docker-compose up -d
Настройка начальной аутентификации
Для аутентификации рекомендуется использовать защищенное соединение по протоколу LDAPS с использованием 636 порта.
Для начальной аутентификации в Core Server и приложениях Management Console и User Console настройте провайдер Windows Password.
Чтобы настроить начальную аутентификацию, необходимо сформировать значение параметра StringValue в конфигурационном файле am/core/initial-settings.json:
Перейдите в каталог am/tools/initial_settings и откройте для редактирования файл initial_settings.json.
В поле
Filterукажите регулярное выражение.(Опционально) Если LDAPS-сертификат не позволяет устанавливать соединение по имени домена (не задано Дополнительное имя субъекта), в поле
FallbackHostукажите значение своего домена. При использовании параметраFallbackHostувеличивается нагрузка на данный контроллер домена.
Пример файла initial_settings.json
{
"Filter": "^domain1\\.com$",
"Port": 636,
"Secure": true,
"FallbackHost": "dc.domain1.com"
},
{
"Filter": ".*(\\.domain2.com)|(\\.domain3)$",
"Port": 389,
"Secure": false
},
{
"Filter": "^domain4\\.com$",
"Port": 636,
"Secure": true,
"FallbackHost": "dc.domain4.com"
}Сохраните файл initial_settings.json.
Перейдите в каталог am/tools/initial_settings и запустите скрипт tool_initial_settings.sh.
В результате выполнения скрипта в конфигурационном файле am/core/initial-settings.json записывается значение параметра StringValue.
Пример параметра StringValue
[{\u0022F\u0022:\u0022^domain\\\\.com$\u0022,\u0022P\u0022:636,\u0022S\u0022:true,\u0022FH\u0022:\u0022dc.domain.com\u0022}]
Включить/Отключить шифрование конфигурационного файла
- В терминале перейдите в каталог с утилитой для шифрования am/protection.
cd /am/protection - Выдайте права для запуска скрипта
protector.sh.sudo chmod 500 protector.sh - Чтобы зашифровать конфигурационные файлы, запустите скрипт
protector.shс параметромprotect.sudo bash ./protector.sh protect - Чтобы расшифровать конфигурационные файлы, запустите скрипт
protector.shс параметромunprotect.sudo bash ./protector.sh unprotect
Проверка состояния сервера
Чтобы проверить состояние сервера, в браузере введите адрес Core Server в формате https://<полное_dns_имя_сервера>/am/core.
Автоматически вы будете перенаправлены на https://<полное_dns_имя_сервера>/am/core/api/v6/healthCheck/index.
Страница обновляется автоматически каждые 60 секунд.
На странице доступна следующая информация о состоянии сервера:
- статус доступности каталога пользователей, время обработки запроса к нему;
- статус хранилища, время обработки запроса к нему;
- список установленных провайдеров аутентификации, их статус и время загрузки;
- статус компонента Indeed Log Server;Важно!
Чтобы не получать ошибки при проверке состояния, рекомендуется использовать версию Log Server 9.3 и выше.
- список ошибок при наличии.
В целях безопасности список установленных провайдеров аутентификации и информация об ошибках доступны, только если вы открыли страницу с локального адреса.
Пример результата проверки
User Catalog{
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:18:53.4937754+00:00",
"CheckDuration": "00:00:00.0088105"
}
Storage{
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:18:53.4947917+00:00",
"CheckDuration": "00:00:00.0033496"
}
Authentication Providers{
"PreviousCheckSucceeded": false,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:12:53.5523742+00:00",
"CheckDuration": "00:00:00.0089791"
}
LogServer{
"PreviousCheckSucceeded": false,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:12:53.5643188+00:00",
"CheckDuration": "00:00:00.0457894"
}
Сбор логов
Информация по включению логирования и сбору логов компонента Core Server находится в разделе Сбор логов серверных компонентов.