# Двухфакторная аутентификация для Grafana ## Описание Grafana умеет аутентифицировать пользователей в каталоге по протоколу LDAP — параметры задаются в файле `ldap.toml`. Если указать в нём адрес локального инстанса Simple2FA вместо адреса контроллера домена, вход в Grafana получит второй фактор: пользователь подтверждает вход на своём устройстве, и только после этого открывается сессия. Метод подключения — [LDAP-прокси](index.md). Второй фактор подтверждается push-уведомлением в мобильном приложении, в Telegram или в MAX. Схема работы: 1. Пользователь открывает Grafana и вводит логин и пароль. 2. Grafana обращается по LDAP к локальному инстансу Simple2FA. 3. Инстанс проверяет логин и пароль в каталоге организации. 4. Инстанс запрашивает у пользователя подтверждение вторым фактором. 5. Пользователь подтверждает вход, и Grafana открывает сессию. ## Перед началом работы - В глобальных настройках инстанса включён LDAP-прокси, порты опубликованы на хосте — [шаги 1 и 2 общей инструкции](index.md#шаг-1-включить-ldap-прокси). - С сервера Grafana открыт доступ к инстансу по порту LDAP (`1389`) или LDAPS (`1636`). - DN сервисной учётной записи добавлен в список сервисных в глобальных настройках Simple2FA. - Сохранён доступ под локальным администратором Grafana (`admin`) — он не зависит от настроек LDAP. ## Подготовка в Simple2FA В панели администратора создайте [ресурс](../../admin/resources.md): | Поле | Значение | | --- | --- | | Название | Grafana | | Протокол | LDAP | | CIDR клиентов LDAP | IP-адрес сервера Grafana, например `10.0.0.80/32` | | Проверять первый фактор | Включить | | Поставщики учётных записей | Каталог, в котором проверяется пароль | | Использовать кеширование сессий | Включить | Добавьте ресурс в группу пользователей, которым разрешён вход в Grafana. ## Настройка Grafana ### Включение LDAP В `grafana.ini` (обычно `/etc/grafana/grafana.ini`) включите LDAP и укажите путь к файлу настроек: ```ini [auth.ldap] enabled = true config_file = /etc/grafana/ldap.toml allow_sign_up = true ``` ### Файл ldap.toml ```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: ```bash systemctl restart grafana-server ``` !!! note "Проверка LDAP в интерфейсе Grafana" Страница **Administration → Authentication → LDAP** проверяет соединение и сопоставление атрибутов под сервисной учётной записью — второй фактор при этом не запрашивается. Реальную работу интеграции проверяйте входом тестового пользователя. ## Проверка работы 1. Откройте страницу входа Grafana в приватном окне браузера, не закрывая текущую сессию администратора. 2. Введите логин и пароль тестового пользователя каталога. 3. Дождитесь запроса подтверждения и подтвердите вход. 4. Убедитесь, что Grafana открыла сессию, а в журнале [«Попытки авторизации»](../../admin/auth-attempts.md) появилась успешная попытка на ресурсе Grafana. Если вход не проходит, посмотрите лог Grafana (`/var/log/grafana/grafana.log`): в нём видно, дошёл ли запрос до инстанса и на каком шаге он отклонён. ## Смотрите также - [Приложения с входом по LDAP](index.md) — общая часть настройки и диагностика - [Ресурсы](../../admin/resources.md) - [Настройка ресурсов](../index.md)