Общие сведения
В статье описывается настройка двухфакторной аутентификации (2FA), многофакторной аутентификации (MFA) и Single-Sign On (SSO) для Grafana посредством OpenID Connect-механизма системы Avanpost FAM. Функциональность доступна для веб-интерфейса Grafana.
Для Grafana, подключенного по OpenID Connect, с целью 2FA/MFA/SSO могут использоваться следующие факторы аутентификации:
- Мобильное приложение Avanpost Authenticator (push + TOTP);
- SMS;
- TOTP;
- E-mail;
- Мессенджер Telegram;
- Электронная подпись;
- FIDO WebAuthn/U2F;
- Доменная Kerberos-аутентификация;
- ЕСИА (Единая система идентификации и аутентификации) в режиме Federation;
- OpenID Connect-провайдер в режиме Federation;
- SAML-провайдер в режиме Federation.
Можно обеспечить использование как двухфакторной аутентификации, так и многофакторной аутентификации в зависимости от группы пользователя.
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 в соответствии с инструкцией необходимо выполнить следующие предварительные условия:
- Установить и развернуть в сети сервер Grafana;
- Установить и развернуть в сети компонент Avanpost FAM Server;
- Обеспечить на стороне АРМ пользователя сетевую доступность сервера Grafana;
- Обеспечить на стороне АРМ пользователя сетевую доступность сервера Avanpost FAM Server;
- Обеспечить на стороне сервера 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 в административной консоли:
- Создать новое приложение Grafana, при создании приложения указав Scope:
2/ После создания приложения перейти в его карточке на вкладку «Настройки» и в режиме редактирования и внесите корректировки в следующие параметры:
Allowed grant types
– включить чекбоксы:
- «Authorization Code»,
- «Implicit»,
- «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 следует:
- Перейти в браузере на Grafana и инициировать аутентификацию через доверенный провайдер Avanpost FAM (выбрать «Войти через FAM»). Дождаться перенаправления на интерфейс аутентификации Avanpost FAM.
- Выполнить аутентификацию в соответствии с настроенным для Grafana на стороне Avanpost FAM в соответствии со сценарием многофакторной аутентификации.
В результате пользователь должен успешно пройти аутентификацию в веб-клиент Grafana.
Для проверки в Тонком клиенте системы Grafana следует:
- Запустить Тонкий клиент Grafana и инициировать аутентификацию через доверенный провайдер Avanpost FAM (выбрать «Войти через FAM»). Дождаться перенаправления на интерфейс аутентификации Avanpost FAM.
- Выполнить аутентификацию в соответствии с настроенным для 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".