Introduktion til InterSystems API Manager (+ webinar)

Vi har for nylig frigivet InterSystems API Manager (IAM), en ny komponent i InterSystems IRIS Data Platform, der giver synlighed, kontrol og styring af web API-trafik på tværs af IT-infrastrukturen.

I denne artikel viser jeg dig, hvordan du konfigurerer IAM og demonstrerer nogle af de mange muligheder, der er tilgængelige for dig med IAM. InterSystems API Manager giver dig mulighed for at:

  • Overvåg API'en, forstå, hvem der bruger API'en, hvilke API'er der er de mest populære, og hvilke der kræver forbedring.
  • Kontroller, hvem der bruger API'et, og begræns API-brug fra simple adgangsbegrænsninger til anmodningsbaserede begrænsninger - du har tilpasset kontrol og kan hurtigt reagere på skiftende API-forbrugsmønstre.
  • Sikre API'er ved hjælp af centraliserede sikkerhedsmekanismer såsom OAuth2.0, LDAP eller Key Token Authentication.
  • Gør det nemmere for tredjepartsudviklere og giv dem en overlegen API-oplevelse ved at åbne en dedikeret udviklerportal.
  • Skaler API'en og sørg for minimal responsforsinkelse.

API-styring er essentiel for overgangen til SOA eller mikroservicearkitektur, hvilket forenkler integrationen mellem individuelle (mikro)tjenester og gør dem tilgængelige for alle eksterne og interne forbrugere. Som et resultat bliver nye API'er nemmere at oprette, vedligeholde og forbruge.

Hvis du allerede bruger InterSystems IRIS, kan du tilføje IAM-muligheden til din licens. IAM-muligheden er gratis for InterSystems IRIS-kunder, men du skal anmode om en ny licensnøgle fra InterSystems for at begynde at bruge IAM.

Hvis du endnu ikke bruger InterSystems IRIS og planlægger at prøve InterSystems API Manager, bedes du kontakte InterSystems.

Kom godt i gang og installation

InterSystems-kunder kan downloade IAM-distributionen fra hjemmesiden WRC afsnittet "Softwaredistribution" og køre som en Docker-container. Minimum systemkrav:

I første omgang skal du downloade Docker-billedet (Vigtigt! Arkivet med WRC er ikke et Docker-billede, du skal pakke det ud, der er et Docker-billede indeni):

docker load -i iam_image.tar

Denne kommando vil gøre IAM-billedet tilgængeligt til senere brug på din server. IAM kører som en separat container, så du kan skalere den uafhængigt af InterSystems IRIS. Kørsel af IAM kræver adgang til InterSystems IRIS for at downloade en licens.

Konfigurer InterSystems IRIS:

  • Aktiver webapplikationen /api/IAM
  • Aktiver bruger IAM
  • Skift brugeradgangskode IAM

Lad os nu starte IAM-beholderen. I arkivet finder du scripts iam-setup til Windows og Unix (og Mac). Disse scripts hjælper dig med at indstille miljøvariablerne korrekt, så IAM-beholderen kan etablere en forbindelse med InterSystems IRIS. Her er et eksempel på scriptet, der kører på Mac:

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

Som du kan se, er det fulde billednavn, IP-adresse, InterSystems IRIS-port og adgangskode til IAM-brugeren alt, du behøver for at komme i gang.

I stedet for at køre et script, kan du indstille miljøvariabler manuelt:

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

Запуск

Lad os nu starte IAM ved at køre kommandoen:

docker-compose up -d

Denne kommando organiserer IAM-beholderne og sikrer, at alt kører korrekt. Status for containere kontrolleres ved hjælp af kommandoen:

docker ps

Åbn admin-grænsefladen i din browser localhost:8002.

Introduktion til InterSystems API Manager (+ webinar)

Det er tomt for nu, fordi det er en helt ny node. Lad os ændre det. IAM understøtter konceptet med arbejdsrum til at opdele API'er i moduler og/eller kommandoer. Gå til "standard" arbejdsområdet, som vi vil bruge til vores eksperimenter.

Introduktion til InterSystems API Manager (+ webinar)

Antallet af anmodninger for dette arbejdsområde er stadig nul, men du vil få en idé om de grundlæggende IAM-koncepter i menuen til venstre. De to første elementer: Tjenester og ruter er de vigtigste:

  • Service er den API, som vi ønsker at give forbrugerne adgang til. REST API'et i InterSystems IRIS er således en Service, ligesom det for eksempel er Google API, hvis du ønsker at bruge det.
  • Ruten bestemmer, til hvilken tjeneste indkommende anmodninger skal videresendes. Hver rute har et specifikt sæt betingelser, og hvis de er opfyldt, sendes anmodningen til den relevante tjeneste. For eksempel kan en rute matche IP, afsenderdomæne, HTTP-metoder, dele af en URI eller en kombination af disse eksempler.

Service

Lad os oprette en InterSystems IRIS-tjeneste med følgende værdier:

Field
Value
beskrivelse

navn
iris
Tjenestenavn

host
IP
InterSystems IRIS-servervært eller ip

port
52773
InterSystems IRIS server webport

sti
/api/atelier
Rodsti

protokol
http
protokol

Lad de resterende værdier være standard. Klik på knappen Create og skriv ned ID'et for den oprettede tjeneste.

rute

Lad os nu oprette en rute:

Field
Value
beskrivelse

sti
/api/atelier
Rodsti

protokol
http
protokol

service.id
guide fra 3
Service (ID fra forrige trin)

Lad de resterende værdier være standard. Klik på knappen Create og skriv ned ID'et for den oprettede rute. Som standard lytter IAM efter indgående anmodninger på port 8000. Nu anmodninger sendt til http://localhost:8000 og starter med /api/atelier omdirigeres til InterSystems IRIS.

Test

Lad os prøve at oprette en anmodning i en REST-klient (jeg bruger Postman).

Introduktion til InterSystems API Manager (+ webinar)

Lad os sende en GET-anmodning til http://localhost:8000/api/atelier/ (Glem ikke / til sidst) og modtag et svar fra InterSystems IRIS. Hver anmodning går gennem IAM, som indsamler metrics:

  • HTTP-statuskode.
  • Forsinkelse.
  • Overvågning (hvis konfigureret).

Jeg lavede et par flere anmodninger (herunder to anmodninger til ikke-eksisterende slutpunkter såsom /api/atelier/est/), resultaterne er umiddelbart synlige i dashboardet:

Introduktion til InterSystems API Manager (+ webinar)

Arbejder med plugins

Nu hvor vi har konfigureret en rute, kan vi administrere vores API. Vi kan tilføje funktioner, der vil komplementere vores service.

Den mest almindelige måde at ændre adfærden for en API er at tilføje et plugin. Plugins isolerer individuel funktionalitet og kan forbindes til IAM enten globalt eller kun til individuelle enheder, såsom en bruger (gruppe af brugere), tjeneste eller rute. Vi starter med at tilføje Rate Limiting plugin til ruten. For at etablere en forbindelse mellem plugin'et og ruten har vi brug for en unik identifikator (ID) af ruten.

Begrænsning af antallet af anmodninger

Klik på Plugins i venstre sidebjælkemenu. Du kan se alle de aktive plugins på denne skærm, men da denne IAM-server er ny, er der endnu ingen aktive plugins. Så fortsæt til næste trin ved at klikke på "Nyt plugin".

Det plugin, vi skal bruge, er i kategorien "Trafikkontrol" og hedder "Rate Limiting". Vælg det. Der er en del indstillinger, du kan indstille her, men vi bekymrer os kun om to felter:

Field
Value
beskrivelse

rute_id
ID
Rute-id

config.minut
5
Antal anmodninger pr. minut

Det er alt. Pluginnet er konfigureret og aktivt. Bemærk, at vi kan vælge forskellige tidsintervaller, såsom et minut, en time eller en dag. Indstillingerne kan kombineres (for eksempel 1000 anmodninger i timen og samtidig 100 anmodninger i minuttet). Jeg valgte minutter, fordi det gør det nemt at tjekke plugin'ets funktionalitet.

Hvis du sender den samme anmodning igen i Postman, vil du se, at svaret returneres med 2 ekstra overskrifter:

  • XRateLimit-Limit-minut: 5
  • XRateLimit-Resterende-minut: 4

Dette fortæller klienten, at den kan lave op til 5 anmodninger i minuttet og kan lave 4 anmodninger mere i det aktuelle tidsrum.

Introduktion til InterSystems API Manager (+ webinar)

Hvis du foretager den samme anmodning igen og igen, vil du til sidst løbe tør for tilgængelig kvote og i stedet modtage en HTTP-statuskode på 429 med følgende svartekst:

Introduktion til InterSystems API Manager (+ webinar)

Vent et øjeblik, og du vil være i stand til at indsende anmodninger igen.

Dette er en praktisk mekanisme, der giver dig mulighed for at:

  • Beskyt bagenden mod belastningsstigninger.
  • Fortæl kunderne, hvor mange anmodninger de kan stille.
  • Tjen penge på API'en.

Du kan indstille værdier for forskellige tidsintervaller og dermed udjævne API-trafik over en vis periode. Lad os sige, at du tillader 600 anmodninger i timen på en bestemt rute. I gennemsnit er der 10 anmodninger i minuttet. Men intet forhindrer klienten i at gennemføre alle 600 anmodninger i det første minut af timen. Måske er dette, hvad du har brug for. Du ønsker måske at opnå en mere jævn belastning i løbet af en time. Ved at indstille feltværdien config.minute En værdi på 20 sikrer, at dine brugere ikke laver mere end 20 anmodninger i minuttet og 600 anmodninger i timen. Dette giver mulighed for små stigninger på et minuts interval sammenlignet med et fuldt gennemsnitligt flow på 10 anmodninger i minuttet, men brugere kan ikke bruge timekvoten i et minut. Nu skal de bruge mindst 30 minutter til at bruge alle deres anmodninger. Kunder vil modtage yderligere overskrifter for hvert specificeret tidsinterval, for eksempel:

HTTP-header
Value

X-RateLimit-Limit-time
600

X-RateLimit-Resterende-time
595

X-RateLimit-Limit-minut
20

X-RateLimit-Resterende-minut
16

Selvfølgelig er der mange forskellige måder at konfigurere forespørgselsgrænser på, afhængigt af hvad du ønsker at opnå.

Fund

Jeg slutter her, jeg tror, ​​der er nok materiale til den første artikel om InterSystems API Manager. Vi brugte kun et af over 40 plugins. Der er mange flere interessante ting, du kan gøre med IAM:

  • Tilføj en central godkendelsesmekanisme til alle dine API'er.
  • Skaler belastningen ved hjælp af en belastningsbalancer på tværs af flere tjenester.
  • Tilføj ny funktionalitet og fejlrettelser til et testpublikum før en fuld opdatering.
  • Giv interne og eksterne udviklere en dedikeret webportal, der dokumenterer alle API'er.
  • Cache-anmodninger for at reducere responstiden og reducere belastningen på systemets backend.

RЎSЃS <P "RєRё

Webinar

Vi inviterer dig til webinaret "API Management with InterSystems API Management", som finder sted den 21. november kl. 10:00 Moskva-tid (GMT+3).
InterSystems API Manager (IAM) er en ny komponent i InterSystems IRIS Data Platform, der giver overvågning, kontrol og styring af trafik til/fra web-API'er inden for IT-infrastrukturen. På webinaret vil vi demonstrere nøglefunktionerne i InterSystems API Management:

  • API-trafikovervågningsværktøjer.
  • API-trafikkontrol, herunder båndbreddekontrol, begrænsning af antallet af API-kald, vedligeholdelse af lister over tilladte og nægtede lister over IP-adresser osv.
  • API-sikkerhedskonfigurationsværktøjer.
  • Udviklerportal til udgivelse af interaktiv API-dokumentation.
  • Enkelt adgangspunkt til API.

Webinaret er beregnet til arkitekter, udviklere og systemadministratorer.

Tilmelding er nødvendig!

Kilde: www.habr.com

Tilføj en kommentar