Avanpost IDM Base представляет собой комплексное решение, состоящее из нескольких компонентов, которые взаимодействуют между собой для распределения задач и выполнения команд. Взаимодействие компонентов осуществляется внутри кластера, основанного на акторной модели Akka.NET.
Система содержит следующие компоненты:
- Сервис IGA:
- предоставляет API и веб-интерфейс для операционного и административного управления Системой;
- осуществляет обработку кадровых событий;
- генерирует события аудита, отчеты и аттестации;
- обеспечивает управление ходом бизнес-процессов, включая задачи, подзадачи и последовательность действий, построение дерева задач, регистрацию событий и другие функции, необходимые для автоматизации рабочих процессов;
- в рамках кластера AFlow выполняет роль мастера, координируя выполнение задач и управляя работой других компонентов.
- Сервис IDM:
- отвечает за коннекторы и запуск заданий планировщиков;
- выполняет фоновые процессы;
- осуществляет отправку событий аудита;
- обеспечивает функционирование ролевой модели управления доступом;
- управляет кадровой структурой: осуществляет запуск процессов кадровой синхронизации и обработку кадровых событий.
- Приложение IDM. Console:
- выполнение сервисных процедур и диагностики через интерфейс командной строки.
- БД IDM:
- хранение конфигурации IDM, информации о пользователях, их правах доступа; процессов и документов.
- Сервис коннекторов
обеспечивает абстрагирование компонентов Системы от коннекторов для сетевой изоляции:
позволяет развертывать коннекторы в окружении, отличном от основной инфраструктуры системы IDM.
Взаимодействие сервисов для распределения задач и выполнения команд производится через кластер, организованный на основе системы распределенных вычислений Akka.Net.
Для настройки кластера используются отдельные файлы конфигурации, расположение которых определяется переменной окружения "CLUSTER_CFG" или секции "cluster" внутри основного файла конфигурации.
Если запуск происходит на одном сервере необходимо, чтобы порты между системами не пересекались. Для работы кластера требуется как минимум две ноды с компонентами IGA и IDM.
Для корректной работы однонодовой конфигурации необходим кластер, объединяющий сервисы idm и iga для взаимодействия между ними.
Навигатор по разделу:
Примеры конфигурационных файлов для сервисов
Пример файла конфигурации кластера для сервиса 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
}
}
Пример файла конфигурации кластера для сервиса 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",
"scheduler",
"reports"
],
"MemberNodes": [
{
"Host": "127.0.0.1",
"Port": "1778"
},
{
"Host": "127.0.0.1",
"Port": "1779"
}
],
"StableAfter": 180,
"DownAfter": 600,
"MonitorCriticalRoles" : true
}
}
Описание параметров конфигурационных файлов
Корневые элементы конфигурации
| Параметр | Примеры значений | Пояснение |
|---|---|---|
host |
| Обозначение сетевого интерфейса |
| ||
PublicHost |
| Обозначение идентификатора, по которому к машине можно обратиться снаружи (если машина не может распознать сама себя по адресу в параметре "host"). Может быть задана через переменную окружения "IGA_CLUSTER_PUBLIC_HOST" |
Port | "1777" | Сетевой порт, на котором будет работать система |
TransportLogging | false | Включение логирования сетевого протокола akka |
true | ||
SslEnabled | false | Включение ssl |
true | ||
ssl | см. Настройка ssl | Настройка ssl-параметров при включенном параметре "SslEnabled" |
StableAfter | 180 | Задержка после запуска в течение которой ожидаются ноды кластера |
DownAfter | 600 | Задержка перед остановкой службы при выходе из кластера нод с критичными ролями (зависит от параметра MonitorCriticalRoles) |
| true | Проверка наличия в кластере обязательных ролей |
FailureDetector | см. FailureDetector | Настройка, отвечающая за детектирование недоступных нод кластера |
ClusterRoles | [ "iga", "iga_scheduler" ] | Подробнее cм. Распределение систем и ролей в кластере |
MemberNodes | см. MemberNodes | Набор всех нод или seed-нод для заданной системы |
Настройка ssl
| Параметр | Примеры значений | Пояснение |
|---|---|---|
|
| Валидация сертификата |
| ||
|
| Путь до сертификата |
|
| Пароль сертификата |
|
| Хранилище ключей. Доступные значения:
|
Распределение систем и ролей в кластере
| Роль | Компонент | Комментарий |
|---|---|---|
idm_scheduler | IDM | Запуск заданий планировщиков |
resources | IDM | Работа с ресурсами (коннекторы). Является обязательной, если включен параметр |
roles | IDM | Обработка задач изменения ролей |
hr | IDM | Работа с кадровыми ресурсами (коннекторы) |
security_events | IDM | Отправка событий аудита |
iga | IGA | Фронтенд |
iga_scheduler | IGA | Запуск заданий планировщиков |
aflow | IGA | Движок бизнес-процессов. Является обязательной, если включен параметр |
events | IGA | Обработка некоторых видов событий (кроме кадровых) |
reports | IGA | Генерация отчетов |
Примечание
Для любого компонента доступен алиас "all" — если одна нода будет делать всю работу, то вместе перечисления точечных ролей им можно задать сразу все
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 будет срабатывать, и тем больше будет ложных срабатываний. |
MemberNodes
Набор всех нод или seed-нод для заданной системы.
В случае использования seed-нод достаточно указать только первые ноды для каждой роли в этой системе.
[
{
"Host": "127.0.0.1",
"Port": "1777"
},
{
"Host": "127.0.0.1",
"Port": "1779"
}
]
Схема-пример однонодового развёртывания

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