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 находится в разделе Сбор логов серверных компонентов.