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

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

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

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

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

Настройка Grafana

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

vi /etc/grafana/grafana.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"
#bind_password = 'grafana'
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.
  • bind_password — пароль для связки с AD. Обратите внимание, что данная опция должна быть закомментирована, тогда пароль будет браться из того, что введет пользователь при входе.
  • search_filter — ldap фильтр для поиска учетных записей, которые будут удовлетворять определенным запросам. В моем случае, cn был заменен на sAMAccountName, так как логин в AD больше соответствует данному атрибуту.
  • search_base_dns — в каком контейнере нужно искать пользователей. Можно задать конкретный организационный юнит. В данном примере поиск будет идти по всему домену.

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

systemctl restart grafana-server

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

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

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

vi /etc/grafana/grafana.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

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

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Нужна бесплатная консультация?

Мини-инструкции

Добавление еще одной версии PHP в Apache на CentOS 7

Инструкция по развертыванию Nextcloud с Apache на Ubuntu

Как создать свой собственный образ для Docker

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

Использование Roundcube на CentOS для нескольких почтовых серверов

Как настроить доверительные отношения между доменами Active Directory

Настройка Autodiscover для автоматического конфигурирования почтовых программ

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама