//Cloudogu EcoSystem Docs

Der Grafana-CARP

Die Grafana-Authentifizierung läuft über einen sogenannten CARP, das steht für Cas-Authentication-Reverse-Proxy. Die Funktionsweise des Carp ist die, dass dieser als Proxyserver vor Grafana läuft und die Cas-Authentifizierung übernimmt. Wird auf /grafana zugegriffen, übernimmt an dieser Stelle der CARP. Dieser leitet an den Cas weiter, wertet das Service-Ticket aus oder falls man bereits Authentifiziert ist, leitet dieser den Request an Grafana weiter.

Grafana selbst implementiert die Proxy-Authentifizierung: https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication/auth-proxy/ Dieses Feature nutzt der CARP aus, um zu authentifizieren. Dabei wird einfach ein Header mit dem entsprechenden Benutzernamen beim Weiterleiten des Requests an Grafana übergeben.

Der CARP übernimmt auch die Replizierung von Accounts, Gruppen (Teams) und Berechtigungen. Dies geschieht dadurch, dass Requests an die Rest-API von Grafana gesendet werden. Grundsätzlich hätte Grafana auch eine Berechtigungs- und Team(Gruppen)-Replizierung angeboten, allerdings nur in der Premium-Variante, die wir an dieser Stelle nicht verwenden.

Grafana an sich unterstützt auch andere Authentifizierungsmethoden, jedoch haben diese sich bei der Verprobung als weniger vorteilhaft ergeben als der CARP.

Als Grundlage für den CARP wurde unser bereits vorher gebauter CARP verwendet: https://github.com/cloudogu/carp Da dessen Funktionen für Grafana erweitert werden mussten, wurde sich entschieden, diesen nicht als Dependency, sondern als Fork zu verwenden.

Carp lokal starten

Damit der Grafana-Carp lokal debugged werden kann, kann dieser lokal gestartet und an ein lokales Grafana anzubinden. Damit dies funktioniert, muss zuvor ein docker login (Credentials von unserem Harbor) durchgeführt werden, damit die Docker-Images außerhalb des CES heruntergeladen werden können.

Außerdem muss durch das Setzen eines ETCD-Keys und des cas-Neustarts der CAS in den development-Modus gebracht werden: etcdctl set config/_global/stage development; cesapp restart cas

Anschließend kann grafana lokal gebaut und gestartet werden. Das kann mit folgendem Befehl (aus dem Projekt-root-Verzeichnis) erreicht werden: make grafana-local Wenn gewünscht, kann mit dem Befehl make stop-grafana-local das Grafana wieder entfernt werden.

Anschließend kann der Carp lokal gestartet werden mit: cd grafana-carp && go run .

Grafana ist nun lokal erreichbar unter http://localhost:8080

Ports anpassen

Der Carp läuft lokal immer unter dem Port 8080 und das dazu passende lokale Grafana unter dem Port 3000. Sollte es nicht möglich sein, diese Ports zu verwenden, müssen folgende Dateien angepasst werden (siehe Kommentare in den Dateien):

  • Makefile (grafana-local-Target)
  • dev.ini
  • grafana-carp/carp.yml