Перейти к содержанию

Двухфакторная аутентификация для Grafana

Последнее обновление 17 сентября 2026Открыть как Markdown

Описание

Grafana умеет аутентифицировать пользователей в каталоге по протоколу LDAP — параметры задаются в файле ldap.toml. Если указать в нём адрес локального инстанса Simple2FA вместо адреса контроллера домена, вход в Grafana получит второй фактор: пользователь подтверждает вход на своём устройстве, и только после этого открывается сессия.

Метод подключения — LDAP-прокси. Второй фактор подтверждается push-уведомлением в мобильном приложении, в Telegram или в MAX.

Схема работы:

  1. Пользователь открывает Grafana и вводит логин и пароль.
  2. Grafana обращается по LDAP к локальному инстансу Simple2FA.
  3. Инстанс проверяет логин и пароль в каталоге организации.
  4. Инстанс запрашивает у пользователя подтверждение вторым фактором.
  5. Пользователь подтверждает вход, и Grafana открывает сессию.

Перед началом работы

  • В глобальных настройках инстанса включён LDAP-прокси, порты опубликованы на хосте — шаги 1 и 2 общей инструкции.
  • С сервера Grafana открыт доступ к инстансу по порту LDAP (1389) или LDAPS (1636).
  • DN сервисной учётной записи добавлен в список сервисных в глобальных настройках Simple2FA.
  • Сохранён доступ под локальным администратором Grafana (admin) — он не зависит от настроек LDAP.

Подготовка в Simple2FA

В панели администратора создайте ресурс:

Поле Значение
Название Grafana
Протокол LDAP
CIDR клиентов LDAP IP-адрес сервера Grafana, например 10.0.0.80/32
Проверять первый фактор Включить
Поставщики учётных записей Каталог, в котором проверяется пароль
Использовать кеширование сессий Включить

Добавьте ресурс в группу пользователей, которым разрешён вход в Grafana.

Настройка Grafana

Включение LDAP

В grafana.ini (обычно /etc/grafana/grafana.ini) включите LDAP и укажите путь к файлу настроек:

[auth.ldap]
enabled = true
config_file = /etc/grafana/ldap.toml
allow_sign_up = true

Файл ldap.toml

[[servers]]
host = "simple2fa.example.local"
port = 1389
use_ssl = false
start_tls = false
ssl_skip_verify = false
timeout = 90

bind_dn = "CN=ldapbind,CN=Users,DC=example,DC=local"
bind_password = "пароль сервисной учётной записи"

search_filter = "(sAMAccountName=%s)"
search_base_dns = ["DC=example,DC=local"]

[servers.attributes]
name = "givenName"
surname = "sn"
username = "sAMAccountName"
member_of = "memberOf"
email = "mail"

[[servers.group_mappings]]
group_dn = "*"
org_role = "Viewer"

Что здесь важно:

  • host и port — адрес локального инстанса Simple2FA и порт слушателя: 1389 или 1636;
  • use_ssl / start_tls — шифрование: use_ssl = true с портом 1636 либо start_tls = true с портом 1389. Оставьте ssl_skip_verify = false и сделайте сертификат инстанса доверенным на сервере Grafana;
  • timeout — 90 секунд, чтобы пользователь успел подтвердить вход. Значение по умолчанию (10 секунд) для второго фактора мало;
  • bind_dn и bind_password — сервисная учётная запись каталога; её DN должен быть в списке сервисных в Simple2FA;
  • search_filter и search_base_dns — поиск в вашем каталоге: sAMAccountName для Active Directory, uid для типового LDAP-каталога;
  • group_mappings — без сопоставления групп Grafana не пустит пользователя. Шаблон * выдаёт роль всем прошедшим проверку; для разграничения по группам укажите их DN отдельными блоками.

Перезапустите Grafana:

systemctl restart grafana-server

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

Страница Administration → Authentication → LDAP проверяет соединение и сопоставление атрибутов под сервисной учётной записью — второй фактор при этом не запрашивается. Реальную работу интеграции проверяйте входом тестового пользователя.

Проверка работы

  1. Откройте страницу входа Grafana в приватном окне браузера, не закрывая текущую сессию администратора.
  2. Введите логин и пароль тестового пользователя каталога.
  3. Дождитесь запроса подтверждения и подтвердите вход.
  4. Убедитесь, что Grafana открыла сессию, а в журнале «Попытки авторизации» появилась успешная попытка на ресурсе Grafana.

Если вход не проходит, посмотрите лог Grafana (/var/log/grafana/grafana.log): в нём видно, дошёл ли запрос до инстанса и на каком шаге он отклонён.

Смотрите также

Связаться с нами

Подберём сценарий под вашу инфраструктуру, рассчитаем стоимость и запустим бесплатный пилот на 30 дней.

Отправляя заявку, вы соглашаетесь на обработку персональных данных.