Grafana, InfluxDB und Windows PowerShell – Teil 7

Anbindung von Grafana an die Active Directory

Wenn die Grafana-Installation von mehreren Personen genutzt werden soll, und diese Benutzer sowieso schon in einer Active Directory vorhanden sind, kann die Anmeldung direkt per LDAP realisiert werden. Grafana selbst ist für diese Art der Anmeldung vorbereitet, es braucht lediglich ein paar Zeilen Code in den Config-Dateien, um die Einstellung zu aktivieren.

Grundsätzliche Infos

Auf der Grafana-Seite selbst gibt es eine sehr gute Dokumentation für diese Einstellung, diese ist hier zu finden:
https://grafana.com/docs/auth/ldap/

Die Aktivierung von LDAP

Damit eine Authentifizierung abseits der internen Benutzerkonten möglich ist, muss diese externe Quelle erst einmal aktiviert werden. Dies geschieht über die grafana.ini-Datei im Grafana-Verzeichnis, standardmäßig unter /etc/grafana/.
Hier muss im Bereich [auth.ldap] die Option aktiviert werden, es muss die Config-Datei angegeben werden und es muss ein Login über diese Quelle erlaubt werden.

Nun müssen wir noch in der besagten Datei /etc/grafana/ldap.toml die korrekten Daten eintragen, damit sich das System auch an der AD anmelden kann.

Die Anbindung an die Active Directory-Server

Der Inhalt der ldap.toml-Datei sieht in meinem Fall wie folgt aus. Ich habe die angepassten Zeilen jeweils mit einem Kommentar versehen, da ich zwei Sekunden gebraucht habe, um die korrekte Syntax hinzubekommen.

# Set to true to log user information returned from LDAP
verbose_logging = false

[[servers]]
### Die genutzten Server zur Anmeldung. Mehrere Server können mit einem Leerzeichen getrennt angegeben werden ###
# Ldap server host (specify multiple hosts space separated)
host = "10.10.10.1 10.10.10.2"
# Default port is 389 or 636 if use_ssl = true
port = 389
### Hier, falls möglich, eine verschlüsselte Verbindung per LDAPS herstellen ###
# Set to true if ldap server supports TLS
use_ssl = false
# Set to true if connect ldap server with STARTTLS pattern (create connection in insecure, then upgrade to secure connection with TLS)
start_tls = false
# set to true if you want to skip ssl cert validation
ssl_skip_verify = false
# set to the path to your root CA certificate or leave unset to use system defaults
# root_ca_cert = "/path/to/certificate.crt"

### Dieser Benutzer wird genutzt, um eine Authentifizierung an der AD zu machen. Dieser Zugriff sollte möglichst readonly sein! ###
# Search user bind dn
bind_dn = "CN=ldap_user,CN=Users,DC=domain,DC=tld"
# Search user bind password
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
bind_password = 'password'

### Hier wird angegeben, mit welchen Daten sich der Benutzer anmelden darf. In meinem Fall mit dem Username oder der Email-Adresse ###
# User search filter, for example "(cn=%s)" or "(sAMAccountName=%s)" or "(uid=%s)"
search_filter = "(|(sAMAccountName=%s)(userPrincipalName=%s))"

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

## Group search filter, to retrieve the groups of which the user is a member (only set if memberOf attribute is not available)
#group_search_filter = "(&(objectClass=posixGroup)(memberUid=%s))"
## An array of the base DNs to search through for groups. Typically uses ou=groups
#group_search_base_dns = [""]
# Specify names of the ldap attributes your ldap uses
[servers.attributes]
name = "givenName"
surname = "sn"
username = "sAMAccountName"
member_of = "memberOf"
email =  "mail"

### An dieser Stelle wird definiert, dass sich alle Konten aus den entsprechenden Gruppen anmelden können ###
### Die Gruppen müssen in der AD existieren und die Konten der Admins/Editoren/Viewer enthalten ###
# Map ldap groups to grafana org roles
[[servers.group_mappings]]
group_dn = "CN=Grafana Admin,OU=MeineOU,DC=domain,DC=tld"
org_role = "Admin"
# The Grafana organization database id, optional, if left out the default org (id 1) will be used.  Setting this allows for multiple group_dn's to be assigned to $
# org_id = 1

[[servers.group_mappings]]
group_dn = "CN=Grafana Editor,OU=MeineOU,DC=domain,DC=tld"
org_role = "Editor"

[[servers.group_mappings]]
# If you want to match all (or no ldap groups) then you can use wildcard
group_dn = "CN=Grafana Viewer,OU=MeineOU,DC=domain,DC=tld"
org_role = "Viewer"

Ein paar Tipps

In der Config-Datei muss an einigen Stellen der direkte LDAP-Pfad zum korrekten Objekt angegeben werden. Je nach Objekt und Speicherplatz in der AD kann dies CN, OU oder DC sein. Weiß man den genauen Pfad nicht auswendig, kann die PowerShell auf einem der AD-Systeme sehr hilfreich sein. Hier eine Liste der Befehle, die ich genutzt habe:

Nach der Anpassung der Konfiguration muss der Grafana-Dienst einmal durchgestartet werden. Dies geht am einfachsten mit systemctl restart grafana-server

Wenn Sie nun schon einmal auf dem System sind, sollten Sie direkt überprüfen, ob es ein Update für Grafana gibt. Bei mir war noch die Version 6.0.3 installiert, zum aktuellen Zeitpunkt gibt es bereits 6.1.4. Eine Update-Anleitung gibt es ebenfalls direkt auf der Seite von Grafana:
https://grafana.com/grafana/download

Bei mir reichten die folgenden drei Befehle:

cd /tmp
wget https://dl.grafana.com/oss/release/grafana_6.1.4_amd64.deb
sudo dpkg -i grafana_6.1.4_amd64.deb

Ob die aktuelle Version bereits installiert ist oder nicht kann man prüfen mit einem

dpkg -l grafana

Sie benötigten persönliche Unterstützung oder haben nicht die richtige Lösung für Ihr Problem gefunden?

Dieser Blog wird von mir, Jan Kappen, in seiner Freizeit betrieben, hier beschreibe ich Lösungen für Probleme aller Art oder technische Anleitungen mit Lösungsansätzen.

Die berufliche Unabhängigkeit

Ich bin seit Januar 2020 vollständig selbstständig und habe meine eigene Firma gegründet, die Building Networks mit Sitz in Winterberg im schönen Sauerland. Hier stehe ich als Dienstleister gerne für Anfragen, Support oder Projekte zur Verfügung.

Die Firma Building Networks bietet Ihnen:

  • Hilfe und Support per Telefon, Fernwartung oder persönlich vor Ort
  • Projekt-Unterstützung
  • Ausgezeichnete Kompetenz zu den Themen
    • Microsoft Hyper-V
    • Microsoft Failover Clustering & HA
    • Storage Spaces Direct (S2D) & Azure Stack HCI
    • Veeam Backup & Recovery
    • Microsoft Exchange
    • Microsoft Exchange Hybrid Infrastruktur
    • Microsoft Active Directory
    • Microsoft Office 365
    • Ubiquiti
    • 3CX VoIP PBX
    • Fortinet Network Security
    • Baramundi Software
    • ...

Ich freue mich über Ihren Kontakt, weitere Informationen finden Sie auf der Webseite meiner Firma unter Building-Networks.de

Jan

Jan Kappen arbeitet seit 2005 in der IT. Er hat seine Ausbildung 2008 abgeschlossen und war bis 2018 als IT-Consultant im Bereich Hyper-V, Failover Clustering und Software Defined Storage unterwegs. Seit 2015 wurde er jährlich von Microsoft als Most Valuable Professional (MVP) im Bereich "Cloud & Datacenter Management" ausgezeichnet für seine Kenntnisse und die Weitergabe seines Wissens. Jan ist häufig auf Konferenzen als Sprecher zu finden, weiterhin bloggt er viel. Von September 2018 bis Dezember 2019 war Jan als Senior Network- und Systemadministrator bei einem großen mittelständischen Unternehmen im schönen Sauerland angestellt. Im Januar 2020 hat er den Sprung in die Selbstständigkeit gewagt und ist seitdem Geschäftsführer der Firma Building Networks in Winterberg. In seiner Freizeit kümmert er sich um das Freifunk-Netzwerk in Winterberg und Umgebung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert