Настройка Grafana для аутентификации через Active Directory

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: GrafanaActive Directory.

Авторизация через AD

Разберем пример настройки без каких-либо дополнительных возможностей — просто авторизация через AD.

Настройка Grafana

Открываем основной конфигурационный файл Grafana:

vi /usr/share/grafana/conf/defaults.ini

... и указываем использовать аутентификацию LDAP, а также указываем путь до конфигурационного файла с настройками ldap:

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

* где enabled — параметр, который разрешает или запрещает использование ldap; config_file — путь до файла, где будут храниться соответствующие настройки; allow_sign_up — опция, отвечающая за автоматическое создание пользователей — необходима, чтобы могли авторизоваться пользователи, которых еще нет в графане.

Открываем конфигурационный файл ldap.toml и приводим его к виду:

vi /etc/grafana/ldap.toml

[[servers]]
host = "192.168.0.15"
port = 389
use_ssl = false
start_tls = false
ssl_skip_verify = false
bind_dn = "DMOSK\\%s"
search_filter = "(sAMAccountName=%s)"
search_base_dns = ["dc=dmosk,dc=local"]

* где:

  • host — имя сервера контроллера домена или IP-адрес. В данном примере указан сервер 192.168.0.15.
  • port — используемый порт для связи с AD.
  • use_ssl — использовать ли SSL. В данном примере не используем.
  • start_tls — использовать ли STARTTLS.
  • ssl_skip_verify — опция проверки сертификата на корректность. Если задано false, то проверять.
  • bind_dn — учетная запись, от которой будут выполняться запросы в сторону LDAP. У нее могут быть минимальные права в AD. В данном примере мы используем ту же запись, от которой заходим в систему В нашем примере работаем в домене DMOSK.
  • search_filter — ldap фильтр для поиска учетных записей, которые будут удовлетворять определенным запросам. В моем случае, cn был заменен на sAMAccountName, так как логин в AD больше соответствует данному атрибуту.
  • search_base_dns — в каком контейнере нужно искать пользователей. Можно задать конкретный организационный юнит. В данном примере поиск будет идти по всему домену.

Перезапускаем графану:

systemctl restart grafana-server

Создание записи в AD для bind

Открываем оснастку «Active Directory — пользователи и компьютеры» и создаем пользователя для связки с графаной. В нашем примере это grafana, которого нужно разместить в организационном юните «Пользователи». Пароль, который мы указали — grafana123. Вы можете задать свой.

Если в сети используется несколько контроллеров домена, нужно немного подождать, пока не пройдет репликация.

Проверка и отладка

Открываем веб-интерфейс графаны и пробуем зайти с использованием учетной записи AD. В качестве логина указываем учетную запись без префиксов самого домена, например, dmosk. И пароль от доменной записи. Авторизация должна пройти успешно.

Если система выдает ошибку и не пускает нашу запись, то открываем основной конфигурационный файл:

vi /usr/share/grafana/conf/defaults.ini

... и задаем фильтр для лога:

[log]
filters = ldap:debug

* в моем случае, данный фильтр был добавлен.

Перезапускаем графану:

systemctl restart grafana-server

Смотрим лог:

tail -f /var/log/grafana/grafana.log

Авторизация на основе групп

Теперь разберем настройку предоставления прав на основе групп AD.

Открываем наш конфигурационный файл для настройки ldap:

vi /etc/grafana/ldap.toml

В начальном файле есть секции servers.group_mappings — либо редактируем их, либо создаем новые следующего вида:

...

[[servers.group_mappings]]
group_dn = "cn=Enterprise Admins,cn=Users,dc=dmosk,dc=local"
org_role = "Admin"
grafana_admin = true

[[servers.group_mappings]]
group_dn = "cn=Domain Admins,cn=Users,dc=dmosk,dc=local"
org_role = "Admin"

[[servers.group_mappings]]
group_dn = "cn=Редакторы графаны,ou=Группы безопасности,dc=dmosk,dc=local"
org_role = "Editor"

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

* где group_dn — группа безопасности в ldap каталоге, org_role — роль в Grafana, на основе которой пользователю будут присвоены права, grafana_admin — права суперадминистратора. В конкретном примере мы предоставляем полные права пользователям группы «Enterprise Admins», права администратора для «Domain Admins», разрешаем вносить правки пользователям группы «Редакторы графаны» и всем остальным разрешаем только просмотр данных.

Чтобы настройки вступили в силу, перезапускаем сервис графаны:

systemctl restart grafana-server

Несколько контроллеров домена

Мы рассмотрели пример добавления одного сервера, выступающего контроллером домена. Графана поддерживает возможность добавления нескольких серверов — для этого необходимо после всех настроек для первого контроллера, добавить второй:

vi /etc/grafana/ldap.toml

[[servers]]
host = "192.168.0.15"
...

[servers.attributes]
...

[[servers.group_mappings]]
...

[[servers]]
host = "192.168.0.16"
...

[servers.attributes]
...

[[servers.group_mappings]]
...

* в данном примере сначала идут настройки для контроллера 192.168.0.15, затем для 192.168.0.16.

Перезагружаем графану:

systemctl restart grafana-server

# Серверы # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет