Grafana per LetsEncrypt mit HTTPS absichern
Nach dem Umzug von Grafana auf einen neuen Server habe ich die Installation zusätzlich mit HTTPS konfiguriert, um einen verschlüsselten Zugriff drauf zu gewährleisten. Als CA kommt natürlich wieder LetsEncrypt zum Einsatz.
Zertifikat erzeugen
Erste Aufgabe ist es, ein neues Zertifikat anzufordern. Nachdem dies passiert ist, werden diese unter Ubuntu unter /etc/letsencrypt/live/<domainname> abgelegt.
Es gibt einige Anleitungen dazu online, z.B. hier: How To Secure Nginx with Let’s Encrypt on Ubuntu 16.04
Anpassung der Grafana-Konfiguration
Als nächstes muss die Grafana-Konfiguration unter /etc/grafana/grafana.ini angepasst werden. Anbei nur die Änderungen, die gemacht wurden, nicht die komplette Konfiguration.
... [server] # Protocol (http or https) protocol = https ... # https certs & key file cert_file = /etc/letsencrypt/live/<DOMAIN>/cert.pem cert_key = /etc/letsencrypt/live/<DOMAIN>/privkey.pem ...
Nun könnte der Dienst von Grafana neu gestartet werden, die führt allerdings zu einem Fehler im Logfile unter /var/log/grafana/grafana.log.
t=2016-12-28T14:23:40+0100 lvl=eror msg="Fail to start server" logger=server error="open /etc/letsencrypt/live/<domain>/cert.pem: permission denied"
Dies liegt daran, dass der Grafana-Prozess standardmäßig nicht auf das Zertifikat zugreifen kann. Dies habe ich so angepasst, dass der grafana-Benutzer Mitglied der Gruppe ssl-certs ist und diese Gruppe einen Zugriff auf die Dateien erhält, die in dem Verzeichnis liegen:
# User zur Gruppe hinzufügen sudo usermod -G ssl-cert -a grafana # Anpassung der Rechte und Besitzer chown root:ssl-cert /etc/letsencrypt/live/<DOMAIN>/* chmod 660 /etc/letsencrypt/live/<DOMAIN>/*
Zusätzlich zur Anpassung der Gruppe habe ich noch die Rechte der Dateien auf 660 angepasst, so das Jeder keinen lesenden Zugriff mehr hat. Diese Anpassung muss nun auch noch auf den Ordnern gemacht werden, in denen die Zertifikate gespeichert werden:
# Wechsel in das Standardverzeichnis von LetsEncrypt cd /etc/letsencrypt # Anpassung der Rechte, um einen lesenden Zugriff zu gewährleisten chmod 755 live/ chmod 755 archive/
Danach konnte ich den Grafana-Dienst problemlos starten und per HTTPS ansprechen.
Prometheus
Ich habe festgestellt, dass nicht nur die Migration von Grafana zu HTTPS ausreicht, sondern auch noch die dahinter gelagerten Datenquellen umgestellt werden müssen. In unserem Fall ist das Prometheus, das habe ich in diesem Artikel aktuell noch nicht berücksichtigt.