Zum Hauptinhalt springen

ELK

Übersicht von casdoor/elk-auth-casdoor

Einer der größten Nachteile von ELK (Elasticsearch, Logstash und Kibana) ist, dass diese Produkte ursprünglich keinen Authentifizierungsmechanismus hatten. Infolgedessen konnte jeder mit der URL von Kibana oder Elasticsearch auf das Kibana-Dashboard zugreifen. Später integrierte ELK ein eingebettetes Authentifizierungssystem namens "Xpack". Jedoch sind seine fortgeschrittenen Funktionen (wie OAuth, OIDC, LDAP, SAML) nicht kostenlos. Nur die einfache Authentifizierung mit einem Satz von Konten und Passwörtern ist kostenlos verfügbar, was ziemlich unpraktisch ist. Dieser Ansatz erlaubt es uns nicht, jedem in einem Unternehmen ein einzigartiges Konto zur Verfügung zu stellen.

Um dieses Problem zu lösen, haben wir eine ELK-Authentifizierungslösung basierend auf Casdoor entwickelt. Diese Lösung ist kostenlos, Open-Source, wird laufend gewartet und unterstützt eine breite Palette von fortgeschrittenen Funktionen. Casdoor ist eine zentralisierte Authentifizierung/Single-Sign-On-Plattform basierend auf OAuth 2.0/OIDC. Casdoor/elk-auth-casdoor dient als Reverse-Proxy, der entwickelt wurde, um den gesamten HTTP-Datenfluss in Richtung des ELK/Kibana-Stacks abzufangen. Er leitet Benutzer, die nicht eingeloggt sind, zum Einloggen an. Dieser Reverse-Proxy arbeitet transparent, solange der Benutzer eingeloggt ist.

Wenn ein Benutzer nicht korrekt authentifiziert wurde, wird die Anfrage vorübergehend zwischengespeichert und der Benutzer wird zur Casdoor-Anmeldeseite umgeleitet. Sobald der Benutzer sich über Casdoor einloggt, wird die zwischengespeicherte Anfrage wiederhergestellt und an Kibana gesendet. Daher muss der Benutzer, wenn eine POST-Anfrage (oder ein anderer Anfragetyp außer GET) abgefangen wird, das Formular nicht erneut ausfüllen und die Anfrage erneut senden. Der Reverse-Proxy wird sich das für Sie merken.

Das Repository casdoor/elk-auth-casdoor befindet sich unter https://github.com/casdoor/elk-auth-casdoor.

Wie führt man es aus?

  1. Stellen Sie sicher, dass Sie die Go-Programmiersprachenumgebung installiert haben.

  2. Gehen Sie zu casdoor/elk-auth-casdoor und holen Sie sich den Code.

  3. Registrieren Sie Ihren Proxy als App bei Casdoor.

  4. Ändern Sie die Konfiguration.

    Die Konfigurationsdatei befindet sich unter "conf/app.conf". Hier ist ein Beispiel, das Sie basierend auf Ihren spezifischen Bedürfnissen anpassen sollten.

    appname = .
    # port on which the reverse proxy shall be run
    httpport = 8080
    runmode = dev
    # EDIT IT IF NECESSARY. The URL of this reverse proxy.
    pluginEndpoint = "http://localhost:8080"
    # EDIT IT IF NECESSARY. The URL of the Kibana.
    targetEndpoint = "http://localhost:5601"
    # EDIT IT. The URL of Casdoor.
    casdoorEndpoint = "http://localhost:8000"
    # EDIT IT. The clientID of your reverse proxy in Casdoor.
    clientID = ceb6eb261ab20174548d
    # EDIT IT. The clientSecret of your reverse proxy in Casdoor.
    clientSecret = af928f0ef1abc1b1195ca58e0e609e9001e134f4
    # EDIT IT. The application name of your reverse proxy in Casdoor.
    appName = ELKProxy
    # EDIT IT. The organization to which your reverse proxy belongs in Casdoor.
    organization = built-in
  5. Besuchen Sie http://localhost:8080 (im obigen Beispiel) und loggen Sie sich gemäß der Umleitungsanleitung ein. Sie sollten dann Kibana sehen, das durch Casdoor geschützt und authentifiziert ist.

  6. Wenn alles gut funktioniert, vergessen Sie nicht, den externen Zugriff auf den ursprünglichen Kibana-Port zu blockieren, indem Sie Ihre Firewall (oder eine andere Methode) konfigurieren. Dies stellt sicher, dass Außenstehende nur über diesen Reverse-Proxy auf Kibana zugreifen können.