Авторизация Keycloak
Astra Monitoring использует Keycloak в качестве основного средства аутентификации и авторизации пользователей. Это решение предоставляет:
Централизованное управление пользователями и ролями
Поддержку многофакторной аутентификации (MFA)
Интеграцию с внешними Identity Provider (LDAP, Active Directory, SAML 2.0)
Гибкую систему ролевой модели доступа
Установка по умолчанию
При развертывании системы Keycloak автоматически:
Устанавливается как часть Docker-комплекса
Настраивается с базовой конфигурацией
Создается административный пользователь с credentials, указанными при установке
Важно
После первой установки необходимо выполнить дополнительные настройки для обеспечения безопасности и корректной работы.
При обращении к URL AdminUI пользователь автоматически пробрасывается на сервис Keycloak, где он должен выполнить вход. В случае настроенной интеграции с каталогом пользователей LDAP, пользователь должен использовать свои персональные УЗ.

По умолчанию, в Платформе создаётся локальный (с точки зрения Keycloak) пользователь admin-internal с паролем, заданным при установке (через указание пароля admin_ui.password или через указание имени секрета admin_ui.secretName).
Для смены пароля в Keycloak:
Необходимо перейти по адресу в зависимости от типа установки:
kubernetes - http(s)://astra-monitoring.server/oidc/
docker-compose - http(s)://astra-monitoring.server:8081/
После открытия окна с Keycloak выбрать «Administration Console»
Ввести логин и пароль (по умолчанию admin:password)
Если необходимо сменить:
логин и пароль пользователя для входа в Keycloak, то выбрать в верхнем левом углу realm «master» → Перейти на вкладку «Users» → Кликнуть по «Username=admin» → Перейти на вкладку «Credentials» → Нажать «Reset password» → Далее сбросить пароль на новый → можно осуществлять вход в Keycloak по новому паролю
логин и пароль для входа в Admin UI, то выбрать в верхнем левом углу realm «astra-monitoring» → Перейти на вкладку «Users» → Кликнуть по «Username=admin-internal» → Перейти на вкладку «Credentials» → Нажать «Reset password» → Далее сбросить пароль на новый → можно осуществлять вход в Admin UI по новому паролю
Если необходимо создать:
новый логин и пароль пользователя для входа в Keycloak, то выбрать в верхнем левом углу realm «master» → Перейти на вкладку «Users» → Нажать «Add user» → Заполнить поле «Username» → Нажать кнопку «Create» → Перейти на вкладку «Credentials» → Нажать «Set password» → Создать пароль и сохранить его → Перейти на вкладку «Role mapping» → Нажать «Assign role» и выбрать «admin» и «default-roles-master» (можно выбрать те роли, которые необходимы) → можно осуществлять вход в Keycloak по новому логину и паролю
новый логин и пароль для входа в Admin UI, то выбрать в верхнем левом углу realm «astra-monitoring» → Перейти на вкладку «Users» → Нажать «Add user» → Заполнить поле «Username» → Нажать кнопку «Create» → Перейти на вкладку «Credentials» → Нажать «Set password» → Создать пароль и сохранить его → можно осуществлять вход в Admin UI по новому логину и паролю
Для увеличения времени действия сессии в Keycloak:
Перейти на адрес keycloak
Изменить параметры в разделе /admin/master/console/#/astra-monitoring/realm-settings/sessions:
SSO Session Idle (12 часов)
SSO Session Max (12 часов)
Изменить параметры в разделе admin/master/console/#/astra-monitoring/realm-settings/tokens:
Access Token Lifespan (12 часов)
Access Token Lifespan For Implicit Flow (12 часов)
Client Login Timeout (5 минут)


Настройка интеграции с LDAP
Интеграцию Keycloak с LDAP каталогом пользователей (ALD Pro, FreeIPA, MS AD) можно настроить двумя способами:
1. Настроить самостоятельно через интерфейс Keycloak, согласно официальной инструкции.
2. При установке Платформы
Добавить в файл keycloak/realm-astra-monitoring.json.tmpl секцию components, предварительно заполнив нужными параметрами.
"components": {
"org.keycloak.storage.UserStorageProvider": [
{
"id": "3e385a5b-86f0-4557-ae9f-554ab7e075f9",
"name": "ldap",
"providerId": "ldap",
"subComponents": {
"org.keycloak.storage.ldap.mappers.LDAPStorageMapper": [
{
"id": "b5585ad1-9d33-4dc5-8640-9c1d13300263",
"name": "creation date",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"whenCreated"
],
"is.mandatory.in.ldap": [
"false"
],
"always.read.value.from.ldap": [
"true"
],
"read.only": [
"true"
],
"user.model.attribute": [
"createTimestamp"
]
}
},
{
"id": "c6f67e38-875e-492c-a155-d201eb505d63",
"name": "username",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"uid"
],
"is.mandatory.in.ldap": [
"true"
],
"read.only": [
"true"
],
"always.read.value.from.ldap": [
"false"
],
"user.model.attribute": [
"username"
]
}
},
{
"id": "8014836c-575e-495a-87a1-242c4d2a7e15",
"name": "email",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"mail"
],
"is.mandatory.in.ldap": [
"false"
],
"always.read.value.from.ldap": [
"false"
],
"read.only": [
"true"
],
"user.model.attribute": [
"email"
]
}
},
{
"id": "8a42bf1c-fd91-4993-b484-0369456816c7",
"name": "modify date",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"whenChanged"
],
"is.mandatory.in.ldap": [
"false"
],
"always.read.value.from.ldap": [
"true"
],
"read.only": [
"true"
],
"user.model.attribute": [
"modifyTimestamp"
]
}
},
{
"id": "924f1c72-2e07-4a3b-b7bd-0e83dc5d95b7",
"name": "first name",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"cn"
],
"is.mandatory.in.ldap": [
"true"
],
"read.only": [
"true"
],
"always.read.value.from.ldap": [
"true"
],
"user.model.attribute": [
"firstName"
]
}
},
{
"id": "8fc95ee3-4e8d-47b5-9381-295aad0422ac",
"name": "last name",
"providerId": "user-attribute-ldap-mapper",
"subComponents": {},
"config": {
"ldap.attribute": [
"sn"
],
"is.mandatory.in.ldap": [
"true"
],
"read.only": [
"true"
],
"always.read.value.from.ldap": [
"true"
],
"user.model.attribute": [
"lastName"
]
}
},
{
"id": "84a1db56-33ca-430a-b6d3-a4cd689a67fd",
"name": "MSAD account controls",
"providerId": "msad-user-account-control-mapper",
"subComponents": {},
"config": {}
}
]
},
"config": {
"pagination": [
"false"
],
"fullSyncPeriod": [
"-1"
],
"startTls": [
"false"
],
"connectionPooling": [
"false"
],
"usersDn": [
"cn=users,cn=accounts,dc=example,dc=loc"
],
"cachePolicy": [
"DEFAULT"
],
"useKerberosForPasswordAuthentication": [
"false"
],
"importEnabled": [
"true"
],
"enabled": [
"true"
],
"changedSyncPeriod": [
"-1"
],
"usernameLDAPAttribute": [
"uid"
],
"bindCredential": [
""
],
"bindDn": [
""
],
"vendor": [
"ad"
],
"uuidLDAPAttribute": [
"uid"
],
"connectionUrl": [
""
],
"allowKerberosAuthentication": [
"false"
],
"syncRegistrations": [
"false"
],
"authType": [
"simple"
],
"krbPrincipalAttribute": [
"userPrincipalName"
],
"searchScope": [
"2"
],
"useTruststoreSpi": [
"always"
],
"usePasswordModifyExtendedOp": [
"false"
],
"trustEmail": [
"false"
],
"userObjectClasses": [
"inetOrgPerson, organizationalPerson"
],
"rdnLDAPAttribute": [
"uid"
],
"editMode": [
"READ_ONLY"
],
"validatePasswordPolicy": [
"false"
]
}
}
]
}
Для применения изменений необходимо удалить каталог keycloak/data/pgdata, где хранится стейт Keycloak.
Добавить параметры подключения в values.yaml
keycloak:
ldap:
connectionUrl: ldap://ipaserver:389
bindDn: "uid=integration,cn=users,cn=accounts,dc=example,dc=loc"
usersDn: "cn=users,cn=accounts,dc=example,dc=loc"
usernameLDAPAttribute: "uid"
Для применения изменений необходимо удалить deployments и pvc, относящиеся к keycloak.