Настройка MFA/SSO для Grafana - Avanpost FAM/MFA+

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

В статье описывается настройка двухфакторной аутентификации (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. Создать новое приложение Grafana, при создании приложения указав Scope:

2/ После создания приложения перейти в его карточке на вкладку «Настройки» и в режиме редактирования и внесите корректировки в следующие параметры:

Allowed grant types – включить чекбоксы:

      1. «Authorization Code»,
      2. «Implicit»,
      3. «Refresh Token».



3. Создать 2 группы : Grafana Editor и Grafana Admins. Указать приложение Grafana.

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

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

Для выполнения аутентификации в 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, предоставляющих доступ путём синхронизации членства пользователей в группах 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 

Отредактировать grafana.ini (находится по пути /etc/grafana/grafana.ini). 
В секцию [auth.generic_oauth] добавить ключ role_attribute_path и проверить scopes. 

Фундаментально Grafana требует, что бы у пользователя, который производит аутентификацию, была почта. Если не будет передаваться почтовый адрес, то Grafana будет пытаться запросить его через api_url и выдавать ошибку. Чтобы решить проблему с пользователями, у которых нет почты, можно попробовать переназначить атрибут, отвечающий за почту пользователя, и назначить на него "preferred_username" (логин пользователя): "email_attribute_path = preferred_username".

Пример раздела [auth.generic_oauth] из конфигурационного файла grafana.ini:

[auth.generic_oauth]
enabled = true
name = FAM
allow_sign_up = true
client_id = 36d3ab06-1f88-4181-9686-eda0edb53ff4
client_secret = Avanp0st
scopes =openid profile email permissions groups
role_attribute_path= contains (groups[*].name, 'Grafana Editor') && 'Editor' ||
contains(groups[*].name, 'Grafana Admins') && 'Admin' || 'Viewer'
email_attribute_path = preferred_username
auth_url = http://idp.avanpost.local/oauth2/authorize
token_url = http://idp.avanpost.local/oauth2/token
api_url = http://idp.avanpost.local/oauth2/userinfo
;signout_redirect_url = http://idp.avanpost.local/oauth2/end_session
tls_skip_verify_insecure = true
login_attribute_path = preferred_username

По окончании следует перезагрузить службу.

При аутентификации пользователя с группой Grafana Editor или Grafana Admins будет выдана соответствующая роль, в противном случае, пользователь попадет в Grafana с ролью "Viewer".



Обсуждение