Introductie van InterSystems API Manager (+ webinar)

We hebben onlangs InterSystems API Manager (IAM) uitgebracht, een nieuw onderdeel van het InterSystems IRIS Data Platform dat zichtbaarheid, controle en beheer biedt van web-API-verkeer binnen de IT-infrastructuur.

In dit artikel laat ik u zien hoe u IAM instelt en demonstreer ik enkele van de vele mogelijkheden die IAM voor u beschikbaar heeft. Met InterSystems API Manager kunt u:

  • Monitor de API, begrijp wie de API gebruikt, welke API's het populairst zijn en welke verbetering behoeven.
  • Bepaal wie de API gebruikt en beperk het API-gebruik, van eenvoudige toegangsbeperkingen tot op verzoeken gebaseerde beperkingen. U heeft controle op maat en kunt snel reageren op veranderende API-consumptiepatronen.
  • Beveilig API's met behulp van gecentraliseerde beveiligingsmechanismen zoals OAuth2.0, LDAP of Key Token Authenticatie.
  • Maak het eenvoudiger voor externe ontwikkelaars en bied hen een superieure API-ervaring door een speciaal ontwikkelaarsportaal te openen.
  • Schaal de API en zorg voor een minimale responslatentie.

API-beheer is essentieel voor de transitie naar SOA- of microservice-architectuur, waardoor de integratie tussen individuele (micro)services wordt vereenvoudigd en beschikbaar wordt gemaakt voor alle externe en interne consumenten. Als gevolg hiervan worden nieuwe API's gemakkelijker te maken, te onderhouden en te gebruiken.

Als u InterSystems IRIS al gebruikt, kunt u de IAM-optie aan uw licentie toevoegen. De IAM-optie is gratis voor InterSystems IRIS-klanten, maar u moet een nieuwe licentiesleutel bij InterSystems aanvragen om IAM te kunnen gebruiken.

Als u InterSystems IRIS nog niet gebruikt en van plan bent InterSystems API Manager te proberen, neem dan contact op met InterSystems.

Aan de slag en installatie

Klanten van InterSystems kunnen de IAM-distributie downloaden van de website WRC sectie “Softwaredistributie” en voer het uit als een Docker-container. Minimale systeemvereisten:

In eerste instantie moet u de Docker-image downloaden (belangrijk! Het archief met WRC is geen Docker-image, u moet het uitpakken, er zit een Docker-image in):

docker load -i iam_image.tar

Met deze opdracht wordt de IAM-image beschikbaar voor later gebruik op uw server. IAM draait als een aparte container, zodat u deze onafhankelijk van InterSystems IRIS kunt schalen. Voor het uitvoeren van IAM is toegang tot InterSystems IRIS vereist om een ​​licentie te downloaden.

InterSystems IRIS instellen:

  • Schakel de webapplicatie in /api/IAM
  • Gebruiker inschakelen IAM
  • Wijzig het gebruikerswachtwoord IAM

Laten we nu de IAM-container starten. In het archief vind je scripts iam-setup voor Windows en Unix (en Mac). Deze scripts helpen u de omgevingsvariabelen correct in te stellen, waardoor de IAM-container een verbinding tot stand kan brengen met InterSystems IRIS. Hier is een voorbeeld van het script dat op Mac draait:

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

Zoals u kunt zien, zijn de volledige imagenaam, het IP-adres, de InterSystems IRIS-poort en het wachtwoord voor de IAM-gebruiker alles wat u nodig heeft om aan de slag te gaan.

In plaats van een script uit te voeren, kunt u de omgevingsvariabelen handmatig instellen:

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

lancering

Laten we nu IAM starten door de opdracht uit te voeren:

docker-compose up -d

Deze opdracht organiseert de IAM-containers en zorgt ervoor dat alles correct verloopt. De status van containers wordt gecontroleerd met behulp van het commando:

docker ps

Open de beheerdersinterface in uw browser localhost:8002.

Introductie van InterSystems API Manager (+ webinar)

Het is voorlopig leeg omdat het een compleet nieuw knooppunt is. Laten we dat veranderen. IAM ondersteunt het concept van werkruimten voor het verdelen van API's in modules en/of opdrachten. Ga naar de "standaard" werkruimte die we voor onze experimenten zullen gebruiken.

Introductie van InterSystems API Manager (+ webinar)

Het aantal aanvragen voor deze werkplek is nog steeds nul, maar in het menu aan de linkerkant krijgt u een idee van de basis IAM-concepten. De eerste twee elementen: Services en Routes zijn het belangrijkst:

  • Service is de API waartoe wij consumenten toegang willen geven. De REST API in InterSystems IRIS is dus een Dienst, net als bijvoorbeeld de Google API als u deze wilt gebruiken.
  • De Route beslist naar welke Dienst inkomende verzoeken moeten worden doorgestuurd. Elke route heeft een specifieke reeks voorwaarden en als hieraan wordt voldaan, wordt het verzoek naar de juiste dienst verzonden. Een route kan bijvoorbeeld overeenkomen met IP, afzenderdomein, HTTP-methoden, delen van een URI of een combinatie van deze voorbeelden.

Dienst

Laten we een InterSystems IRIS-service maken, met de volgende waarden:

Veld
Waarde
beschrijving

naam
iris
Dienstnaam

gastheer
IP
InterSystems IRIS-serverhost of ip

port
52773
InterSystems IRIS-serverwebpoort

pad
/api/atelier
Wortel pad

protocol
http
protocol

Laat de overige waarden standaard staan. Klik op de knop Create en noteer de ID van de gemaakte Service.

Маршрут

Laten we nu een route maken:

Veld
Waarde
beschrijving

pad
/api/atelier
Wortel pad

protocol
http
protocol

service.id
gids vanaf 3
Service (ID uit vorige stap)

Laat de overige waarden standaard staan. Klik op de knop Create en noteer de ID van de gemaakte route. Standaard luistert IAM naar inkomende verzoeken op poort 8000. Nu worden verzoeken verzonden naar http://localhost:8000 en beginnend met /api/atelier worden doorgestuurd naar InterSystems IRIS.

Testen

Laten we proberen een verzoek te maken in een REST-client (ik gebruik Postbode).

Introductie van InterSystems API Manager (+ webinar)

Laten we een GET-verzoek sturen naar http://localhost:8000/api/atelier/ (niet vergeten / aan het einde) en ontvang een antwoord van InterSystems IRIS. Elk verzoek gaat via IAM, dat statistieken verzamelt:

  • HTTP-statuscode.
  • Vertraging.
  • Bewaking (indien geconfigureerd).

Ik heb nog een paar verzoeken gedaan (waaronder twee verzoeken aan niet-bestaande eindpunten zoals /api/atelier/est/), de resultaten zijn direct zichtbaar in het dashboard:

Introductie van InterSystems API Manager (+ webinar)

Werken met plug-ins

Nu we een route hebben geconfigureerd, kunnen we onze API beheren. We kunnen functies toevoegen die onze service aanvullen.

De meest gebruikelijke manier om het gedrag van een API te veranderen, is door een plug-in toe te voegen. Plug-ins isoleren individuele functionaliteit en kunnen zowel globaal als alleen met individuele entiteiten, zoals een Gebruiker (groep gebruikers), Dienst of Route, met IAM worden verbonden. We beginnen met het toevoegen van de Rate Limiting-plug-in aan de route. Om een ​​verbinding tot stand te brengen tussen de plug-in en de route, hebben we een unieke identificatie (ID) van de route nodig.

Beperking van het aantal verzoeken

Klik op Plug-ins in het linkerzijbalkmenu. Op dit scherm kun je alle actieve plug-ins zien, maar omdat deze IAM-server nieuw is, zijn er nog geen actieve plug-ins. Ga dus door naar de volgende stap door op “Nieuwe plug-in” te klikken.

De plug-in die we nodig hebben, bevindt zich in de categorie “Verkeerscontrole” en heet “Rate Limiting”. Selecteer het. Er zijn nogal wat instellingen die je hier kunt instellen, maar het gaat ons slechts om twee velden:

Veld
Waarde
beschrijving

route_id
ID
Route-ID

configuratie.minuut
5
Aantal verzoeken per minuut

Dat is alles. De plug-in is geconfigureerd en actief. Merk op dat we verschillende tijdsintervallen kunnen kiezen, zoals een minuut, een uur of een dag. De instellingen kunnen worden gecombineerd (bijvoorbeeld 1000 verzoeken per uur en tegelijkertijd 100 verzoeken per minuut). Ik heb voor minuten gekozen omdat dit het gemakkelijk maakt om de functionaliteit van de plug-in te controleren.

Als u hetzelfde verzoek opnieuw verzendt in Postman, ziet u dat het antwoord wordt geretourneerd met 2 extra headers:

  • XRateLimit-Limiet-minuut: 5
  • XRateLimit-resterende minuut: 4

Dit vertelt de klant dat hij maximaal 5 verzoeken per minuut kan doen en nog 4 verzoeken kan doen in het huidige tijdslot.

Introductie van InterSystems API Manager (+ webinar)

Als u steeds opnieuw hetzelfde verzoek indient, raakt uw beschikbare quotum uiteindelijk op en ontvangt u in plaats daarvan een HTTP-statuscode van 429 met de volgende antwoordtekst:

Introductie van InterSystems API Manager (+ webinar)

Wacht even en u kunt opnieuw verzoeken indienen.

Dit is een handig mechanisme waarmee u:

  • Bescherm de backend tegen belastingspieken.
  • Vertel klanten hoeveel verzoeken ze kunnen doen.
  • Genereer inkomsten met de API.

U kunt waarden instellen voor verschillende tijdsintervallen en zo het API-verkeer over een bepaalde periode gladstrijken. Stel dat u op een bepaalde route 600 verzoeken per uur toestaat. Gemiddeld zijn er 10 verzoeken per minuut. Maar niets belet de klant om alle 600 verzoeken in de eerste minuut van het uur af te ronden. Misschien is dit wat je nodig hebt. Misschien wilt u in de loop van een uur een gelijkmatigere belasting bereiken. Door de veldwaarde in te stellen config.minute Een waarde van 20 zorgt ervoor dat uw gebruikers niet meer dan 20 verzoeken per minuut en 600 verzoeken per uur doen. Dit zorgt voor kleine pieken met een interval van één minuut vergeleken met een volledig gemiddelde stroom van 10 verzoeken per minuut, maar gebruikers kunnen het quotum per uur gedurende één minuut niet gebruiken. Nu hebben ze minimaal 30 minuten nodig om al hun verzoeken te gebruiken. Klanten ontvangen voor elk opgegeven tijdsinterval extra headers, bijvoorbeeld:

HTTP-header
Waarde

X-RateLimit-Limit-uur
600

X-RateLimit-Resterend uur
595

X-RateLimit-Limiet-minuut
20

X-RateLimit-Resterende minuut
16

Er zijn uiteraard veel verschillende manieren om querylimieten te configureren, afhankelijk van wat u wilt bereiken.

Bevindingen

Ik rond hier af, ik denk dat er genoeg materiaal is voor het eerste artikel over InterSystems API Manager. We hebben slechts één van de meer dan 40 plug-ins gebruikt. Er zijn nog veel meer interessante dingen die u met IAM kunt doen:

  • Voeg een centraal authenticatiemechanisme toe voor al uw API's.
  • Schaal de belasting met behulp van een load balancer over meerdere services.
  • Voeg vóór een volledige update nieuwe functionaliteit en bugfixes toe aan een testpubliek.
  • Bied interne en externe ontwikkelaars een speciaal webportaal waarin alle API's worden gedocumenteerd.
  • Cacheverzoeken om de responstijd te verkorten en de belasting van de systeembackend te verminderen.

referenties

Webinar

Wij nodigen u uit voor het webinar “API Management met InterSystems API Management”, dat zal plaatsvinden op 21 november om 10 uur Moskouse tijd (GMT+00).
InterSystems API Manager (IAM) is een nieuw onderdeel van het InterSystems IRIS Data Platform dat zorgt voor monitoring, controle en beheer van verkeer van/naar web-API's binnen de IT-infrastructuur. Tijdens het webinar demonstreren we de belangrijkste mogelijkheden van InterSystems API Management:

  • Tools voor monitoring van API-verkeer.
  • API-verkeerscontroles, inclusief bandbreedtecontrole, beperking van het aantal API-aanroepen, bijhouden van lijsten met toegestane en geweigerde lijsten met IP-adressen, enz.
  • Configuratietools voor API-beveiliging.
  • Ontwikkelaarsportaal voor het publiceren van interactieve API-documentatie.
  • Eén toegangspunt tot de API.

Het webinar is bedoeld voor architecten, ontwikkelaars en systeembeheerders.

Registratie is vereist!

Bron: www.habr.com

Voeg een reactie