Общие сведения

В статье описывается настройка двухфакторной аутентификации (2FA), многофакторной аутентификации (MFA) и Single-Sign On (SSO) для Grafana посредством OpenID Connect-механизма системы Avanpost FAM. Функциональность доступна для веб-интерфейса Grafana.

Для Grafana, подключенного по OpenID Connect, с целью 2FA/MFA/SSO могут использоваться следующие факторы аутентификации:

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

Grafana поддерживает функциональность SSO (Signle Sign-On), обеспечиваемую протоколом OpenID Connect: если пользователь прошёл аутентификацию в веб-приложение в соответствии с настроенным сценарием, то система не будет запрашивать повторного подтверждения аутентификации при аутентификации в другое веб-приложение. Также обеспечивается реализация функциональности SLO (Single Logout)/Backchannel Logout в рамках протокола OpenID Connect.

Системные требования для интеграции Grafana с Avanpost FAM по протоколу OpenID Connect:

  • сервер Avanpost FAM 1.3.0 или выше;
  • сервер Grafana.

Для выполнения настройки 2FA/MFA/SSO для Grafana в соответствии с инструкцией необходимо выполнить следующие предварительные условия:

  1. Установить и развернуть в сети сервер Grafana;
  2. Установить и развернуть в сети компонент Avanpost FAM Server ;
  3. Обеспечить на стороне АРМ пользователя сетевую доступность сервера Grafana;
  4. Обеспечить на стороне АРМ пользователя сетевую доступность сервера Avanpost FAM Server;
  5. Обеспечить на стороне сервера Grafana сетевую доступность сервера Avanpost FAM Server.

При необходимости аутентификации:

  • Через мобильное приложение Avanpost Authenticator – установить компонент Avanpost FAM Mobile Authenticator Service ;
  • Через мобильное приложение SafeTech PayControl – установить сервер SafeTech PayControl;
  • Через SMS – настроить подключение к внешнему SMS-шлюзу, который предоставляет услугу доставки SMS-сообщений;
  • Через E-mail – настроить подключение к SMTP-шлюзу, который обеспечивает доставку почтовых сообщений;
  • Через Telegram – настроить подключение к Telegram Bot API;
  • Посредством электронной подписи – настроить криптопровайдер и установить плагин в браузер;
  • Посредством FIDO WebAuthn/U2F – настроить сертификат;
  • Посредством Kerberos – настроить keytab-файл;
  • Посредством Federation через ЕСИА настроить подключение к ЕСИА;
  • Посредством Federation через OpenID Connect-провайдер – настроить подключение к OpenID Connect-провайдеру;
  • Посредством Federation через SAML-провайдер – настроить подключение к SAML-провайдеру.

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

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

  • URL сервера Grafana со схемой протокола ( http:// или https:// ); например – « http://10.10.17.57 » ;
  • Имя информационной базы (dbname) на стороне сервера Grafana; например – « ZUP »;

Настройка аутентификации на стороне Avanpost FAM

На стороне Avanpost FAM в административной консоли:

  1. Создать новое приложение с типом OpenID Connect, при создании приложения указав:
    1. Secret – придумать значение секрета.
    2. Redirect URIs – указать адрес, состоящий из конкатенации через символ « / » URL сервера Grafana, имени информационной базы Grafana и строки « authform.html »; например - « http://10.10.17.57/ZUP/authform.html »;
    3. Base URL – указать значение, равное значению параметра Redirect URIs – например, « http://10.10.17.57/ZUP/authform.html »;
    4. Logout URL – оставить пустым.
  2. После создания приложения перейти в его карточке на вкладку «Настройки» и в режиме редактирования и внесите корректировки в следующие параметры:
    1. Публичный – включить чекбокс ;
    2. Allowed grant types – включить чекбоксы:
      1. « Authorization Code »,
      2. « Implicit »,
      3. « Refresh Token ».

Настройка на стороне Grafana

На стороне сервера Grafana:

  1. Перейти в каталог опубликованной базы 1С на веб-сервере IIS, отредактировать файл default.vrd:
    1. Добавить секцию с настройками подключения к Avanpost FAM по OpenID Connect на основе примера из Приложения А текущей инструкции.
    2. Для параметров:
      • name – указать произвольное уникальное имя;
      • title – указать проивольную надпись, которая будет отображаться пользователям в процессе аутентификации;
    3. Для всех параметров в секции providerconfig необходимо скопировать из Discovery-документа Avanpost FAM, доступного по пути .well-known/openid-configuration , за исключением authorization_endpoint – к значению параметра из Discovery следует добавить « ?response_mode=query ».
    4. Для секции clientconfig
      • authority – URL системы аутентификации Avanpost FAM;
      • client_id значение Client ID из секции «Настройки» приложения, созданного на предыдущем шаге.
      • redirect_uri – значение Redirect URIs из секции «Настройки» приложения, созданного на предыдущем шаге.
      • scope – значение « openid profile email »;
      • response_type – значение « id_token token »;
      • filterProtocolClaims – значение false ;
      • loadUserInfo – значение false .
    5. Для параметра allowStandardAuthentication указать значение true либо false , на усмотрение администратора Grafana. При отключении данного параметра аутентификация через внутренние УЗ 1С будет недоступна.

Проверка настройки

Для выполнения аутентификации в Grafana через Avanpost FAM должны быть выполнены следующие условия:

  • УЗ пользователя существует на стороне сервера Grafana, где:
    • Имя содержит значение E-mail пользователя;
    • П олное имя – содержит значение имени, используемое для отображения.
  • Логин пользователя на стороне Grafana содержит значение E-mail, соответствующее УЗ в профиле пользователя Avanpost FAM.
  • Пользователь состоит в группе Avanpost FAM, которая предоставляет доступ к настроенному приложению.

Для проверки в веб-интерфейсе системы Grafana следует:

  1. Перейти в браузере на Grafana и инициировать аутентификацию через доверенный провайдер Avanpost FAM (выбрать «Войти через FAM»). Дождаться перенаправления на интерфейс аутентификации Avanpost FAM.
  2. Выполнить аутентификацию в соответствии с настроенным для Grafana на стороне Avanpost FAM в соответствии со сценарием многофакторной аутентификации.

В результате пользователь должен успешно пройти аутентификацию в веб-клиент Grafana.

Для проверки в Тонком клиенте системы Grafana следует:

  1. Запустить Тонкий клиент Grafana и инициировать аутентификацию через доверенный провайдер Avanpost FAM (выбрать «Войти через FAM»). Дождаться перенаправления на интерфейс аутентификации Avanpost FAM.
  2. Выполнить аутентификацию в соответствии с настроенным для Grafana на стороне Avanpost FAM в соответствии со сценарием многофакторной аутентификации.

В результате пользователь должен успешно пройти аутентификацию в Тонкий клиент Grafana.

Сценарии использования

Загрузка пользователей Grafana из домена (LDAP)

Чтобы пользователи из домена смогли проходить 2FA/MFA или пользоваться SSO при аутентификации в Grafana, необходимо использовать встроенную в Avanpost FAM функциональность интеграции с LDAP-каталогами (Microsoft Active Directory, FreeIPA, 389Directory, openldap и т.д.). В рамках этой функции можно настроить LDAP-фильтры, которые позволят обеспечить загрузку в Avanpost FAM только тех пользователей, которые будут использовать 2FA/MFA/SSO в Grafana. Таким образом можно подключить несколько доменов.

Контроль попыток аутентификации пользователей к Grafana через Avanpost FAM

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

Управление доступом пользователей к Grafana через Avanpost FAM

Для предоставления доступа пользователю, его необходимо включить в группу, которая имеет доступ к созданному приложению. Доступна реализация автоматического включения и исключения пользователя из группы в рамках синхронизации с LDAP-каталогом.

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

Управление доступом пользователей к Grafana через домен (LDAP)

Avanpost FAM в рамках интеграции с LDAP-каталогом (Microsoft Active Directory, FreeIPA, 389Directory, openldap и т. д.) обеспечивает автоматизацию управления членством пользователей в группах Avanpost FAM, предоставляющих доступ к 1С:Предприятию, путём синхронизации членства пользователей в группах Avanpost FAM на основе членства пользователей домена в доменных группах.

Управление сценарием аутентификации (2FA/MFA) для Grafana через Avanpost FAM

Для настройки второго фактора, который будет использоваться для приложения Grafana, необходимо перейти в административной консоли в карточку приложения и открыть вкладку MFA. В качестве первого шага – указать метод аутентификации Password. В качестве второго шага можно выбрать один из следующих факторов:

  • Мобильное приложение Avanpost Authenticator;
  • Мобильное приложение SafeTech PayControl;
  • SMS;
  • TOTP;
  • E-mail;
  • Мессенджер Telegram;
  • Электронная подпись;
  • FIDO WebAuthn/U2F;
  • Kerberos;
  • Провайдер ЕСИА;
  • OpenID Connect-провайдер;
  • SAML-провайдер.

Управление сценарием аутентификации (2FA/MFA) для отдельных групп сотрудников, подключающихся к Grafana, через Avanpost FAM

Для управления сценарием аутентификации (2FA/MFA) для отдельных групп сотрудников необходимо  в административной консоли Avanpost FAM перейти в карточке группы на вкладке «MFA» и настроить дополнительный сценарий аутентификации. В этом случае пользователи, входящие в указанную группу, будут проходить аутентификацию с использованием второго фактора, заданного на вкладке. Таким образом можно определить специфический сценарий 2FA для администраторов и других привилегированных пользователей, подключающихся к Grafana.

Приложение А. Настройки конфигурационного файла Grafana

  1. Отредактировать grafana.ini /etc/grafana/grafana.ini .
    В секцию [ auth.generic_oauth ] добавить ключ role_attribute_path и проверить scopes. Также если у пользователя нет email, добавить ключ для его заполнения.
    email_attribute_path = preferred_username.
    scopes = openid profile email permissions groups.

    role_attribute_path = contains(groups[*].name, 'Grafana Editor') && 'Editor' || contains(groups[*].name, 'Grafana Admins') && 'Admin' || 'Viewer'.

    Полный конфиг grafana.ini [ auth.generic_oauth ]

    [auth.generic_oauth]
    enabled = true
    name = FAM
    allow_sign_up = true
    client_id = ba3892b1-036b-4b81-be10-a19cc3ed543e
    client_secret = grafana
    scopes =openid profile email permissions groups
    empty_scopes = true
    role_attribute_path= contains (groups[*].name, 'Grafana Editor') && 'Editor' || contains(groups[*].name, 'Grafana Admins') && 'Admin' || 'Viewer'
    ;email_attribute_name = email:primary
    email_attribute_path = preferred_username
    auth_url = http://websso.avanpost.demo/oauth2/authorize
    token_url = http://websso.avanpost.demo/oauth2/token
    api_url = http://websso.avanpost.demo/oauth2/userinfo
    ;signout_redirect_url = http://grafana.avanpost.demo/oauth2/end_session
    ;team_ids =
    ;allowed_organizations =
    tls_skip_verify_insecure = true
    login_attribute_path = preferred_username
    ;tls_client_cert =
    ;tls_client_key =
    ;tls_client_ca =
    
    ; Set to true to enable sending client_id and client_secret via POST body instead of Basic authentication HTTP header
    ; This might be required if the OAuth provider is not RFC6749 compliant, only supporting credentials passed via POST payload
    ;send_client_credentials_via_post = false
    
    
  2. Перезагрузить службу.