Grafana bietet die Möglichkeit, Benutzer über LDAP zu authentifizieren – somit lässt sich das Tool leicht in bestehende Verzeichnisdienste integrieren. Ich verwende in meiner Labor-Umgebung FreeIPA als Verzeichnis-/Authentifizierungsdienst und musste einige Anpassungen vornehmen, um Grafana zu integrieren.
Zuerst muss die Hauptkonfigurationsdatei von Grafana (/etc/grafana/grafana.ini) angepasst werden, um das LDAP-Modul und die dazugehörigen Konfiguration zu aktivieren:
[auth.ldap] enabled = true config_file = /etc/grafana/ldap.toml
In diesem Zuge empfiehlt es sich auch, das Registrieren von neuen Benutzern über das Web-Formular zu unterbinden:
[users] allow_sign_up = false allow_org_create = false
Für Grafana habe ich im FreeIPA-Backend zwei Gruppen erstellt:
- grafana-admins
- grafana-editors
Zu den einzelnen Grafana-Rollen kommen wir gleich noch. Die LDAP-Konfiguration von Grafana (/etc/grafana/ldap.toml) habe ich wie folgt angepasst:
[[servers]] host = "dict.test.loc" port = 636 use_ssl = true ssl_skip_verify = true root_ca_cert = /etc/ipa/ca.crt # Search user bind dn bind_dn = "uid=svc-bigbrother,cn=users,cn=accounts,dc=test,dc=loc" bind_password = '...' ... # User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)" search_filter = "(uid=%s)" # An array of base dns to search through search_base_dns = ["cn=users,cn=accounts,dc=test,dc=loc"] ... ## An array of the base DNs to search through for groups. Typically uses ou=groups group_search_base_dns = ["cn=groups,cn=accounts,dc=test,dc=loc"] # Specify names of the ldap attributes your ldap uses [servers.attributes] name = "givenName" surname = "sn" username = "uid" member_of = "memberOf" email = "mail"

Wird Grafana auf einem System ausgeführt, welches bereits in FreeIPA integriert wurde, liegt das entsprechende SSL-Zertifikat bereits unter /etc/ipa/ca.cert. Ist dies nicht der Fall, muss das Zertifikat kopiert werden. Soll keine Verschlüsselung verwendet werden, müssen die Variablen port und use_ssl angepasst werden.
Die Attribute username und email müssen angepasst werden, damit die Felder dem FreeIPA-Schema entsprechen.
Der nächste Schritt ist, die einzelnen Grafana-Rollen entsprechenden LDAP-Gruppen zuzuordnen. Grafana unterstützt drei unterschiedliche Rollen:
- Admin – volle Berechtigungen, zusätzlich Administration von Datenquellen
- Editor – Benutzen und Erstellen/Anpassen von Dashboards
- Viewer – Benutzen von Dashboards
Ich habe mich dazu entschieden, die Admin- und Editor-Rollen eigenen Gruppen zuzuordnen und das Benutzen von Dashboards jedem authentifizierten Benutzer zu ermöglichen. In der Konfigurationsdatei sieht das folgendermaßen aus:
# Administrators [[servers.group_mappings]] group_dn = "cn=grafana-admins,cn=groups,cn=accounts,dc=test,dc=loc" org_role = "Admin" # Editors [[servers.group_mappings]] group_dn = "cn=grafana-editors,cn=groups,cn=accounts,dc=test,dc=loc" org_role = "Editor" # Read-only for any authenticated user [[servers.group_mappings]] group_dn = "*" org_role = "Viewer"