2 Аутентификация при межкомпонентном взаимодействии
2.1 Аутентификация для пользователей веб-интерфейса "Спектра"
Для аутентификации и авторизации пользователей в ПО Скала^р Спектр используется внешние системы аутентификации и авторизации, совместимые с OpenID Connect.
Поддерживаемые системы аутентификации и авторизации:
-
Keycloak;
-
Avanpost FAM.
Учетные записи пользователей и их пароли настраиваются во внешней системе аутентификации и авторизации, за инструкциями можно обратиться к документации указанных продуктов.
Ролевая модель
Пользователи Спектра могут обладать ролями "Читатель" (spectrum-ro) либо "Писатель" (spectrum-rw). Пользователи с ролью "Читатель" могут войти в веб-интерфейс "Спектра", просматривать информацию об объектах управления и их статусе, но не могут выполнять никаких действий над объектами управления.
Пользователи с ролью "Писатель" могут войти в веб-интерфейс "Спектра", просматривать информацию об объектах управления и их статусе, а также выполнять любые действия над объектами управления, предусмотренные ПО Скала^р Спектр.
2.2 Настройка интеграции с KeyCloak
2.2.1 Настройка пользователей
|
Пользовательский интерфейс консоли администратора KeyCloak может отличаться от приведенного в данном руководстве. |
Для работы со "Спектром" при включённой авторизации необходимо настроить пользователей в KeyCloak.
-
Выбрать нужный Realm (рабочее пространство) в выпадающем списке над меню или создать новый (на скриншоте ниже выбрано значение "test-docs-realm"). После задания нужного Realm перейти в раздел "Клиенты" (Clients) и нажать кнопку Создать клиента (Create client):
-
В поле "Client ID" нужно ввести идентификатор клиента и нажать кнопку "Далее" (Next). Заданный ID клиента будет в дальнейшем использоваться в параметрах конфигурации “Спектра”.
-
На следующей странице:
-
включить переключатель "Аутентификация клиента" (Client authentication),
-
выставить флаг "Standart Flow",
-
выставить флаг "Direct access grants", и далее нажать кнопку "Сохранить" (Save).
Эти параметры позднее можно изменить в настройках клиента.
-
-
Перейти во вкладку "Настройки" (Settings), в поле "Валидация URI перенаправления" (Valid redirect URIs) добавить IP-адрес "Спектра" в формате:
PROTO://IP:XXXX/*где:
-
PROTO— http или https, в зависимости от настроек SSL "Спектра" (см. п. 3.3); -
IP— IP адрес "Спектра"; -
XXXX— порт "Спектра" для доступа к веб-интерфейсу.Нажать кнопку Сохранить (Save).
-
-
Во вкладке "Учетные данные" (Credentials) есть поле "Секрет" (Client secret), значение которого будет в дальнейшем использоваться в параметрах конфигурации "Спектра". Значение можно скопировать в буфер обмена, нажав на соответствующую кнопку возле поля.
-
Перейти во вкладку "Роли" (Roles), нажать кнопку Создать роль (Create role).
-
На экране создания роли ввести имя роли и нажать кнопку Сохранить (Save). В примере, приведенном в данном руководстве, должны быть созданы две роли: "spectrum-ro" и "spectrum-rw".
-
Перейти в пункт меню "Пользователи" (Users) и на странице "Пользователи" (User list) нажать кнопку Создать пользователя (Create new user).
-
На экране создания пользователя:
-
ввести желаемое имя пользователя,
-
включить "E-mail подтвержден" (Email verified),
-
нажать кнопку Создать (Create).
В примере, приведенном в данном руководстве, будет создано два пользователя: "sprtest" и "sprtest-rw".
-
-
Перейти в пункт меню "Пользователи" и выбрать созданного пользователя, нажав на его имя.
-
Перейти во вкладку "Учетные данные" (Credentials), нажать кнопку Установить пароль (Set password).
-
В появившемся окне задать пароль, повторить пароль и выключить признак "Временный" (Temporary), если не требуется смена пароля пользователем при первом входе. Нажать кнопку Сохранить (Save).
-
Перейти во вкладку "Сопоставление ролей" (Role mapping), нажать кнопку Назначить роль (Assign role).
-
На экране назначения ролей:
(1) в выпадающем списке фильтра выбрать "Отсортировать по клиентам" (Filter by client),
(2) ввести полностью или частично имя необходимой роли / общей части имени ролей, созданной ранее,
(3) выбрать роли для назначения данному пользователю, выставив соответствующие флаги,
нажать кнопку Назначить (Assign).
В примере, приведенном в данном руководстве, пользователю
sprtestназначается рольspectrum-ro, а пользователюsprtest-rw—spectrum-roиspectrum-rw. -
После настройки включить настроенный 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–3 выбрать / указать следующие данные:
-
Выбрать Open ID;
-
Указать secret;
-
Указать необходимые Redirect URLs (их можно будет изменить в дальнейшем);
-
В разделе "Allowed grant types" активировать пункты "Authorization code", "Refresh token".
-
В разделе "Scope" (default) указать "openid profile email permissions groups".
В результате будет создано приложение, которое отобразится в списке на странице "Приложения". Пример настроенного приложения Spectrum, с возможностью запускать веб-приложение на localhost:
-
-
Нажать на имя приложения и перейти на вкладку "Модель доступа", где задать следующие параметры:
-
Код
-
Описание
-
Права.
Нажать кнопку Сохранить.
-
-
Перейти на вкладку "Сервис", в раздел "Настройка ролей и прав" и нажать кнопку + Добавить.
-
Указать наименование и описание.
-
Для создаваемой роли выбрать необходимые права.
-
Создать группы для добавления пользователей: перейти на вкладку "Группы" и нажать кнопку Добавить группу.
-
На вкладке "Приложения" указать приложение, для которого будет активна создаваемая группа.
-
На вкладке "Роли" выбрать роли, которыми будут обладать пользователи, входящие в создаваемую группу.
-
Создать пользователя: перейти на вкладку "Пользователи", нажать кнопку Добавить пользователя и указать следующие данные:
-
Логин
-
Фамилия
-
Имя
-
Адрес электронной почты
Нажать кнопку Сохранить.
-
-
Настроить пароль: перейти на вкладку "Пользователи" и нажать имя требуемого пользователя.
Перейти на вкладку "Безопасность" и нажать ссылку "Задать новый пароль". Ввести новый пароль, подтверждение пароля и нажать кнопку Сохранить.
-
Добавить пользователя в созданную группу: перейти на вкладку "Группы" и нажать на имя созданной группы.
Отобразится вкладка "Пользователи" созданной группы.
Нажать кнопку Добавить пользователей, выбрать в списке требуемого пользователя и нажать кнопку Сохранить.
-
Проверка.
Перейти во вкладки "Приложения" и "Группы и роли" и убедиться, что добавленный пользователь присутствует в созданных приложении и группе.
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.