2 Аутентификация при межкомпонентном взаимодействии

2.1 Аутентификация для пользователей веб-интерфейса "Спектра"

Для аутентификации и авторизации пользователей в ПО Скала^р Спектр используется внешние системы аутентификации и авторизации, совместимые с OpenID Connect.

Поддерживаемые системы аутентификации и авторизации:

  • Keycloak;

  • Avanpost FAM.

Учетные записи пользователей и их пароли настраиваются во внешней системе аутентификации и авторизации, за инструкциями можно обратиться к документации указанных продуктов.

Ролевая модель

Пользователи Спектра могут обладать ролями "Читатель" (spectrum-ro) либо "Писатель" (spectrum-rw). Пользователи с ролью "Читатель" могут войти в веб-интерфейс "Спектра", просматривать информацию об объектах управления и их статусе, но не могут выполнять никаких действий над объектами управления.

Пользователи с ролью "Писатель" могут войти в веб-интерфейс "Спектра", просматривать информацию об объектах управления и их статусе, а также выполнять любые действия над объектами управления, предусмотренные ПО Скала^р Спектр.

2.2 Настройка интеграции с KeyCloak

2.2.1 Настройка пользователей

Пользовательский интерфейс консоли администратора KeyCloak может отличаться от приведенного в данном руководстве.

Для работы со "Спектром" при включённой авторизации необходимо настроить пользователей в KeyCloak.

  1. Выбрать нужный Realm (рабочее пространство) в выпадающем списке над меню или создать новый (на скриншоте ниже выбрано значение "test-docs-realm"). После задания нужного Realm перейти в раздел "Клиенты" (Clients) и нажать кнопку Создать клиента (Create client):

image$keycloak web
  1. В поле "Client ID" нужно ввести идентификатор клиента и нажать кнопку "Далее" (Next). Заданный ID клиента будет в дальнейшем использоваться в параметрах конфигурации “Спектра”.

  2. На следующей странице:

    • включить переключатель "Аутентификация клиента" (Client authentication),

    • выставить флаг "Standart Flow",

    • выставить флаг "Direct access grants", и далее нажать кнопку "Сохранить" (Save).

      Эти параметры позднее можно изменить в настройках клиента.

  3. Перейти во вкладку "Настройки" (Settings), в поле "Валидация URI перенаправления" (Valid redirect URIs) добавить IP-адрес "Спектра" в формате:

    PROTO://IP:XXXX/*

    где:

    • PROTO — http или https, в зависимости от настроек SSL "Спектра" (см. п. 3.3);

    • IP — IP адрес "Спектра";

    • XXXX — порт "Спектра" для доступа к веб-интерфейсу.

      Нажать кнопку Сохранить (Save).

  4. Во вкладке "Учетные данные" (Credentials) есть поле "Секрет" (Client secret), значение которого будет в дальнейшем использоваться в параметрах конфигурации "Спектра". Значение можно скопировать в буфер обмена, нажав на соответствующую кнопку возле поля.

  5. Перейти во вкладку "Роли" (Roles), нажать кнопку Создать роль (Create role).

  6. На экране создания роли ввести имя роли и нажать кнопку Сохранить (Save). В примере, приведенном в данном руководстве, должны быть созданы две роли: "spectrum-ro" и "spectrum-rw".

  7. Перейти в пункт меню "Пользователи" (Users) и на странице "Пользователи" (User list) нажать кнопку Создать пользователя (Create new user).

  8. На экране создания пользователя:

    • ввести желаемое имя пользователя,

    • включить "E-mail подтвержден" (Email verified),

    • нажать кнопку Создать (Create).

      В примере, приведенном в данном руководстве, будет создано два пользователя: "sprtest" и "sprtest-rw".

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

  10. Перейти во вкладку "Учетные данные" (Credentials), нажать кнопку Установить пароль (Set password).

  11. В появившемся окне задать пароль, повторить пароль и выключить признак "Временный" (Temporary), если не требуется смена пароля пользователем при первом входе. Нажать кнопку Сохранить (Save).

  12. Перейти во вкладку "Сопоставление ролей" (Role mapping), нажать кнопку Назначить роль (Assign role).

  13. На экране назначения ролей:

    (1) в выпадающем списке фильтра выбрать "Отсортировать по клиентам" (Filter by client),

    (2) ввести полностью или частично имя необходимой роли / общей части имени ролей, созданной ранее,

    (3) выбрать роли для назначения данному пользователю, выставив соответствующие флаги,

    нажать кнопку Назначить (Assign).

    image$assign roles

    В примере, приведенном в данном руководстве, пользователю sprtest назначается роль spectrum-ro, а пользователю sprtest-rw — spectrum-ro и spectrum-rw.

  14. После настройки включить настроенный Realm, если этого не было сделано ранее. Для этого перейти в пункт меню "Настройки реалма" (Realm settings) и включить переключатель "Включен" (Enabled) в правом верхнем углу окна.

2.2.2 Настройка конфигурации

В файле конфигурации spectrum-api заполнить секцию аутентификации согласно примеру:

[auth]
auth_server=https://192.168.1.2:8080 # Адрес хоста, на котором расположен identy provider
realm=spectrum # Название realm, который был выбран в процессе настройки
client_id=spectrum-users # ID клиента, который был создан в процессе настройки
cert=/opt/skala-r/spectrum/certs/keycloak-chain.pem # Путь к файлу сертификата. Опциональный параметр
enabled=1 # Указать 1 для включения аутентификации, 0 для отключения

Также необходимо сохранить значение поля Client secret, полученное после создания клиента, в файл зашифрованного хранилища .vault_store.

Для этого выполнить следующие команды:

source /opt/skala-r/spectrum/python-modules/bin/activate
ansible-vault edit /opt/skala-r/spectrum/.vault_store

Далее необходимо ввести пароль хранилища, после чего будет открыт текстовый редактор.

Добавить следующую строчку, где secret — значение поля Client secret из KeyCloak:

client_secret: secret

и сохранить файл.

Пример файла .vault_store с зашифрованными секретами:

spectrum_db_pass: xx
password_db: x
client_secret: xxx
variable: value

После этого нужно перезапустить сервис API, введя команду:

systemctl restart spectrum-api

2.3 Настройка интеграции с Avanpost FAM

2.3.1 Настройка пользователей

Пользовательский интерфейс консоли администратора Avanpost может отличаться от приведенного в данном руководстве.

  1. Создать приложение — перейти во вкладку "Приложения" и нажать кнопку Добавить приложение.

  2. В окнах 1–3 выбрать / указать следующие данные:

    • Выбрать Open ID;

    • Указать secret;

    • Указать необходимые Redirect URLs (их можно будет изменить в дальнейшем);

    • В разделе "Allowed grant types" активировать пункты "Authorization code", "Refresh token".

    • В разделе "Scope" (default) указать "openid profile email permissions groups".

      В результате будет создано приложение, которое отобразится в списке на странице "Приложения". Пример настроенного приложения Spectrum, с возможностью запускать веб-приложение на localhost:

      image$customized spectrum app
  3. Нажать на имя приложения и перейти на вкладку "Модель доступа", где задать следующие параметры:

    • Код

    • Описание

    • Права.

      Нажать кнопку Сохранить.

  4. Перейти на вкладку "Сервис", в раздел "Настройка ролей и прав" и нажать кнопку + Добавить.

  5. Указать наименование и описание.

  6. Для создаваемой роли выбрать необходимые права.

  7. Создать группы для добавления пользователей: перейти на вкладку "Группы" и нажать кнопку Добавить группу.

  8. На вкладке "Приложения" указать приложение, для которого будет активна создаваемая группа.

  9. На вкладке "Роли" выбрать роли, которыми будут обладать пользователи, входящие в создаваемую группу.

  10. Создать пользователя: перейти на вкладку "Пользователи", нажать кнопку Добавить пользователя и указать следующие данные:

    • Логин

    • Фамилия

    • Имя

    • Адрес электронной почты

      Нажать кнопку Сохранить.

  11. Настроить пароль: перейти на вкладку "Пользователи" и нажать имя требуемого пользователя.

    Перейти на вкладку "Безопасность" и нажать ссылку "Задать новый пароль". Ввести новый пароль, подтверждение пароля и нажать кнопку Сохранить.

  12. Добавить пользователя в созданную группу: перейти на вкладку "Группы" и нажать на имя созданной группы.

    Отобразится вкладка "Пользователи" созданной группы.

    Нажать кнопку Добавить пользователей, выбрать в списке требуемого пользователя и нажать кнопку Сохранить.

  13. Проверка.

    Перейти во вкладки "Приложения" и "Группы и роли" и убедиться, что добавленный пользователь присутствует в созданных приложении и группе.

2.3.2 Настройка конфигурации

Шаги по настройке аналогичны шагам п. 2.2.2, за исключением содержания секции аутентификации в файле конфигурации spectrum-api:

[auth]
auth_server=http://192.168.1.3:8080 # Адрес хоста, на котором расположен identy provider
client_id=spectrum-users # ID клиента, который был создан в процессе настройки
enabled=1 # Указать 1 для включения аутентификации, 0 для отключения

В зашифрованном хранилище в поле client_secret нужно указать значение поля secret, совпадающее с заданным при создании приложения в Avanpost FAM.