Avanpost IDM Base представляет собой комплексное решение, состоящее из нескольких компонентов, которые взаимодействуют между собой для распределения задач и выполнения команд. Взаимодействие компонентов осуществляется внутри кластера, основанного на акторной модели Akka.NET.
Система Avanpost IDM содержит следующие компоненты:
- Сервис IGA:
– предоставляет API и веб-интерфейс для операционного и административного управления Системой;
– осуществляет обработку кадровых событий;
– генерирует события аудита, отчеты и аттестации;
– обеспечивает управление ходом бизнес-процессов, включая задачи, подзадачи и последовательность действий, построение дерева задач, регистрацию событий и другие функции, необходимые для автоматизации рабочих процессов.
– в рамках кластера выполняет роль мастера, координируя выполнение задач и управляя работой других компонентов. - Сервис IDM:
– отвечает за коннекторы и запуск заданий планировщиков;
– выполняет фоновые процессы;
– осуществляет отправку событий аудита;
– обеспечивает функционирование ролевой модели управления доступом;
– управляет кадровой структурой: осуществляет запуск процессов кадровой синхронизации и обработку кадровых событий. - Приложение IDM. Console предназначено для выполнения сервисных процедур и диагностики через интерфейс командной строки.
- БД IDM, схемы которой хранят:
– конфигурацию IDM, информацию о пользователях и их правах доступа, включая историю;
– процессы и документы. - Сервис коннекторов предназначен для абстрагирования (сегментации) компонентов Системы от коннекторов с целью сетевой изоляции, развертывания коннекторов в окружении, отличном от основной инфраструктуры системы IDM.
Взаимодействие сервисов для распределения задач и выполнения команд производится через кластер, организованный на основе системы распределенных вычислений Akka.Net.
Для настройки кластера используются отдельные файлы конфигурации, расположение которых определяется переменной окружения "CLUSTER_CFG", или секции "cluster" внутри основного файла конфигурации.
Если запуск происходит на одном сервере , требуется чтобы порты между системами не пересекались. Для работы кластера требуется как минимум две ноды с компонентами IGA и IDM.
Для корректной работы однонодовой конфигурации так же необходим кластер, объединяющий сервисы idm и iga для взаимодействия между ними.
Навигатор по разделу:
- 1. Примеры конфигурационных файлов для сервисов
1. Примеры конфигурационных файлов для сервисов
1.1. Пример файла конфигурации кластера для сервиса idm:
{
"cluster": {
"host": "127.0.0.1",
"PublicHost": "Some.host.local",
"Port": "1778",
"TransportLogging": "false",
"SslEnabled": "false",
"ssl": {
"SuppressValidation": "true",
"CertificatePath": "somepath",
"CertificatePassword": "somepwd",
"CertificateFlags": [
"default-flag-set"
]
},
"ClusterRoles": [
"resources",
"roles",
"hr",
"scheduler",
"security_events"
],
"MemberNodes": [
{
"Host": "127.0.0.1",
"Port": "1778"
},
{
"Host": "127.0.0.1",
"Port": "1779"
}
],
"StableAfter": 180,
"DownAfter": 600,
"MonitorCriticalRoles" : true
}
}
1.2. Пример файла конфигурации кластера для сервиса iga:
{
"cluster": {
"host": "127.0.0.1",
"PublicHost": "Some.host.local",
"Port": "1779",
"TransportLogging": "false",
"SslEnabled": "false",
"ssl": {
"SuppressValidation": "true",
"CertificatePath": "somepath",
"CertificatePassword": "somepwd",
"CertificateFlags": [
"default-flag-set"
]
},
"FailureDetector":{
"HeartbeatInterval":"",
"Threshold":"",
"AcceptableHeartbeatPause":"",
"ExpectedResponseAfter":""
},
"ClusterRoles": [
"aflow",
"events",
"scheduller",
"reports"
],
"MemberNodes": [
{
"Host": "127.0.0.1",
"Port": "1778"
},
{
"Host": "127.0.0.1",
"Port": "1779"
}
],
"StableAfter": 180,
"DownAfter": 600,
"MonitorCriticalRoles" : true
}
}
2. Описание параметров конфигурационных файлов
2.1. Корневые элементы конфигурации
| Параметр | Примеры значений | Пояснение |
|---|---|---|
| host | 127.0.0.1 | Обозначение сетевого интерфейса |
10.10.120.5 | ||
| PublicHost | 10.10.120.5 | Обозначение идентификатора, по которому к машине можно обратиться снаружи (если машина не может распознать сама себя по адресу в параметре "host"). Может быть задана через переменную окружения "IGA_CLUSTER_PUBLIC_HOST" |
some.dns.name | ||
| Port | "1777" | Сетевой порт, на котором будет работать система |
| TransportLogging | false | Включение логгирования сетевого протокола akka |
| true | ||
| SslEnabled | false | Включение ssl |
| true | ||
| ssl | см. Настройка ssl | Настройка ssl-параметров при включенном параметре "SslEnabled" |
| StableAfter | 180 | Задержка после запуска в течение которой ожидаются ноды кластера |
| DownAfter | 600 | Задержка перед остановкой службы при выходе из кластера нод с критичными ролями (зависит от параметра MonitorCriticalRoles) |
MonitorCriticalRoles | true | Проверка наличия в кластере обязательных ролей |
| FailureDetector | см. FailureDetector | Настройка, отвечающая за детектирование недоступных нод кластера |
| ClusterRoles | [ "iga", "iga_scheduler" ] | Подробнее cм. Распределение систем и ролей в кластере |
| MemberNodes | см. MemberNodes | Набор всех нод или seed-нод для заданной системы |
2.2. Настройка ssl
| Параметр | Примеры значений | Пояснение |
|---|---|---|
SuppressValidation | true | Валидация сертификата |
false | ||
CertificatePath | /some/path/to/cert | Путь до сертификата |
CertificatePassword | pwd | Пароль сертификата |
CertificateFlags | ["default-key-set"] | Хранилище ключей. Доступные значения:
|
2.3. Распределение систем и ролей в кластере
| Роль | Компонент | Комментарий |
|---|---|---|
idm_scheduler | IDM | Запуск заданий планировщиков |
resources | IDM | Работа с ресурами (коннекторы). Является обязательной, если включен параметр MonitorCriticalRoles |
roles | IDM | Обработка задач изменения ролей |
hr | IDM | Работа с кадровыми ресурсами (коннекторы) |
security_events | IDM | Отправка событий аудита |
iga | IGA | Фронтенд |
iga_scheduler | IGA | Запуск заданий планировщиков |
aflow | IGA | Движок бизнес-процессов. Является обязательной, если включен параметр MonitorCriticalRoles |
events | IGA | Обработка некоторых видов событий (кроме кадровых) |
reports | IGA | Генерация отчетов |
Для любого компонента так же доступен алиас "all" - если одна нода будет делать всю работу то вместе перечисления точечных ролей им можно задать сразу все.
2.4. FailureDetector
Настройка, отвечающая за детектирование недоступных нод кластера. Данные параметры отдельно настраиваются под каждую инсталляцию и зависят от архитектуры проекта.
| Параметр | Пример | Пояснение |
|---|---|---|
| HeartbeatInterval | "12" | Интервал в секундах между Heartbeat-сообщениями. Если HeartbeatInterval >= (AcceptableHeartbeatPause/3)*2 , то в логе будут регулярно появляться Warning сообщения "Heartbeat interval is growing too large". |
| AcceptableHeartbeatPause | "21" | Количество потерянных или задержанных heartbeat-сообщений, после которого FailureDetector пометит ноду как потенциально упавшую. |
| ExpectedResponseAfter | "8" | Время в секундах, которое нода будет ждать ответ на посланное heartbeat-сообщение |
| Threshold | "12" | Порог срабатывания FailureDetector. Чем ниже порог, тем быстрее FailureDetector будет срабатывать, и тем больше будет ложных срабатываний. |
2.5. MemberNodes
Набор всех нод или seed-нод для заданной системы.
В случае использования seed-нод достаточно указать только первые ноды для каждой роли в данной системе.
[
{
"Host": "127.0.0.1",
"Port": "1777"
},
{
"Host": "127.0.0.1",
"Port": "1779"
}
]
3. Схема-пример однонодового развертывания

4. Схема-пример развертывания кластера в K8s "по ролям"
