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

Thank you for reading this post, don't forget to subscribe!

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

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

Настройка Grafana

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

vi /etc/grafana/grafana.ini

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

* где: 

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

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

vi /etc/grafana/ldap.toml

* где:

  • 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 — либо редак­ти­ру­ем их, либо созда­ем новые сле­ду­ю­ще­го вида:

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

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

systemctl restart grafana-server

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

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

vi /etc/grafana/ldap.toml

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

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

systemctl restart grafana-server