Аутентификация и управление доступом
Belt использует внешнего провайдера для входа пользователей и управления их ролями. По умолчанию используется Keycloak, но вместо него можно подключить корпоративный провайдер, совместимый с OpenID Connect (OIDC).
Провайдер должен поддерживать поток Authorization Code + PKCE, выдавать JWT Access Token и предоставлять публичные ключи проверки через JWKS. Учётные записи и пароли хранятся у провайдера, а не в Belt.
Роли Belt
Перед добавлением пользователей администратор должен создать у провайдера роли. Названия ролей указываются в нижнем регистре и должны передаваться в Access Token.
| Роль | Возможности |
|---|---|
viewer |
Просмотр подключений, потоков, цепочек, мониторинга и других доступных объектов. |
developer |
Просмотр, создание, изменение и удаление объектов, а также выполнение доступных рабочих операций. |
deploy |
Выполнение процессов Deploy. |
Роль developer уже включает возможность просмотра, поэтому назначать этому пользователю обе роли не требуется.
В текущей версии роли действуют на весь экземпляр Belt. Разделение прав по отдельным рабочим пространствам пока не используется.
Первоначальная настройка Keycloak
Настройку выполняет администратор Keycloak.
- Создайте отдельный realm для Belt или выберите существующий корпоративный realm.
- Создайте OIDC-клиент для frontend Belt.
- Включите для клиента Standard Flow и использование PKCE S256.
- Укажите разрешённые адреса перенаправления и Web Origins для адреса, по которому открывается Belt.
- Создайте роли
viewer,developerиdeploy. - Убедитесь, что назначенные роли включаются в Access Token пользователя.
- Передайте параметры подключения к провайдеру администратору Belt: адрес issuer, идентификатор клиента и необходимые scopes.
Frontend Belt является публичным клиентом и не должен хранить Client Secret.
Создание пользователя
В Keycloak пользователь добавляется следующим образом:
- Откройте раздел Users выбранного realm и создайте пользователя.
- Укажите username, email, имя и фамилию.
- В разделе Credentials задайте пароль. Если пользователь не должен менять его при первом входе, отключите параметр Temporary.
- В разделе Role mapping назначьте одну из ролей Belt.
- Сообщите пользователю адрес Belt и его имя для входа.
Belt создаёт внутреннюю запись пользователя автоматически после первого успешного входа. Отдельно создавать пользователя в базе данных Belt не требуется.
Вход в Belt
- Откройте Belt в браузере.
- Приложение перенаправит вас на страницу корпоративного провайдера или Keycloak.
- Введите учётные данные.
- После успешного входа вы вернётесь в Belt и увидите функции, разрешённые назначенной ролью.
Если роль отсутствует или не передаётся в токене, пользователь сможет пройти аутентификацию у провайдера, но Belt не предоставит ему доступ к защищённым функциям.
При закрытии вкладки сессия Belt завершается. При обновлении страницы повторный ввод пароля обычно не требуется, пока активна сессия у провайдера.
Подключение другого провайдера
Вместо Keycloak можно использовать корпоративный Identity Provider, если он поддерживает:
- OpenID Connect;
- Authorization Code Flow с PKCE;
- JWT Access Token;
- публикацию ключей через JWKS;
- передачу ролей в токене.
В Belt необходимо указать issuer провайдера, идентификатор OIDC-клиента, scopes и параметры получения ролей из токена. Адрес Belt должен быть добавлен у провайдера в список разрешённых Redirect URI и Web Origins.
Конкретный способ создания клиента, пользователя и ролей зависит от выбранного провайдера.