Настройка RBAC Proto Observability Platform
На этой странице:
Описание
В Proto Observability Platform реализована модель роллевого управления доступа (RBAC). Пользователи платформы деляться на роли со следующими правами:
| Действия | Администратор | Пользователь |
|---|---|---|
| Добавление пользователей | ✅ | ❌ |
| Удаление пользователей | ✅ | ❌ |
| Изменение роли пользователя | ✅ | ❌ |
| Изменение (сброс) пароля пользователя | ✅ | ❌ |
| Просмотр, чтение основных данных | ✅ | ✅ |
| Создание кастомных дашбордов | ✅ | ❌ |
| Редактирование кастомных дашбордов | ✅ | ❌ |
| Удаление кастомных дашбордов | ✅ | ❌ |
Управление пользователями
Обновление
Начиная с версии 200, расширенное управление пользователями и ролями доступно в разделе Администрирование RBAC. Подробнее в руководстве по RBAC. Описанный ниже базовый функционал через раздел «Настройки» по-прежнему доступен.Добавление пользователя
- Зайдите в интерфейс Proto Observability Platform используя встроенную учетную запись администратора

- Перейдите в раздел “Настройки”

- Кликните на кнопку “+ Пользователь”

- Укажите данные пользователя, которого вы хотите добавить и кликните на кнопку “Добавить”. По указанному E-mail будет отправлено приглашение для входа в платформу.
Управление правами пользователя
- Перейдите в раздел “Настройки”

- В столбце “Операции” кликните на значок “карандаш” в строке пользователя, чью роль вы хотите изменить.

Сброс пароля пользователя
- Перейдите в раздел “Настройки”

- В столбце “Операции” кликните на значок “…” в строке пользователя, чей пароль вы хотите сбросить.

- Укажите временный пароль пользователя, который будет изменен при первом входе в платформу.
Настройка SMTP
Данный шаг является опциональным на этапе пилотного тестирования – можно просто создать нужных пользователей через веб-интерфейс и сменить им пароль.
Для отправки email приглашений новым пользователям используется подключение к SMTP серверу.
На Proto Backend сервере в каталоге с docker-compose.yaml файлом в .env файле укажите следующее:
SMTP_HOST=smtp.my_company.net
SMTP_PORT=587
SMTP_AUTH=true
SMTP_USER=user
SMTP_PASSWORD=password
SMTP_FROM=protoobp@proto.group
SMTP_SSL=false
SMTP_STARTTLS=false
Где:
SMTP_HOST- адрес SMTP сервераSMTP_PORT- порт SMTP сервераSMTP_AUTH- использовать логи и пароль для авторизации на SMTP сервер (true|false)SMTP_USER- логин пользователя SMTP сервераSMTP_PASSWORD- пароль пользователя SMTP сервераSMTP_FROM- email адрес с которого будут приходить письма от Proto Observability PlatformSMTP_SSL- использовать SSL для подключения к SMTP серверу (true|false)SMTP_STARTTLS- использовать TLS для подключения к SMTP серверу (true|false)
Настройка Single Sign On (SSO)
Proto Observability Platform поддерживает Single Sign On (SSO) для прозрачной аутентификации пользователей через вненшие системы – провайдеров SSO или провайдеров учетных записей.
На данный момент поддерживаются следующие провайдеры SSO:
- LDAP каталоги (Active Directory, Open LDAP, Red Hat Directory и другие)
- SSO по протоколу Open ID Connect (OIDC):
- Keycloak
- IdentityServer4
Поддержка других OIDC или SAML v.2.0 совместимых систем может быть добавлена по запросу.
Обратите внимание
Перед изменением типа аутентификации, например, со встроенной на LDAP, необхоимо выполнить:
docker compose -f docker-compose-<version>.yaml stop proto-auth proto-postgresql proto-nginx
docker compose -f docker-compose-<version>.yaml rm proto-auth proto-postgresql proto-nginx
docker volume rm protoobp_postgres_data
Доверенные TLS сертификаты для внешних систем
Эта настройка актуальна для всех сценариев, где proto-auth обращается к внешним системам по TLS:
- OIDC через Keycloak/IdentityServer4 (
https://...) - LDAP при использовании LDAPS (
ldaps://...) или StartTLS - SMTP при использовании TLS/SSL
Если в логах proto-auth появляется ошибка вида:
SSLHandshakeException / PKIX path building failed / unable to find valid certification path to requested target
это означает, что контейнер proto-auth не доверяет сертификату удаленного сервера (или его CA-цепочке).
Для решения:
- Создайте каталог
truststoresрядом сdocker-compose-<version>.yaml. - Добавьте в него сертификаты УЦ внешних систем (root/intermediate) в формате
.pem(или.p12/.pfx/.pkcs12). - У сервиса
proto-authдобавьте:
proto-auth:
environment:
...
KC_TRUSTSTORE_PATHS: /opt/keycloak/conf/truststores
KC_TLS_HOSTNAME_VERIFIER: DEFAULT
volumes:
...
- ./truststores:/opt/keycloak/conf/truststores:ro
Рекомендации:
- Добавляйте сертификаты УЦ (root/intermediate), а не только leaf-сертификат сервера.
- Для production используйте
KC_TLS_HOSTNAME_VERIFIER=DEFAULT. - Значение
ANYдопустимо только для кратковременной диагностики. - Для LDAP secure-соединений проверка hostname должна быть корректной на стороне сертификата LDAP сервера.
Подготовка провайдера SSO
-
В вашем LDAP каталоге cоздайте необходимые группы:
proto_obp_admin- группа пользователей, которые будут обладать правами “Администратор” в Proto OBPproto_obp_user- группа пользователей, которые будут обладать правами “Пользователь” в Proto OBP
Необходимо создать в LDAP группы именно с такими именами, как указано выше. Расположение групп в каталоге может быть произвольным.
-
Добавьте необходимых пользователей в соответствующие группы.
Создайте группы, на основании членства в которых будет производится отнесение пользователей в группы “пользователей” или “администраторов” в Proto Observability Platform. Добавьте пользователей в соответствующие группы.
Создайте роли, на основании членства в которых будет производится отнесение пользователей в группы “пользователей” или “администраторов” в Proto Observability Platform. Назначьте соответствующие роли пользователям.
Изменения в файле .env
На Proto Backend сервере в каталоге с docker-compose.yaml файлом в .env файле укажите используемый тип провайдера SSO:
AUTH_TYPE=LDAP
AUTH_TYPE=OIDC
AUTH_TYPE=OIDC-IS4
Изменения в файле настроек SSO
На Proto Backend сервере в каталоге с docker-compose-<version>.yaml создайте или измените файл с настройками SSO для выбранного провайдера:
.env_ldap:
# Тип LDAP-каталога ( `ad` — Active Directory | `rhds` — Red Hat Directory Server / FreeIPA | `edir` — Novell eDirectory | `tivoli` — IBM Tivoli | `other` — прочие)
LDAP_VENDOR="ad"
# URL адрес LDAP сервера ( `ldap://...` — обычное соединение или StartTLS; `ldaps://...` — TLS-туннель на порту 636 )
LDAP_CONNECTION_URL="ldap://ldap.my_company.net"
# Использовать StartTLS для подключения к LDAP серверу ( `true` | `false` ). Несовместимо с `ldaps://`
LDAP_START_TLS="false"
# Тип авторизации в LDAP ( `simple` — по логину и паролю | `none` — анонимное подключение )
LDAP_AUTH_TYPE="simple"
# Учетная запись для авторизации в LDAP (не требуется при `LDAP_AUTH_TYPE="none"`)
LDAP_BIND_DN="uid=admin,cn=users,cn=accounts,dc=my,dc=company"
# Пароль учетной записи для авторизации в LDAP (не требуется при `LDAP_AUTH_TYPE="none"`)
LDAP_BIND_PASSWORD="secret"
# Полный DN расположения пользователей
LDAP_USERS_DN="cn=users,cn=accounts,dc=my,dc=company"
# Глубина поиска пользователей и групп ( `1` — только указанный уровень | `2` — указанный уровень и все поддерево )
LDAP_SEARCH_SCOPE="2"
# Дополнительный фильтр для поиска пользователей, входящих в группы `proto_obp_admin` и `proto_obp_user`
LDAP_USER_SEARCH_FILTER=(|(memberOf=cn=proto_obp_user,cn=groups,cn=accounts,dc=my,dc=company)(memberOf=cn=proto_obp_admin,cn=groups,cn=accounts,dc=my,dc=company))
# Название атрибута пользователя, содержащего уникальный идентификатор (UUID). Типовые значения: `objectGUID` — для AD; `ipauniqueid` — для FreeIPA; `entryUUID` — для OpenLDAP
LDAP_UUID_ATTRIBUTE="ipauniqueid"
# Название атрибута пользователя, содержащего логин. Типовые значения: `sAMAccountName` — для AD; `uid` — для OpenLDAP / FreeIPA
LDAP_USERNAME_ATTRIBUTE="sAMAccountName"
# Список objectClass'ов пользователей через запятую. Типовые значения: `person,organizationalPerson,user` — для AD; `inetOrgPerson,organizationalPerson` — для OpenLDAP / FreeIPA
LDAP_USER_OBJECT="person,organizationalPerson,user"
# Атрибут, используемый в качестве RDN пользователя. Типовые значения: `cn` — для AD; `uid` — для OpenLDAP / FreeIPA
LDAP_RDN_ATTRIBUTE="cn"
# Полный DN расположения групп пользователей
LDAP_GROUPS_DN="cn=groups,cn=accounts,dc=my,dc=company"
# Дополнительный фильтр для исключения всех групп, кроме `proto_obp_admin` и `proto_obp_user`
LDAP_GROUPS_FILTER="(&(objectclass=group)(|(cn=proto_obp_user)(cn=proto_obp_admin)))"
# objectClass группы. Типовые значения: `group` — для AD; `groupOfNames` или `groupOfUniqueNames` — для OpenLDAP / FreeIPA
LDAP_GROUP_OBJECT="group"
# Атрибут группы, содержащий идентификаторы её участников. Типовые значения: `member` — для AD и большинства OpenLDAP-схем; `memberUid` — для `posixGroup`
LDAP_MEMBER_ATTRIBUTE="member"
# Стратегия получения групп пользователя:
# `LOAD_GROUPS_BY_MEMBER_ATTRIBUTE` — через атрибут группы `LDAP_MEMBER_ATTRIBUTE` (универсальный вариант, работает везде)
# `GET_GROUPS_FROM_USER_MEMBEROF_ATTRIBUTE` — через атрибут пользователя `memberOf` (быстрее, подходит для AD и серверов с поддержкой `memberOf`-overlay)
LDAP_GROUPS_STRATEGY="LOAD_GROUPS_BY_MEMBER_ATTRIBUTE"
Важно
<p><code>ldaps://</code> и <code>LDAP_START_TLS="true"</code> — <strong>взаимоисключающие</strong> настройки. Не используйте их одновременно.</p>
ldaps://— открывает TLS-туннель сразу на порту 636 (implicit TLS).LDAP_START_TLS="true"— говорит Keycloak отправить команду StartTLS поверх plain-соединения (обычно порт 389) для повышения до TLS.
Если указать ldaps:// и одновременно LDAP_START_TLS="true", будет попытка выполнить StartTLS внутри уже установленного TLS-туннеля, что приведёт к ошибке подключения.
.env_oidc:
# имя подключения отображаемое на странице входа в интерфейс Proto Observability Plaftorm
OIDC_NAME=my_oidc
# URL адрес Keycloak сервера
KEYCLOAK_URL=http://oidc_url:86
# используемый realm
KEYCLOAK_REALM=my_realm
# путь до auth (для старых инсталляций Keycloak), по умолчанию пустой
# KEYCLOAK_AUTH_PATH=/auth
# ID клиента Keyloack
KEYCLOAK_CLIENT_ID=my_cliend
# secret клиента Keycloak
KEYCLOAK_CLIENT_SECRET=cliend_secret
# ClientScope возвращающий имя группы
KEYCLOAK_GROUP_USER_KEY=userGroups
# имя группы с правами "пользователь"
KEYCLOAK_GROUP_USER_VALUE=user
# ClientScope возвращающий имя группы
KEYCLOAK_GROUP_ADMIN_KEY=userGroups
# имя группы правами "администратор"
KEYCLOAK_GROUP_ADMIN_VALUE=admin
.env_oidc_is4:
# имя SSO подключения, отображаемое на странице входа в интерфейс Proto Observability Plaftorm
OIDC_NAME=is4-dev
# адрес - основной URL IS4 сервера
IS4_BASE_URL=https://identity-server-is4.test.local
# ID клиента - должно быть указано на стороне IS4
IS4_CLIENT_ID=proto_obp
# секрет клиента - должен быть указан на стороне IS4
IS4_CLIENT_SECRET=some-strong-secret
# ClientScope возвращающий имя группы или роли - должно быть настроено на стороне IS4
IS4_GROUP_USER_KEY=role
# имя роли или группы пользователей - должно быть настроено на стороне IS4
IS4_GROUP_USER_VALUE=proto_obp_user
# ClientScope возвращающий имя группы или роли - должно быть настроено на стороне IS4
IS4_GROUP_ADMIN_KEY=role
# имя роли или группы администраторов - должно быть настроено на стороне IS4
IS4_GROUP_ADMIN_VALUE=proto_obp_admin
Изменения в файле docker-compose-<version>.yaml
В файле docker-compose-<version>.yaml у сервиса proto-auth добавьте volume с файлом настроек выбранного провайдера SSO:
proto-auth:
volumes:
...
- ./.env_ldap:/usr/share/java/keycloak/.env_ldap
proto-auth:
volumes:
...
- ./.env_oidc:/usr/share/java/keycloak/.env_oidc
proto-auth:
volumes:
...
- ./.env_oidc_is4:/usr/share/java/keycloak/.env_oidc_is4
Запуск компонентов
docker compose -f docker-compose-<version>.yaml up -d