FAM Avanpost

Это руководство описывает настройку сервиса аутентификации Геном на использование внешнего провайдера FAM Avanpost. Инструкция подготовлена на примере FAM Avanpost версии v1.13.6.458.

Для настройки FAM Avanpost необходимы привилегии администратора.

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

Для изменения настроек подсистемы мониторинга следуйте инструкции, соответствующей конфигурации развёртывания ядра мониторинга:

Для изменения значений секретов следуйте инструкции Управление секретами.

Обозначения

В этой инструкции приняты следующие обозначения:

  • <genome> — IP-адрес или доменное имя узла управления платформой;

  • <grafana> — IP-адрес или доменное имя узла, на котором развёрнута Grafana;

  • <monitoring> — IP-адрес или доменное имя узла управления подсистемой мониторинга.

Создание приложения

В FAM Avanpost выполните следующие действия:

  1. В главном меню нажмите на ссылку Приложения.

  2. Нажмите кнопку Добавить приложение.

  3. На этапе Основные настройки заполните форму:

    • Наименование: Геном.

    • Тип: OAuth/OpenID Connect.

  4. Нажмите кнопку Далее.

  5. На этапе Настройки интеграции заполните форму:

    • Secret: секрет, который Геном будет использовать для доступа к приложению. Сохраните значение в надёжном месте, оно понадобится далее.

    • Redirect URIs: список адресов, на которые FAM Avanpost может перенаправить пользователя при успешной аутентификации.

      Укажите URL Геном и подсистемы мониторинга:

      https://<genome>/after-auth https://<monitoring>/vision/api/v1/auth/login https://<grafana>/vision/api/v1/auth/login-grafana

      Если узел управления доступен по нескольким адресам, укажите их все, используя в качестве разделителя пробел, например:

      https://genome.example.com/after-auth https://192.168.0.1/after-auth https://192.168.0.11/vision/api/v1/auth/login https://192.168.0.12/vision/api/v1/auth/login-grafana

      При доступности приложений по доменному имени и IP-адресу укажите все возможные варианты.

    • Base URL: IP-адрес или доменное имя узла управления Геном, например:

      https://genome.example.com/
    • Logout: оставьте незаполненным.

  6. Нажмите кнопку Далее.

  7. При необходимости на этапе Настройка аутентификации измените шаги и способы аутентификации.

    По умолчанию FAM Avanpost использует настройки, позволяющие выполнить аутентификацию с использованием имени пользователя и пароля.
  8. Нажмите кнопку Далее.

  9. На этапе Завершение убедитесь что флаг Сделать приложение активным установлен и нажмите кнопку Сохранить. FAM Avanpost отобразит страницу созданного приложения.

  10. Выберите вкладку Настройки.

  11. В блоке Настройки интеграции:

    1. Запишите значение поля Client ID.

      Это идентификатор приложения на стороне FAM Avanpost. Он понадобится в дальнейшем.

    2. Нажмите кнопку редактирования и измените значения указанных полей:

      • Post logout redirect URIs: URL в следующем формате:

        https://<genome>/after-logout
      • Allowed grant types: переведите переключатели Authorization code, Password и Refresh token во включенное положение.

      • Access token type: JSON web token.

      • Ошибки аутентификации: снимите флаг Обрабатывать как ошибки протокола.

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

  12. Выберите вкладку Модель доступа.

  13. Нажмите кнопку + и заполните форму:

    • Код: идентификатор приложения на стороне FAM Avanpost.

    • Описание: Права доступа.

    • Права (Scopes): с помощью кнопки + создайте следующие права доступа:

      Таблица 1. Права доступа
      Код Описание

      bmc_access

      Подключение к BMC

      inventory

      Администрирование инвентаря

      obj_model

      Администрирование объектной модели

      role_model

      Администрирование информационной безопасности

      ssh_access_no_sudo

      Подключение по SSH без sudo

      ssh_access_sudo

      Подключение по SSH с sudo

      vsn_config

      Администрирование объектов мониторинга

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

Создание ролей

В FAM Avanpost создайте роли и свяжите с соответствующими правами.

Каждую создаваемую роль связывайте только с одним правом доступа!
Таблица 2. Сопоставление ролей и прав доступа
Наименование Описание Права доступа

bmc_access

Пользователь BMC

Подключение к BMC

inventory

Администратор инвентаря

Администрирование инвентаря

obj_model

Администратор объектной модели

Администрирование объектной модели

role_model

Администратор информационной безопасности

Администрирование информационной безопасности

ssh_access_no_sudo

Пользователь SSH без sudo

Подключение по SSH без sudo

ssh_access_sudo

Пользователь SSH с sudo

Подключение по SSH с sudo

vsn_config

Администратор объектов мониторинга

Администрирование объектов мониторинга

  1. В главном меню FAM Avanpost нажмите на ссылку Сервис.

  2. Нажмите на ссылку Настройки ролей и прав.

  3. Нажмите кнопку Добавить.

  4. Заполните форму в соответствии с таблицей Сопоставление ролей и прав доступа.

    Чтобы отфильтровать записи, введите название приложения Геном и нажмите Enter.
  5. Нажмите кнопку Сохранить.

Создание и назначение пользовательских ролей

Подсистема мониторинга позволяет создавать роли, дающие доступ только к определённым ресурсам. Такие роли называются пользовательскими. Для их корректной работы нужно выполнить настройки и на стороне подсистемы мониторинга, и на стороне FAM Avanpost.

Создание роли в подсистеме мониторинга

Чтобы создать пользовательскую роль:

  1. Авторизуйтесь в подсистеме мониторинга.

  2. На панели навигации выберите Безопасность  Ролевая модель.

  3. Нажмите кнопку Добавить роль.

  4. Укажите название роли и нажмите кнопку Сохранить. В таблице появится новая колонка с названием созданной роли.

  5. Поставьте флаги на пересечении колонки нужной роли со строками привилегий и нажмите кнопку Сохранить.

Создание роли в FAM Avanpost

Чтобы создать пользовательскую роль в FAM Avanpost и связать её с пользовательской ролью Геном:

  1. В главном меню FAM Avanpost нажмите на ссылку Приложения.

  2. Найдите приложение Геном и нажмите на ссылку с его названием.

  3. Выберите вкладку Модель доступа.

  4. В строке Права доступа нажмите на ссылку Изменить.

  5. Нажмите кнопку + и укажите параметры права:

    • Код: название пользовательской роли в Геном.

    • Описание: заполните произвольно.

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

  7. В главном меню нажмите на ссылку Сервис.

  8. Нажмите на ссылку Настройки ролей и прав.

  9. Нажмите кнопку Добавить и укажите параметры роли:

    • Наименование: название пользовательской роли в Геном.

    • Объекты доступа и права:

      1. Чтобы отфильтровать записи, введите название приложения Геном и нажмите Enter.

      2. На панели Права доступа выберите созданное ранее право.

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

Назначение роли пользователям и группам

Чтобы назначить роль пользователям или группам FAM Avanpost:

  1. В главном меню нажмите на ссылку Сервис.

  2. Нажмите на ссылку Настройки ролей и прав.

  3. Найдите нужную роль и нажмите на ссылку с её названием.

  4. Чтобы назначить роль отдельным пользователям:

    1. Выберите вкладку Пользователи и нажмите кнопку Добавить пользователей.

    2. Выберите нужных пользователей и нажмите кнопку Сохранить.

  5. Чтобы назначить роль группе пользователей:

    1. Выберите вкладку Группы и нажмите кнопку Добавить группы.

    2. Выберите нужные группы и нажмите кнопку Сохранить.

Создание групп

Создайте в FAM Avanpost группу Пользователи Геном и включите в неё всех пользователей Геном:

  1. На панели навигации нажмите Группы.

  2. Нажмите кнопку Добавить группу.

  3. Заполните форму следующим образом:

    • Наименование: Пользователи Геном.

    • Домен: оставьте незаполненным.

    • Описание: заполните произвольно.

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

  5. Во вкладке Пользователи нажмите кнопку Добавить пользователей.

  6. Выберите нужных пользователей и нажмите кнопку Сохранить.

  7. Во вкладке Приложения найдите приложение Геном и переведите переключатель Назначено во включенное положение.

Включение пользователей в группы

Включите пользователей в группы Пользователи Геном и lk-client:

  1. На панели навигации нажмите Группы.

  2. Найдите нужную группу и нажмите на ссылку с её названием.

  3. Во вкладке Пользователи нажмите кнопку Добавить пользователей.

  4. Выберите нужных пользователей и нажмите кнопку Сохранить.

  5. Во вкладке Приложения найдите запись Геном и переведите переключатель Назначено во включенное положение.

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

Настройка платформы

Настройте аутентификацию на стороне платформы:

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

  2. Внесите изменения в конфигурационный файл /opt/skala-r/platform-services/configs/auth-service.yml.

    • iam.auth_server: URL сервера FAM Avanpost, например, https://avanpost.example.com/.

    • iam.client_id: идентификатор приложения на стороне FAM Avanpost.

    • iam.client_secret: секрет клиента.

    • iam.provider: avanpost.

    • iam.realm: пустое значение.

    • iam.request_timeout: ограничение по времени на запрос к FAM Avanpost.

    • iam.tls_insecure_skip_verify: пропуск проверки TLS-сертификатов.

    • iam.token_introspection.enabled: состояние интроспекции (true — включена, false — выключена).

    • iam.token_introspection.interval: длительность интервала дополнительной интроспекции.

    • sync.admin_server: URL сервера FAM Avanpost.

    • sync.fetch_interval: периодичность выполнения синхронизации.

    • sync.tech_auth_client_id: идентификатор клиента, используемый для авторизации сервиса.

    • sync.tech_auth_client_secret: секрет клиента, применяемый для получения токена доступа.

    • sync.tech_auth_password: пароль учётной записи.

    • sync.tech_auth_username: название учётной записи, от имени которой выполняется синхронизация данных.

    Значения ключей iam.request_timeout, iam.token_introspection.interval и sync.fetch_inverval указывайте в виде строки, состоящей из числа и следующего за ним обозначения единицы времени. Например, 30s обозначает 30 секунд, а 2m — 2 минуты.

    Пример настройки
    ---
    # ...
    iam:
      provider: avanpost
      auth_server: "https://avanpost.example.com/"
      realm: ""
      client_id: "66c23fd0-589d-4ac2-b465-196dee4dd876"
      client_secret: "********"
      tls_insecure_skip_verify: true
      request_timeout: 5s
      token_introspection:
        enabled: true
        interval: 10m
    # ...
    sync:
      admin_server: "https://admin.avanpost.example.com"
      tech_auth_client_id: "52c2dfd2-0197-4bc2-d601-29fd0e49d832"
      tech_auth_client_secret: "********"
      tech_auth_username: "genome-tech-user"
      tech_auth_password: "********"
      fetch_interval: 1h
    # ...

Настройка подсистемы мониторинга

Измените значения следующих параметров:

  • auth.admin_server: URL сервера администрирования FAM Avanpost, например, https://admin.avanpost.example.com/.

  • auth.auth_server: URL сервера FAM Avanpost, например, https://avanpost.example.com/.

  • auth.auth_type: avanpost.

  • auth.client_id: идентификатор приложения на стороне FAM Avanpost.

  • auth.enabled: true.

  • auth.tls_insecure_skip_verify: пропуск проверки TLS-сертификата.

Не изменяйте значение параметра auth.client_secret! Вместо этого измените значение секрета vault.auth.client_secret!

Пример настройки
---
# ...
auth:
  enabled: true
  auth_type: avanpost
  auth_server: "https://avanpost.example.com/"
  admin_server: "https://admin.avanpost.example.com"
  client_id: "66c23fd0-589d-4ac2-b465-196dee4dd876"
  client_secret: vault.auth.client_secret
  tls_insecure_skip_verify: true
# ...

Настройка автоматической рассылки уведомлений

Рекомендуется настроить отдельное техническое приложение (клиент), которое будет использоваться для подключения к FAM Avanpost и получения списков пользователей и ролей.

Создание технического пользователя

Создайте пользователя FAM Avanpost, от имени которого будет выполняться рассылка уведомлений:

  1. На панели навигации нажмите на ссылку Пользователи.

  2. Нажмите кнопку Добавить пользователя.

  3. Заполните форму:

    • Логин: genome-tech-user.

    • Фамилия: Технический.

    • Имя: Пользователь Геном.

    • Электронная почта: укажите произвольный корректный адрес.

    • Отправить приветствие со ссылкой для смены пароля: снимите флаг. На форме появятся дополнительные поля.

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

    • Пользователь должен сменить пароль: снимите флаг.

    • Сделать пользователя активным: убедитесь, что флаг установлен.

    Прочие поля оставьте незаполненными.

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

Создание технического приложения

Создайте техническое приложение:

  1. На панели навигации нажмите на ссылку Приложения.

  2. Нажмите кнопку Добавить приложение.

  3. На этапе Основные настройки заполните форму:

    • Наименование: Геном: техническое приложение.

    • Тип: OAuth/OpenID Connect.

  4. Нажмите кнопку Далее.

  5. На этапе Настройки интеграции заполните форму:

    • Secret: секрет, который Геном будет использовать для доступа к техническому приложению. Сохраните значение в надёжном месте, оно понадобится далее.

    • Redirect URIs: заполните по образцу:

      Заполнение поля Redirect URIs
      https://<monitoring>/vision/*
      Это поле обязательно для заполнения, но фактически его значение не используется.

    Поля Base URL и Logout оставьте незаполненными.

  6. Нажмите кнопку Далее.

  7. На этапе Настройки аутентификации никаких изменений делать не нужно. Аутентификация технического приложения будет выполняться с использованием имени пользователя и пароля.

  8. Нажмите кнопку Далее.

  9. На этапе Завершение убедитесь, что флаг Сделать приложение активным установлен и нажмите кнопку Сохранить. FAM Avanpost отобразит страницу созданного приложения.

  10. Выберите вкладку Настройки.

  11. В блоке Настройки интеграции:

    1. Запишите значение поля Client ID.

      Это идентификатор технического приложения на стороне FAM Avanpost. Он понадобится в дальнейшем.

    2. Нажмите кнопку редактирования и измените значения указанных полей:

      • Allowed grant types: переведите переключатель Password во включенное положение, а все остальные — в выключенное.

      • Access token type: JSON web token.

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

Создание группы

Создайте и настройте техническую группу:

  1. На панели навигации нажмите на ссылку Группы.

  2. Нажмите кнопку Добавить группу.

  3. Заполните форму:

    • Наименование: Техническая группа Геном.

    • Домен: оставьте незаполненным.

    • Описание: заполните произвольно.

  4. Нажмите кнопку Сохранить. FAM Avanpost отобразит главную страницу группы.

  5. Во вкладке Пользователи нажмите кнопку Добавить пользователей.

  6. Выберите пользователя Технический пользователь Геном (genome-tech-user) и нажмите кнопку Сохранить.

  7. Во вкладке Приложения в строке с записью Геном: техническое приложение переведите переключатель Назначено во включенное положение.

Создание технической роли для чтения данных

С целью разграничения доступа создайте роль, разрешающую только чтение данных:

  1. На панели навигации нажмите на ссылку Сервис.

  2. Нажмите на ссылку Настройки ролей и прав.

  3. Нажмите кнопку Добавить.

  4. Заполните форму:

    • Наименование: genome_api.

    • Описание: заполните произвольно.

    • Объекты и права доступа: поставьте флаги Чтение в указанных разделах:

      • OAuth Scopes.

      • Пользователи.

      • Профиль пользователя.

      • Сессии.

      • Учетные записи.

      • Группы.

      • Приложения.

      • Роли и привилегии.

      • Токены пользователя.

  5. Нажмите кнопку Сохранить. FAM Avanpost отобразит список существующих ролей.

  6. В списке ролей нажмите на ссылку с ролью genome_api.

  7. Выберите вкладку Пользователи.

  8. Нажмите кнопку Добавить пользователей.

  9. Выберите технического пользователя genome-tech-user и нажмите кнопку Сохранить.

Настройка подсистемы мониторинга

В настройках подсистемы мониторинга измените значения указанных параметров:

  • iamsyncer.fetch_interval;

  • iamsyncer.tech_auth_client_id;

  • iamsyncer.tech_auth_username;

  • iamsyncer.user_update_enabled.

Пример заполнения
---
# ...
iamsyncer:
  tls_insecure_skip_verify: true
  request_timeout: 5
  systemd_service: vision_iamsyncer.service
  user_update_enabled: true
  tech_auth_client_id: "4fb8a11f-efdd-4adc-b685-f72d29d1141c"
  tech_auth_client_secret: vault.auth.tech_auth_client_secret
  tech_auth_username: "vision_api"
  tech_auth_password: vault.auth.tech_auth_password
  fetch_interval: 3600
# ...
  1. В хранилище секретов задайте значения параметров:

    • vault.auth.tech_auth_client_secret: секрет технического приложения;

    • vault.auth.tech_auth_password: пароль технического пользователя.

  2. Если подсистема мониторинга развёрнута на одном узле, примените изменения в конфигурации сервиса vision_iamsyncer одним из способов:

    • Вручную перезапустите службу vision_iamsyncer:

      systemctl restart vision_iamsyncer
    • Запустите скрипт /opt/skala-r/vision/tools/update_server_configs.sh.

      Этот способ рекомендуется в тех случаях, когда менялись ещё какие-либо фрагменты конфигурации для других компонентов.
  3. Для проверки работы сервиса vision_iamsyncer выполните команду:

    tail -f /opt/skala-r/var/log/vision/server/vision_iamsyncer/vision_iamsyncer.log

Допускается использование клиента подсистемы мониторинга в качестве технического клиента для запроса данных пользователей и ролей. В этом случае необходимо сконфигурировать его в соответствии с описанием, приведённым для технического приложения в данном разделе.