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
укажите имя привилегированного пользователя в форматеUserId_GUID
.Где:
UserId
— произвольный уникальный идентификатор каталога (параметрId
).GUID
— уникальный идентификатор пользователя из Active Directory.
Получить
GUID
можно с помощью команды на контроллере домена:Get-ADUser -Filter 'Name -like "<User logon name>"' | FT Name,ObjectGUID -A
Задайте каталог конечных пользователей, для этого измените следующие строки в параметре
UserCatalog
:RootProvider
— идентификатор корневого пользовательского каталога. Также с помощью этого параметра вы можете объединить несколько каталогов через правилоOR
.Пример настройки каталога
"Administration": {
"RootAdministrator": "UserId_15511150-6804-4bf2-ac7c-b8a8520ea357"
}
},
"UserCatalog": {
"RootProvider": "UserId",
"Providers": {
"Ldap": [
{
"Id": "UserId",
"Domain": "second.com",
"Port": 636,
"SecureSocketLayer": true,
"ContainerPath": "CN=users,DC=second,DC=com",
"UserName": "admin@second.com",
"Password": "Q1w2e3r4"
}
]
},Id
— произвольный уникальный идентификатор каталога. Если вы планируете использовать базу данных от версии Access Manager 8.2.x, идентификаторы каталога должны совпадать.Domain
— полное имя контроллера домена Active Directory, в котором находится каталог.Port
— порт для соединения по протоколу LDAPS/LDAP, по умолчанию задано значение 636.Важно!Не рекомендуется использовать незащищенное LDAP-соединение ("Port": 389, "SecureSocketLayer": false). При таком соединении ваши данные не защищены.
SecureSocketLayer
— опция для включения или отключения SSL для защищенного соединения, по умолчанию указано значение true.ContainerPath
— путь к контейнеру в виде Distinguished Name или весь домен, если для хранения пользователей используется весь домен.UserName
— имя сервисной учетной записи для подключения к каталогу пользователей.Password
— пароль сервисной учетной записи.Важно!Не изменяйте настройки в параметре
UserCatalog
в секцииSensitiveDataEncryption
.
В объекте
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
). Таким образом вы избежите повторного шифрования базы данных.Укажите параметры базы данных. Для этого измените следующие строки в объекте
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=Q1w2e3r4;database=AMdebian2"
},
В параметре
Authentication
для параметраSign
поляpublicKey
иprivateKey
заполняются автоматически при генерации публичного и секретного ключа для подписи токена пользователя.Чтобы сгенерировать публичный и секретный ключи, запустите скрипт am/tools/tool_keygen.sh:
sudo bash ./tool_keygen.sh
Пример
"Authentication": {
"Token": {
"Sign": {
"privateKey": "значение секретного ключа",
"publicKey": "значение публичного ключа"
}
},
Включить/Отключить шифрование конфигурационного файла
В терминале перейдите в каталог с утилитой для шифрования 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
Запуск контейнера
Для создания и запуска контейнера выполните следующую команду:
sudo docker-compose up -d
Получение первичных прав администратора
Перед настройкой первичных прав администратора необходимо выполнить настройку собственного клиентского сертификата.
Для получения первичных прав перейдите в каталог am/tools и запустите скрипт tool_set_admin.sh с параметрами. Все параметры (кроме справки -h
) являются обязательными.
Пример
sudo bash tool_set_admin.sh -u amadmin@test.local -n 2 -p userpassword -c mycert.pfx -s certpassword
Параметры:
-u <имя пользователя>
-n <формат имени пользователя>
Возможные значения:
- 2 - PrincipalName
- 3 - SamCompatibleName
- 4 - DistinguishedName
- 5 - Sid
-p <пароль пользователя>
-c <имя/путь client.pfx>
— собственный клиентский сертификат, созданный на этапе подготовки сертификатов.-s <пароль client.pfx>
— пароль от собственного клиентского сертификата.-h
— вызов справки.
При успешном выполнении скрипта пользователь будет добавлен как первичный администратор. После использования скрипт можно удалить.
В качестве пользователя в скрипте укажите того же пользователя, которого вы указываете в параметре RootAdministrator
конфигурационного файла Core Server app-settings.json.
Настройка начальной аутентификации
Для начальной аутентификации в Core Server и приложениях Management Console и User Console настройте провайдер Windows Password.
Для аутентификации рекомендуется использовать защищенное соединение по протоколу LDAPS с использованием 636 порта.
Чтобы настроить начальную аутентификацию, необходимо сформировать значение параметра StringValue
в конфигурационном файле am/core/initial-settings.json:
Перейдите в каталог am/tools/initial_settings и откройте для редактирования файл initial_settings.json.
В поле
Filter
укажите регулярное выражение.(Опционально) Если при создании LDAPS-сертификата не было задано Дополнительное имя субъекта, в поле
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}]
Проверка состояния сервера
Чтобы проверить состояние сервера, в браузере введите адрес Core Server в формате https://<полное_dns_имя_сервера>/am/core.
Автоматически вы будете перенаправлены на https://<полное_dns_имя_сервера>/am/core/api/v6/healthCheck/index.
Страница обновляется автоматически каждые 60 секунд.
На странице доступна следующая информация о состоянии сервера:
- статус доступности каталога пользователей, время обработки запроса к нему;
- статус хранилища, время обработки запроса к нему;
- список установленных провайдеров аутентификации, их статус и время загрузки;
- статус компонента Indeed Log Server;
- список ошибок при наличии.
В целях безопасности список установленных провайдеров аутентификации и информация об ошибках доступны только если вы открыли страницу с локального адреса.
Пример результата проверки
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 находится в разделе Сбор логов серверных компонентов.