Zum Visualisieren von Metriken gehört Grafana für mich zu den Top Werkzeugen. In einem grösseren Umfeld kann die Benutzerverwaltung jedoch schnell aufwändig werden und es bietet sich meistens die Möglichkeit einen bereits vorhandenen Identity Provider zu verwenden der die zentrale Benutzer Verwaltung zur Verfügung stellt. Als etablierte Enterprise Web Anwendung verfügt Grafana über Authentifizierungs Möglichkeiten via LDAP, OpenId Connect, SAML und weitere. In einer Cloud orientierten Welt ist natürlich eine Federations basierte Authentifizierung sehr willkommen, weshalb ich die Konfiguration mit ADFS und OpenId Connect beschreibe.
Konfiguration ADFS
Als erstes wird eine neue Application Group
hinzugefügt. Dazu kann die Vorlage Server application accessing a web API
verwendet werden
Die Client Id muss für die Grafana Konfiguration kopiert und bei den Redirect URIs muss die öffentliche Adresse der Grafana Instanz eingetragen werden.
Den Haken bei Generate shared secret
setzten und den erzeugten Schlüssel ebenfalls kopieren. Dieser Schlüssel wird einmalig angezeigt und danach nie wieder. Es kann aber jederzeit ein neuer erstellt werden, dabei muss allerdings auch die Grafana Konfiguration mit dem neuen Schlüssel aktualisiert werden.
Bei Identifier wird der vorher notierte Client Identifier eingetragen.
Als Access Control Policy verwende ich die 2 Faktor Authentisierung. Diese habe ich mit einem Yubikey als 2. Faktor eingerichtet (dazu erstelle ich ebenfalls einen Artikel, wie ein MFA Adapter in ADFS hinzugefügt werden kann).
Als Scope wird openid
ausgewählt
Konfiguration Grafana
Grafana wird über eine .ini Datei konfiguriert. Im folgenden Abschnitt sind die Einstellungen aufgelistet, welche für die OpenId Connect Authentisierung via ADFS relevant sind. Die entsprechenden URL Endpoints können über die ADFS Metadaten abgefragt werden.
|
|
|
|
Beim Anmelden wird jedoch dieser Fehler erscheinen.
Der Grund ist, dass in meiner Domäne der UPN folgendermassen zusammengesetzt ist: @labirbech. Ich möchte jedoch, dass der Benutzername der Email Adresse entspricht, was in meinem Fall @irbech wäre.
Dazu wird in ADFS das Scope allatclaims
aktiviert, welches die Access Claims in dem Identitäts Token mitliefert und somit ein custom id_token ermöglicht. Zudem muss eine Claim Regel erstellt werden, welche die Email Adresse dem Token mitgibt.
Der Autologin klappt, nachdem ich mich beim ADFS Server angmeldet habe. Allerdings hat mein Benutzer nur die Grafana Viewer
Rolle. Hier bietet es sich ebenfalls an, die Rollenzuweisung via Gruppen im Active Directory zu steuern.
Dazu erstelle ich im Active Directory 2 Gruppen Z-Grafana-Admin und Z-Grafana-Editor und füge meinen Benutzeraccount der Admin Gruppe hinzu. Auf dem ADFS Server in den Claims Rules erstelle ich 2 Regeln, welche dem Claim das Attribut Role, basierend auf der Gruppenzugehörigkeit, auf Admin oder Editor setzten.
In der grafana.ini wird die Konfiguration folgendermassen ergänzt
|
|
So kann die Rollenzuweisung mit einer Gruppenzuweisung im Active Directory erfolgen