Перейти к содержанию

Аутентификация и управление доступом

Belt использует внешнего провайдера для входа пользователей и управления их ролями. По умолчанию используется Keycloak, но вместо него можно подключить корпоративный провайдер, совместимый с OpenID Connect (OIDC).

Провайдер должен поддерживать поток Authorization Code + PKCE, выдавать JWT Access Token и предоставлять публичные ключи проверки через JWKS. Учётные записи и пароли хранятся у провайдера, а не в Belt.

Роли Belt

Перед добавлением пользователей администратор должен создать у провайдера роли. Названия ролей указываются в нижнем регистре и должны передаваться в Access Token.

Роль Возможности
viewer Просмотр подключений, потоков, цепочек, мониторинга и других доступных объектов.
developer Просмотр, создание, изменение и удаление объектов, а также выполнение доступных рабочих операций.
deploy Выполнение процессов Deploy.

Роль developer уже включает возможность просмотра, поэтому назначать этому пользователю обе роли не требуется.

В текущей версии роли действуют на весь экземпляр Belt. Разделение прав по отдельным рабочим пространствам пока не используется.

Первоначальная настройка Keycloak

Настройку выполняет администратор Keycloak.

  1. Создайте отдельный realm для Belt или выберите существующий корпоративный realm.
  2. Создайте OIDC-клиент для frontend Belt.
  3. Включите для клиента Standard Flow и использование PKCE S256.
  4. Укажите разрешённые адреса перенаправления и Web Origins для адреса, по которому открывается Belt.
  5. Создайте роли viewer, developer и deploy.
  6. Убедитесь, что назначенные роли включаются в Access Token пользователя.
  7. Передайте параметры подключения к провайдеру администратору Belt: адрес issuer, идентификатор клиента и необходимые scopes.

Frontend Belt является публичным клиентом и не должен хранить Client Secret.

Создание пользователя

В Keycloak пользователь добавляется следующим образом:

  1. Откройте раздел Users выбранного realm и создайте пользователя.
  2. Укажите username, email, имя и фамилию.
  3. В разделе Credentials задайте пароль. Если пользователь не должен менять его при первом входе, отключите параметр Temporary.
  4. В разделе Role mapping назначьте одну из ролей Belt.
  5. Сообщите пользователю адрес Belt и его имя для входа.

Belt создаёт внутреннюю запись пользователя автоматически после первого успешного входа. Отдельно создавать пользователя в базе данных Belt не требуется.

Вход в Belt

  1. Откройте Belt в браузере.
  2. Приложение перенаправит вас на страницу корпоративного провайдера или Keycloak.
  3. Введите учётные данные.
  4. После успешного входа вы вернётесь в 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.

Конкретный способ создания клиента, пользователя и ролей зависит от выбранного провайдера.