Blog

OpenResty-Autorisierung gegenüber ELK-APIs mit LUA

Bild von Yoan Spasov
Yoan Spasov
DevOps- und Cloud-Ingenieur
26.01.2023
Lesezeit: 4 Minuten.
Zuletzt aktualisiert am: 04.03.2025

Inhaltsübersicht

Was ist Openresty?

OpenResty ist der fünftmeistgenutzte Webserver weltweit. Es handelt sich um eine Obermenge des NGINX-Webservers, die mit LuaJIT, einem Compiler für die Skriptsprache LUA, gebündelt ist. Einer der Hauptvorteile von OpenResty ist die hohe Effizienz in Bezug auf die CPU- und Speichernutzung. OpenResty zeichnet sich dadurch aus, dass es eine große Anzahl von Anfragen mit sehr geringer CPU-Auslastung und hoher E/A bewältigt. Auf der anderen Seite wird die Speichereffizienz hauptsächlich dadurch erreicht, dass die Anwendung im Vergleich zu Apache oder einem typischen JVM-basierten Webserver keinen Prozess oder Thread pro Anfrageverbindung aufspaltet. NGINX hat einige Einschränkungen, wie z.B. die Unfähigkeit, logische Operatoren zu verwenden oder eigene Logik zu schreiben. LUA ermöglicht es uns, diese Einschränkungen zu umgehen. Es ist bekannt für seine Geschwindigkeit und die Tatsache, dass es wenig Anforderungen an das System stellt.

Wie kann man eine Autorisierung für APIs mit einer LUA-Datei erstellen?

In unserem Beispiel verwenden wir OpenResty als Frontend für die Elasticseach APIs. Wenn Sie möchten, dass sich verschiedene Benutzer gegenüber diesen APIs mit einem einfachen Benutzernamen/Passwort authentifizieren, können Sie dies in der Hauptkonfigurationsdatei von OpenResty - nginx.conf - so einstellen

location / {
  auth_basic "Elasticsearch Secured API";
  auth_basic_user_file passwords;
 
  access_by_lua_file 'conf/authorize.lua';

Dadurch können wir die Berechtigungen für die verschiedenen Benutzer in einer separaten Datei granular auflisten. Der einfachste Weg, die erforderlichen Berechtigungen für einen bestimmten Benutzer zu schreiben, d. h. welche Art von Anfragen (HEAD, GET, POST usw.) der Benutzer an die Elasticsearch-APIs stellen kann, ist über Kibana. Wenn Sie die Advanced Kibana WEB UI öffnen und auf "Dev Tools" klicken, können Sie Anfragen an verschiedene von Elastic bereitgestellte APIs stellen. Ein Beispiel ist unten zu sehen:

GET /_cat/indices
GET /_cat/nodes
GET /_cat/shards
GET /_nodes
GET /_nodes/process
GET /_nodes/stats/os,process
GET /_cluster/health?level=shards&pretty

Die oben genannten APIs sind die zwischen den ersten beiden Schrägstrichen, "_cat", "_nodes", "_cluster". Wir können genau festlegen, welche Art von Anfragen ein bestimmter Benutzer an die APIs stellen darf, mit denen er/sie arbeiten soll. Wir können so detailliert sein, wie wir wollen. Werfen wir einen Blick auf den Inhalt der folgenden Datei authorize.lua:

test_user = {
  ["/_cat/health"]                            = { "GET" }
  ["/_nodes"]                                 = { "GET" },
  ["/_nodes/http"]                            = { "GET" },
  ["/_cat/aliases/*"]                         = { "GET" },
  ["/*/_search"]                              = { "GET", "POST" },
  ["/_search/scroll"]                         = { "GET", "POST", "DELETE" }
}

Die ersten drei Berechtigungen geben die genauen Anfragen an, die unser test_user stellen darf. Die Ergebnisse werden dieselben sein, als ob wir (die Administratoren) dieselben in Kibana selbst ausführen würden. In der vierten Zeile wird OpenResty mitgeteilt, dass der Benutzer alle Aliase für alle Indizes anzeigen darf. Die fünfte Zeile gibt die Berechtigung, sowohl GET- als auch POST-Suchanfragen gegen oder an jedes Ziel in ELK zu stellen. Die letzten aufgeführten Berechtigungen erlauben dem mit seinem Benutzernamen und Passwort authentifizierten Benutzer, drei Arten von Anfragen an die Elasticsearch "_search" API zu stellen: GET, POST und DELETE. Sie können so viele Benutzer und Berechtigungen für jeden dieser Typen auflisten, wie Sie möchten. Diese Funktionalität, die LUA hinzufügt, ist sehr nützlich für die Verwaltung von Berechtigungen.

Fazit

Die Verwendung einer LUA-Datei für die Autorisierung von APIs kann eine flexible und anpassbare Lösung für die Verwaltung des Zugriffs auf eine API darstellen. Einige Gründe, warum man sich für die Verwendung eines LUA-Skripts für die API-Autorisierung entscheiden könnte, sind:

  • Dynamische Autorisierung: Ein LUA-Skript kann verwendet werden, um Autorisierungsentscheidungen auf der Grundlage von Laufzeitbedingungen zu treffen, z. B. der Rolle des Benutzers oder der aktuellen Tageszeit.
  • Feinkörnige Kontrolle: Es kann zur Implementierung komplexer Autorisierungsregeln verwendet werden, die über einfache Erlaubnis-/Verweigerungsentscheidungen hinausgehen.
  • Wiederverwendbarer Code: Er kann über mehrere APIs oder Anwendungen hinweg wiederverwendet werden, was die Verwaltung und Pflege der Autorisierungslogik erleichtert.
  • Leichtere Wartung: LUA-Dateien können leicht bearbeitet und gewartet werden, was für die Aktualisierung der Berechtigungsregeln oder das Hinzufügen neuer Regeln nützlich ist.
  • Kompatibilität: Je nach API-Gateway können LUA-Skripte darauf ausgeführt werden, so dass es in der bestehenden Infrastruktur verwendet werden kann.

LUA ist eine großartige Option und die Wahl hängt vom jeweiligen Anwendungsfall, der Infrastruktur und den technischen Fähigkeiten des Teams ab.

Lesen Sie mehr von ITGix's Experteninhalten

Sie suchen einen DevOps-Dienstleister das nachweislich erfolgreiche Projekte in Ihrer Branche durchgeführt hat? Dann suchen Sie nicht weiter! Unser Fallstudien bieten Ihnen einen detaillierten Einblick in die verschiedenen Projekte, die wir für unsere Kunden durchgeführt haben, und zeigen Ihnen unser Fachwissen und unsere Erfahrung.

Von komplexen technischen Implementierungen bis hin zu optimierten Geschäftsprozessen - unsere Fallstudien zeigen, dass wir in der Lage sind, die individuellen Bedürfnisse unserer Kunden zu verstehen und maßgeschneiderte Lösungen zu liefern, die diese Bedürfnisse erfüllen. Sie werden sehen, wie wir Unternehmen wie dem Ihren geholfen haben, die Effizienz zu verbessern, Kosten zu senken und den Umsatz zu steigern.

Eine Antwort hinterlassen

Newsletter für Tech-Experten

Signal, kein Rauschen –

direkt in Ihren Posteingang.

Schließen Sie sich mehr als 12.000 Ingenieuren und Führungskräften aus der Wirtschaft an, die Praxisberichte zu SRE, DevOps und Cloud-nativer Zuverlässigkeit erhalten.

Tech-Blogs mit tiefgehenden Einblicken und Fallstudien
Neue Technologien, sorgfältig ausgewählt

Ihre geschäftliche E-Mail-Adresse

Wir gehen respektvoll mit Ihrem Posteingang um. Lesen Sie unsere Datenschutzerklärung.

Mehr Beiträge

Die sichere Verwaltung von Geheimnissen in Kubernetes stellt eine entscheidende Herausforderung für moderne Cloud-native Umgebungen dar. Anmeldedaten für Anwendungen, Zertifikate, private Schlüssel und Passwörter müssen auf sichere und nachverfolgbare Weise verwaltet werden, ...
Lesen
Da die Verbreitung von IPv6 weiter zunimmt, benötigen Unternehmen, die Workloads auf AWS ausführen, zunehmend Netzwerkarchitekturen, die sowohl IPv4- als auch IPv6-Datenverkehr unterstützen. AWS bietet zwar native IPv6-Funktionen, doch die Integration...
Lesen
Kontakt aufnehmen
ITGix bietet Ihnen fachkundige Beratung und maßgeschneiderte DevOps-Services, um Ihr Unternehmenswachstum zu beschleunigen.
Newsletter für
Technik-Experten
Schließen Sie sich 12.000+ Geschäftsführern und Ingenieuren an, die Blogs, e-Books und Fallstudien Fallstudien über neue Technologie erhalten.