Настройка LDAP аутентификации в Grafana

В этой шпаргалке я кратко законнспектирую, как выполняется настройка LDAP аутентификации в Grafana. Развернутое руководство по настройке LDAP аутентификации в Grafana приведено на странице официальной документации.

В качестве сервера LDAP в примере ниже будет выступать контроллер домена Active Directory.

Настройка LDAP аутентификации в Grafana

В моем примере всего один домен – itproblog.ru. Именно этот домен будет использоваться для аутентификации пользователей.

1. Поскольку я буду использовать автоматическое сопоставление ролей Grafana для групп Active Directory, то, соответственно, группы в Active Directory предварительно нужно создать.

2. Теперь я перейду к изменения необходимых конфигурационных файлов на стороне Grafana. Первым шагом изменим конфигурационный файл сервера Grafana для того, чтобы включить аутентификация по LDAP и автоматическое сопоставление ролей. Открываем на редактирование конфигурационный файл:

nano /etc/grafana/grafana.ini

Изменяем следующие опции:

enabled = true 
config_file = /etc/grafana/ldap.toml
allow_sign_up = true
skip_org_role_sync = false

3. Теперь необходимо изменить конфигурационный файл ldap.toml с параметрами для LDAP сервера.

nano /etc/grafana/ldap.toml

Указываем параметры подключения к LDAP:

[[servers]]
# Ldap server host (specify multiple hosts space separated)
host = "10.10.10.71"
# Default port is 389 or 636 if use_ssl = true
port = 389
# Set to true if LDAP server should use an encrypted TLS connection (either with STARTTLS or LDAPS)
use_ssl = false
# If set to true, use LDAP with STARTTLS instead of LDAPS
start_tls = false
ssl_skip_verify = true
# set to the path to your root CA certificate or leave unset to use system defaults

# Search user bind dn
bind_dn = "IT\\%s"

# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
search_filter = "(sAMAccountName=%s)"

# An array of base dns to search through
search_base_dns = ["DC=itproblog,DC=ru"]

Пожалуй, пояснения требует только параметр bind_dn = “IT\\%s”. Вместо \%s будет подставлено имя пользователя со страницы аутентификации. Поскольку у меня всего один домен, то такой bind_dn позволяет сопоставить это выражение с любым пользователем AD. В этом случае указывать параметр bind_password нет необходимости.

4. Также в файле ldap.toml нужно немного скорректировать сопоставление атрибутов Active Directory с атрибутами Grafana.

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

5. Заключительным шагом необходимо настроить автоматическое сопоставление ролей Grafana и групп Active Directory все в том же конфигурационном файле ldap.toml.

# Map ldap groups to grafana org roles
[[servers.group_mappings]]
group_dn = "CN=GrafanaAdmin,OU=Zabbix,OU=Services,OU=IT,DC=itproblog,DC=ru"
org_role = "Admin"
# To make user an instance admin  (Grafana Admin) uncomment line below
grafana_admin = true
# The Grafana organization database id, optional, if left out the default org (id 1) will be used
# org_id = 1

[[servers.group_mappings]]
group_dn = "CN=GrafanaEditor,OU=Zabbix,OU=Services,OU=IT,DC=itproblog,DC=ru"
org_role = "Editor"

[[servers.group_mappings]]
# If you want to match all (or no ldap groups) then you can use wildcard
group_dn = "CN=GrafanaView,OU=Zabbix,OU=Services,OU=IT,DC=itproblog,DC=ru"
org_role = "Viewer"

6. Сохраняем изменения в конфигурационном файле /etc/grafana/ldap.toml.

7. Перезапускаем сервер Grafana.

systemctl restart grafana-server

Проверка

Перед проверкой не забудьте включить нужных пользователей в соответствующие группы Active Directory для того, чтобы они сопоставились с ролями Grafana и у них был соответствующий доступ.

Открываем станицу аутентификации Grafana и указываем логин и пароль пользователя Active Directory.

В случае успешной аутентификации и авторизации мы должны увидеть стартовый экран Grafana.

Перейдя в список пользователей Grafana вы увидите, что пользователи, которые были созданы через LDAP аутентификацию отмечены соответствующим тэгом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *