Thank you for reading this post, don't forget to subscribe!
Авторизация через AD
Разберем пример настройки без каких-либо дополнительных возможностей — просто авторизация через AD.
Настройка Grafana
Открываем основной конфигурационный файл Grafana:
vi /etc/grafana/grafana.ini
… и указываем использовать аутентификацию LDAP, а также указываем путь до конфигурационного файла с настройками ldap (снимаем комментарии с данных опций и приводим их к виду):
1 2 3 4 5 6 |
... [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
1 2 3 4 5 6 7 8 9 10 |
[[servers]] host = "192.168.0.15" port = 389 use_ssl = false start_tls = false ssl_skip_verify = false bind_dn = "TEST\\%s" #bind_password = 'grafana' search_filter = "(sAMAccountName=%s)" search_base_dns = ["dc=test,dc=local"] |
* где:
- host — имя сервера контроллера домена или IP-адрес. В данном примере указан сервер 192.168.0.15.
- port — используемый порт для связи с AD.
- use_ssl — использовать ли SSL. В данном примере не используем.
- start_tls — использовать ли STARTTLS.
- ssl_skip_verify — опция проверки сертификата на корректность. Если задано false, то проверять.
- bind_dn — учетная запись, от которой будут выполняться запросы в сторону LDAP. У нее могут быть минимальные права в AD. В данном примере мы используем ту же запись, от которой заходим в систему В нашем примере работаем в домене TEST.
- bind_password — пароль для связки с AD. Обратите внимание, что данная опция должна быть закомментирована, тогда пароль будет браться из того, что введет пользователь при входе.
- search_filter — ldap фильтр для поиска учетных записей, которые будут удовлетворять определенным запросам. В моем случае, cn был заменен на sAMAccountName, так как логин в AD больше соответствует данному атрибуту.
- search_base_dns — в каком контейнере нужно искать пользователей. Можно задать конкретный организационный юнит. В данном примере поиск будет идти по всему домену.
Перезапускаем графану:
systemctl restart grafana-server
Проверка и отладка
Открываем веб-интерфейс графаны и пробуем зайти с использованием учетной записи AD. В качестве логина указываем учетную запись без префиксов самого домена, например, test. И пароль от доменной записи. Авторизация должна пройти успешно.
Если система выдает ошибку и не пускает нашу запись, то открываем основной конфигурационный файл:
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 — либо редактируем их, либо создаем новые следующего вида:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
... [[servers.group_mappings]] group_dn = "cn=Enterprise Admins,cn=Users,dc=test,dc=local" org_role = "Admin" grafana_admin = true [[servers.group_mappings]] group_dn = "cn=Domain Admins,cn=Users,dc=test,dc=local" org_role = "Admin" [[servers.group_mappings]] group_dn = "cn=Редакторы графаны,ou=Группы безопасности,dc=test,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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[[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