Einführung in InterSystems API Manager (+ Webinar)

Wir haben kürzlich InterSystems API Manager (IAM) veröffentlicht, eine neue Komponente der InterSystems IRIS Data Platform, die Transparenz, Kontrolle und Verwaltung des Web-API-Verkehrs in der gesamten IT-Infrastruktur bietet.

In diesem Artikel zeige ich Ihnen, wie Sie IAM einrichten und einige der vielen Funktionen demonstrieren, die Ihnen mit IAM zur Verfügung stehen. Mit InterSystems API Manager können Sie:

  • Überwachen Sie die API und verstehen Sie, wer die API verwendet, welche APIs am beliebtesten sind und welche verbessert werden müssen.
  • Kontrollieren Sie, wer die API nutzt, und beschränken Sie die API-Nutzung von einfachen Zugriffsbeschränkungen bis hin zu anforderungsbasierten Einschränkungen – Sie haben eine individuelle Kontrolle und können schnell auf sich ändernde API-Verbrauchsmuster reagieren.
  • Sichere APIs mithilfe zentralisierter Sicherheitsmechanismen wie OAuth2.0, LDAP oder Key Token Authentication.
  • Erleichtern Sie Drittentwicklern die Arbeit und bieten Sie ihnen ein erstklassiges API-Erlebnis, indem Sie ein spezielles Entwicklerportal eröffnen.
  • Skalieren Sie die API und stellen Sie eine minimale Antwortlatenz sicher.

API-Management ist für den Übergang zur SOA- oder Microservice-Architektur unerlässlich, da es die Integration zwischen einzelnen (Micro-)Services vereinfacht und sie allen externen und internen Verbrauchern zur Verfügung stellt. Dadurch lassen sich neue APIs einfacher erstellen, warten und nutzen.

Wenn Sie bereits InterSystems IRIS nutzen, können Sie die IAM-Option zu Ihrer Lizenz hinzufügen. Die IAM-Option ist für InterSystems IRIS-Kunden kostenlos, Sie müssen jedoch einen neuen Lizenzschlüssel bei InterSystems anfordern, um mit der Nutzung von IAM beginnen zu können.

Wenn Sie InterSystems IRIS noch nicht verwenden und planen, InterSystems API Manager auszuprobieren, wenden Sie sich bitte an InterSystems.

Erste Schritte und Installation

InterSystems-Kunden können die IAM-Distribution von der Website herunterladen WRC Abschnitt „Softwareverteilung“ herunterladen und als Docker-Container ausführen. Minimale Systemvoraussetzungen:

Zunächst müssen Sie das Docker-Image herunterladen (Wichtig! Das Archiv mit WRC ist kein Docker-Image, Sie müssen es entpacken, es enthält ein Docker-Image):

docker load -i iam_image.tar

Mit diesem Befehl wird das IAM-Image für die spätere Verwendung auf Ihrem Server verfügbar gemacht. IAM läuft als separater Container, sodass Sie es unabhängig von InterSystems IRIS skalieren können. Für die Ausführung von IAM ist Zugriff auf InterSystems IRIS erforderlich, um eine Lizenz herunterzuladen.

InterSystems IRIS einrichten:

  • Aktivieren Sie die Webanwendung /api/IAM
  • Benutzer aktivieren IAM
  • Benutzerpasswort ändern IAM

Nun starten wir den IAM-Container. Im Archiv finden Sie Skripte iam-setup für Windows und Unix (und Mac). Diese Skripte helfen Ihnen dabei, die Umgebungsvariablen korrekt festzulegen, sodass der IAM-Container eine Verbindung mit InterSystems IRIS herstellen kann. Hier ist ein Beispiel für das Skript, das auf einem Mac ausgeführt wird:

source ./iam-setup.sh 
Welcome to the InterSystems IRIS and InterSystems API Manager (IAM) setup script.
This script sets the ISC_IRIS_URL environment variable that is used by the IAM container to get the IAM license key from InterSystems IRIS.
Enter the full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
Enter the IP address for your InterSystems IRIS instance. The IP address has to be accessible from within the IAM container, therefore, do not use "localhost" or "127.0.0.1" if IRIS is running on your local machine. Instead use the public IP address of your local machine. If IRIS is running in a container, use the public IP address of the host environment, not the IP address of the IRIS container. xxx.xxx.xxx.xxx               
Enter the web server port for your InterSystems IRIS instance: 52773
Enter the password for the IAM user for your InterSystems IRIS instance: 
Re-enter your password: 
Your inputs are:
Full image repository, name and tag for your IAM docker image: intersystems/iam:0.34-1-1
IP address for your InterSystems IRIS instance: xxx.xxx.xxx.xxx
Web server port for your InterSystems IRIS instance: 52773
Would you like to continue with these inputs (y/n)? y
Getting IAM license using your inputs...
Successfully got IAM license!
The ISC_IRIS_URL environment variable was set to: http://IAM:****************@xxx.xxx.xxx.xxx:52773/api/iam/license
WARNING: The environment variable is set for this shell only!
To start the services, run the following command in the top level directory: docker-compose up -d
To stop the services, run the following command in the top level directory: docker-compose down
URL for the IAM Manager portal: http://localhost:8002

Wie Sie sehen, sind für den Einstieg lediglich der vollständige Imagename, die IP-Adresse, der InterSystems IRIS-Port und das Passwort für den IAM-Benutzer erforderlich.

Anstatt ein Skript auszuführen, können Sie Umgebungsvariablen manuell festlegen:

ISC_IAM_IMAGE=intersystems/iam:0.34-1-1
ISC_IRIS_URL=http://IAM:<PASS>@<IP>:<PORT>/api/iam/license

Starten

Jetzt starten wir IAM, indem wir den folgenden Befehl ausführen:

docker-compose up -d

Dieser Befehl organisiert die IAM-Container und stellt sicher, dass alles ordnungsgemäß läuft. Der Status von Containern wird mit dem Befehl überprüft:

docker ps

Öffnen Sie die Admin-Oberfläche in Ihrem Browser localhost:8002.

Einführung in InterSystems API Manager (+ Webinar)

Es ist vorerst leer, da es sich um einen völlig neuen Knoten handelt. Lasst uns das ändern. IAM unterstützt das Konzept von Arbeitsbereichen zur Aufteilung von APIs in Module und/oder Befehle. Gehen Sie zum „Standard“-Arbeitsbereich, den wir für unsere Experimente verwenden werden.

Einführung in InterSystems API Manager (+ Webinar)

Die Anzahl der Anfragen für diesen Arbeitsbereich liegt noch bei Null, Sie erhalten jedoch im Menü links einen Einblick in die grundlegenden IAM-Konzepte. Die ersten beiden Elemente: Dienste und Routen sind die wichtigsten:

  • Service ist die API, auf die wir Verbrauchern Zugriff gewähren möchten. Somit ist die REST-API in InterSystems IRIS ein Service, ebenso wie beispielsweise die Google-API, wenn Sie diese nutzen möchten.
  • Die Route entscheidet, an welchen Dienst eingehende Anfragen weitergeleitet werden sollen. Für jede Route gelten bestimmte Bedingungen. Wenn diese erfüllt sind, wird die Anfrage an den entsprechenden Dienst gesendet. Beispielsweise kann eine Route mit IP, Absenderdomäne, HTTP-Methoden, Teilen eines URI oder einer Kombination dieser Beispiele übereinstimmen.

Service

Erstellen wir einen InterSystems IRIS-Dienst mit den folgenden Werten:

Feld
Wert
Beschreibung

Name
Iris
Dienstname

Gastgeber
IP
Host oder IP des InterSystems IRIS-Servers

port
52773
InterSystems IRIS-Server-Webport

Weg
/api/atelier
Root-Pfad

Protokoll
http
Protokoll

Belassen Sie die restlichen Werte als Standardwerte. Drück den Knopf Create und notieren Sie die ID des erstellten Dienstes.

Strecke

Jetzt erstellen wir eine Route:

Feld
Wert
Beschreibung

Weg
/api/atelier
Root-Pfad

Protokoll
http
Protokoll

service.id
Leitfaden ab 3
Dienst (ID aus vorherigem Schritt)

Belassen Sie die restlichen Werte als Standardwerte. Drück den Knopf Create und notieren Sie die ID der erstellten Route. Standardmäßig lauscht IAM auf eingehende Anfragen an Port 8000. Jetzt werden Anfragen an gesendet http://localhost:8000 und beginnend mit /api/atelier werden an InterSystems IRIS weitergeleitet.

Testing

Versuchen wir, eine Anfrage in einem REST-Client zu erstellen (ich verwende Postman).

Einführung in InterSystems API Manager (+ Webinar)

Senden wir eine GET-Anfrage an http://localhost:8000/api/atelier/ (vergessen Sie nicht / am Ende) und erhalten Sie eine Antwort von InterSystems IRIS. Jede Anfrage durchläuft IAM, das Metriken sammelt:

  • HTTP-Statuscode.
  • Verzögerung
  • Überwachung (falls konfiguriert).

Ich habe noch ein paar weitere Anfragen gestellt (darunter zwei Anfragen an nicht vorhandene Endpunkte wie /api/atelier/est/), die Ergebnisse sind sofort im Dashboard sichtbar:

Einführung in InterSystems API Manager (+ Webinar)

Arbeiten mit Plugins

Nachdem wir nun eine Route konfiguriert haben, können wir unsere API verwalten. Wir können Funktionen hinzufügen, die unseren Service ergänzen.

Die häufigste Methode, das Verhalten einer API zu ändern, ist das Hinzufügen eines Plugins. Plugins isolieren einzelne Funktionen und können entweder global oder nur mit einzelnen Entitäten, wie einem Benutzer (Benutzergruppe), einem Dienst oder einer Route, mit IAM verbunden werden. Wir beginnen mit dem Hinzufügen des Rate Limiting-Plugins zur Route. Um eine Verbindung zwischen dem Plugin und der Route herzustellen, benötigen wir eine eindeutige Kennung (ID) der Route.

Begrenzung der Anzahl der Anfragen

Klicken Sie im linken Seitenleistenmenü auf Plugins. Auf diesem Bildschirm können Sie alle aktiven Plugins sehen, aber da dieser IAM-Server neu ist, gibt es noch keine aktiven Plugins. Fahren Sie also mit dem nächsten Schritt fort, indem Sie auf „Neues Plugin“ klicken.

Das von uns benötigte Plugin liegt in der Kategorie „Traffic Control“ und heißt „Rate Limiting“. Wählen Sie es aus. Es gibt eine ganze Reihe von Einstellungen, die Sie hier vornehmen können, aber wir kümmern uns nur um zwei Felder:

Feld
Wert
Beschreibung

route_id
ID
Routen-ID

config.minute
5
Anzahl der Anfragen pro Minute

Das ist alles. Das Plugin ist konfiguriert und aktiv. Beachten Sie, dass wir verschiedene Zeitintervalle auswählen können, beispielsweise eine Minute, eine Stunde oder einen Tag. Die Einstellungen können kombiniert werden (z. B. 1000 Anfragen pro Stunde und gleichzeitig 100 Anfragen pro Minute). Ich habe mich für Minuten entschieden, weil es so einfacher ist, die Funktionalität des Plugins zu überprüfen.

Wenn Sie dieselbe Anfrage in Postman erneut senden, werden Sie sehen, dass die Antwort mit zwei zusätzlichen Headern zurückgegeben wird:

  • XRateLimit-Limit-Minute: 5
  • XRateLimit-Remaining-minute: 4

Dadurch wird dem Client mitgeteilt, dass er bis zu 5 Anfragen pro Minute und im aktuellen Zeitfenster 4 weitere Anfragen stellen kann.

Einführung in InterSystems API Manager (+ Webinar)

Wenn Sie dieselbe Anfrage immer wieder stellen, wird Ihnen irgendwann das verfügbare Kontingent ausgehen und Sie erhalten stattdessen den HTTP-Statuscode 429 mit dem folgenden Antworttext:

Einführung in InterSystems API Manager (+ Webinar)

Warten Sie einen Moment, dann können Sie wieder Anfragen einreichen.

Dies ist ein praktischer Mechanismus, der Ihnen Folgendes ermöglicht:

  • Schützen Sie das Backend vor Lastspitzen.
  • Teilen Sie Ihren Kunden mit, wie viele Anfragen sie stellen können.
  • Monetarisieren Sie die API.

Sie können Werte für unterschiedliche Zeitintervalle festlegen und so den API-Verkehr über einen bestimmten Zeitraum glätten. Nehmen wir an, Sie erlauben 600 Anfragen pro Stunde auf einer bestimmten Route. Im Durchschnitt gibt es 10 Anfragen pro Minute. Aber nichts hindert den Kunden daran, alle 600 Anfragen in der ersten Minute der Stunde zu erledigen. Vielleicht ist es das, was Sie brauchen. Möglicherweise möchten Sie im Laufe einer Stunde eine gleichmäßigere Belastung erreichen. Durch Festlegen des Feldwerts config.minute Ein Wert von 20 stellt sicher, dass Ihre Benutzer nicht mehr als 20 Anfragen pro Minute und 600 Anfragen pro Stunde stellen. Dies ermöglicht kleine Spitzen in einem Minutenintervall im Vergleich zu einem vollständig gemittelten Fluss von 10 Anfragen pro Minute, aber Benutzer können das Stundenkontingent nicht eine Minute lang nutzen. Jetzt benötigen sie mindestens 30 Minuten, um alle ihre Anfragen zu nutzen. Clients erhalten für jedes angegebene Zeitintervall zusätzliche Header, zum Beispiel:

HTTP-Header
Wert

X-RateLimit-Limit-Stunde
600

X-RateLimit-Remaining-hour
595

X-RateLimit-Limit-Minute
20

X-RateLimit-Remaining-minute
16

Natürlich gibt es viele verschiedene Möglichkeiten, Abfragelimits zu konfigurieren, je nachdem, was Sie erreichen möchten.

Befund

Ich komme hier zum Schluss, ich denke, es gibt genug Material für den ersten Artikel über InterSystems API Manager. Wir haben nur eines von über 40 Plugins verwendet. Es gibt noch viele weitere interessante Dinge, die Sie mit IAM tun können:

  • Fügen Sie einen zentralen Authentifizierungsmechanismus für alle Ihre APIs hinzu.
  • Skalieren Sie die Last mithilfe eines Load Balancers über mehrere Dienste hinweg.
  • Fügen Sie vor einem vollständigen Update einer Testgruppe neue Funktionen und Fehlerbehebungen hinzu.
  • Stellen Sie internen und externen Entwicklern ein dediziertes Webportal zur Verfügung, das alle APIs dokumentiert.
  • Cache-Anfragen, um die Antwortzeit zu verkürzen und die Belastung des System-Backends zu verringern.

Referenzen

Webinar

Wir laden Sie zum Webinar „API-Management mit InterSystems API Management“ ein, das am 21. November um 10:00 Uhr Moskauer Zeit (GMT+3) stattfindet.
InterSystems API Manager (IAM) ist eine neue Komponente der InterSystems IRIS Data Platform, die die Überwachung, Steuerung und Verwaltung des Datenverkehrs zu/von Web-APIs innerhalb der IT-Infrastruktur ermöglicht. Im Webinar demonstrieren wir die wichtigsten Fähigkeiten von InterSystems API Management:

  • Tools zur Überwachung des API-Verkehrs.
  • API-Verkehrskontrollen, einschließlich Bandbreitenkontrolle, Begrenzung der Anzahl von API-Aufrufen, Verwaltung von Listen erlaubter und verweigerter IP-Adressen usw.
  • Tools zur API-Sicherheitskonfiguration.
  • Entwicklerportal zur Veröffentlichung interaktiver API-Dokumentation.
  • Zentraler Zugriffspunkt auf die API.

Das Webinar richtet sich an Architekten, Entwickler und Systemadministratoren.

Eine Anmeldung ist erforderlich!

Source: habr.com

Kommentar hinzufügen