Présentation d'InterSystems API Manager (+ webinaire)

Nous avons récemment publié InterSystems API Manager (IAM), un nouveau composant de la plateforme de données InterSystems IRIS qui offre une visibilité, un contrôle et une gestion du trafic des API Web dans l'ensemble de l'infrastructure informatique.

Dans cet article, je vais vous montrer comment configurer IAM et démontrer certaines des nombreuses fonctionnalités qui s'offrent à vous avec IAM. InterSystems API Manager vous permet de :

  • Surveillez l'API, comprenez qui utilise l'API, quelles API sont les plus populaires et lesquelles nécessitent des améliorations.
  • Contrôlez qui utilise l'API et limitez son utilisation, des simples restrictions d'accès aux restrictions basées sur les requêtes : vous disposez d'un contrôle personnalisé et pouvez réagir rapidement aux changements de modèles de consommation de l'API.
  • Sécurisez les API à l'aide de mécanismes de sécurité centralisés tels que OAuth2.0, LDAP ou Key Token Authentication.
  • Facilitez la tâche des développeurs tiers et offrez-leur une expérience API supérieure en ouvrant un portail de développeurs dédié.
  • Faites évoluer l’API et garantissez une latence de réponse minimale.

La gestion des API est essentielle pour la transition vers une architecture SOA ou microservice, simplifiant l'intégration entre les (micro)services individuels, les rendant disponibles à tous les consommateurs externes et internes. En conséquence, les nouvelles API deviennent plus faciles à créer, à maintenir et à utiliser.

Si vous utilisez déjà InterSystems IRIS, vous pouvez ajouter l'option IAM à votre licence. L'option IAM est gratuite pour les clients InterSystems IRIS, mais vous devez demander une nouvelle clé de licence à InterSystems pour commencer à utiliser IAM.

Si vous n'utilisez pas encore InterSystems IRIS et envisagez d'essayer InterSystems API Manager, veuillez contacter InterSystems.

Mise en route et installation

Les clients InterSystems peuvent télécharger la distribution IAM depuis le site Web WRC section « Distribution de logiciels » et exécutez-le en tant que conteneur Docker. Configuration minimale requise:

Dans un premier temps, vous devez télécharger l'image Docker (Important ! L'archive avec WRC n'est pas une image Docker, vous devez la décompresser, il y a une image Docker à l'intérieur) :

docker load -i iam_image.tar

Cette commande rendra l'image IAM disponible pour une utilisation ultérieure sur votre serveur. IAM s'exécute comme un conteneur distinct, vous pouvez donc le faire évoluer indépendamment d'InterSystems IRIS. L'exécution d'IAM nécessite l'accès à InterSystems IRIS pour télécharger une licence.

Configurez InterSystems IRIS :

  • Activer l'application Web /api/IAM
  • Activer l'utilisateur IAM
  • Changer le mot de passe utilisateur IAM

Démarrons maintenant le conteneur IAM. Dans les archives, vous trouverez des scripts iam-setup pour Windows et Unix (et Mac). Ces scripts vous aideront à définir correctement les variables d'environnement, permettant au conteneur IAM d'établir une connexion avec InterSystems IRIS. Voici un exemple du script exécuté sur 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

Comme vous pouvez le constater, le nom complet de l'image, l'adresse IP, le port InterSystems IRIS et le mot de passe de l'utilisateur IAM sont tout ce dont vous avez besoin pour commencer.

Au lieu d'exécuter un script, vous pouvez définir les variables d'environnement manuellement :

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

Запуск

Lançons maintenant IAM en exécutant la commande :

docker-compose up -d

Cette commande organise les conteneurs IAM et garantit que tout fonctionne correctement. L'état des conteneurs est vérifié à l'aide de la commande :

docker ps

Ouvrez l'interface d'administration dans votre navigateur localhost:8002.

Présentation d'InterSystems API Manager (+ webinaire)

Il est vide pour l'instant car c'est un tout nouveau nœud. Changeons cela. IAM prend en charge le concept d'espaces de travail pour diviser les API en modules et/ou commandes. Accédez à l'espace de travail "par défaut" que nous utiliserons pour nos expériences.

Présentation d'InterSystems API Manager (+ webinaire)

Le nombre de requêtes pour cet espace de travail est toujours nul, mais vous aurez une idée des concepts de base d'IAM dans le menu de gauche. Les deux premiers éléments : Les services et les itinéraires sont les plus importants :

  • Le service est l'API à laquelle nous souhaitons donner accès aux consommateurs. Ainsi, l'API REST d'InterSystems IRIS est un Service, tout comme l'API Google si vous souhaitez l'utiliser par exemple.
  • La route décide vers quel service les demandes entrantes doivent être transmises. Chaque itinéraire a un ensemble spécifique de conditions, et si elles sont remplies, la demande est envoyée au service approprié. Par exemple, une route peut correspondre à l'adresse IP, au domaine de l'expéditeur, aux méthodes HTTP, à des parties d'un URI ou à une combinaison de ces exemples.

Service

Créons un service InterSystems IRIS, avec les valeurs suivantes :

Champ
Valeur
description

prénom
iris
Nom du service

hôte
IP
Hôte ou adresse IP du serveur InterSystems IRIS

port
52773
Port Web du serveur InterSystems IRIS

chemin
/api/atelier
Chemin racine

protocole
http
Protocole

Laissez les valeurs restantes par défaut. Cliquez sur le bouton Create et notez l'ID du service créé.

Route

Créons maintenant un itinéraire :

Champ
Valeur
description

chemin
/api/atelier
Chemin racine

protocole
http
Protocole

service.id
guide à partir de 3
Service (ID de l'étape précédente)

Laissez les valeurs restantes par défaut. Cliquez sur le bouton Create et notez l'ID de la route créée. Par défaut, IAM écoute les requêtes entrantes sur le port 8000. Désormais, les requêtes envoyées à http://localhost:8000 et en commençant par /api/atelier sont redirigés vers InterSystems IRIS.

Test

Essayons de créer une requête dans un client REST (j'utilise Facteur).

Présentation d'InterSystems API Manager (+ webinaire)

Envoyons une requête GET à http://localhost:8000/api/atelier/ (N'oubliez pas / à la fin) et recevez une réponse d'InterSystems IRIS. Chaque requête passe par IAM qui collecte des métriques :

  • Code d'état HTTP.
  • Retard
  • Surveillance (si configurée).

J'ai fait quelques requêtes supplémentaires (dont deux requêtes vers des endpoints inexistants tels que /api/atelier/est/), les résultats sont immédiatement visibles dans le tableau de bord :

Présentation d'InterSystems API Manager (+ webinaire)

Travailler avec des plugins

Maintenant que nous avons une route configurée, nous pouvons gérer notre API. Nous pouvons ajouter des fonctionnalités qui complèteront notre service.

Le moyen le plus courant de modifier le comportement d’une API consiste à ajouter un plugin. Les plugins isolent les fonctionnalités individuelles et peuvent être connectés à IAM globalement ou uniquement à des entités individuelles, telles qu'un utilisateur (groupe d'utilisateurs), un service ou une route. Nous allons commencer par ajouter le plugin Rate Limiting à la Route. Pour établir une connexion entre le plugin et la route, nous avons besoin d'un identifiant unique (ID) de la route.

Limiter le nombre de demandes

Cliquez sur Plugins dans le menu de la barre latérale gauche. Vous pouvez voir tous les plugins actifs sur cet écran, mais comme ce serveur IAM est nouveau, il n'y a pas encore de plugins actifs. Passez donc à l’étape suivante en cliquant sur « Nouveau plugin ».

Le plugin dont nous avons besoin se trouve dans la catégorie « Traffic Control » et s’appelle « Rate Limiting ». Sélectionnez-le. Vous pouvez définir de nombreux paramètres ici, mais nous ne nous soucions que de deux champs :

Champ
Valeur
description

id_route
ID
ID d'itinéraire

config.minute
5
Nombre de requêtes par minute

C'est tout. Le plugin est configuré et actif. Notez que nous pouvons choisir différents intervalles de temps, comme une minute, une heure ou un jour. Les paramètres peuvent être combinés (par exemple, 1000 requêtes par heure et en même temps 100 requêtes par minute). J'ai choisi les minutes car cela permet de vérifier facilement la fonctionnalité du plugin.

Si vous renvoyez la même demande dans Postman, vous verrez que la réponse est renvoyée avec 2 en-têtes supplémentaires :

  • XRateLimit-Limite-minute : 5
  • XRateLimit-Remaining-minute : 4

Cela indique au client qu'il peut effectuer jusqu'à 5 requêtes par minute et qu'il peut effectuer 4 requêtes supplémentaires dans la plage horaire actuelle.

Présentation d'InterSystems API Manager (+ webinaire)

Si vous effectuez la même requête encore et encore, vous finirez par manquer de quota disponible et recevrez à la place un code d'état HTTP de 429 avec le corps de réponse suivant :

Présentation d'InterSystems API Manager (+ webinaire)

Attendez une minute et vous pourrez à nouveau soumettre des demandes.

Il s'agit d'un mécanisme pratique qui vous permet de :

  • Protégez le backend des surtensions de charge.
  • Dites aux clients combien de demandes ils peuvent faire.
  • Monétisez l'API.

Vous pouvez définir des valeurs pour différents intervalles de temps et ainsi lisser le trafic API sur une certaine période de temps. Disons que vous autorisez 600 requêtes par heure sur un itinéraire particulier. En moyenne, il y a 10 requêtes par minute. Mais rien n'empêche le client de répondre aux 600 demandes dans la première minute de l'heure. C'est peut-être ce dont vous avez besoin. Vous souhaiterez peut-être obtenir une charge plus uniforme en une heure. En définissant la valeur du champ config.minute Une valeur de 20 garantit que vos utilisateurs n'effectuent pas plus de 20 requêtes par minute et 600 requêtes par heure. Cela permet de petits pics sur un intervalle d'une minute par rapport à un flux moyen complet de 10 requêtes par minute, mais les utilisateurs ne peuvent pas utiliser le quota horaire pendant une minute. Il leur faudra désormais au moins 30 minutes pour utiliser toutes leurs demandes. Les clients recevront des en-têtes supplémentaires pour chaque intervalle de temps spécifié, par exemple :

En-tête HTTP
Valeur

X-RateLimit-Limite-heure
600

X-RateLimit-heure-restante
595

X-RateLimit-Limite-minute
20

X-RateLimit-minute restante
16

Bien entendu, il existe de nombreuses façons différentes de configurer les limites de requêtes en fonction de ce que vous souhaitez réaliser.

résultats

Je vais terminer ici, je pense qu'il y a suffisamment de matière pour le premier article sur InterSystems API Manager. Nous n’avons utilisé qu’un seul plugin parmi plus de 40. Il y a bien d’autres choses intéressantes que vous pouvez faire avec IAM :

  • Ajoutez un mécanisme d'authentification central pour toutes vos API.
  • Faites évoluer la charge à l’aide d’un équilibreur de charge sur plusieurs services.
  • Ajoutez de nouvelles fonctionnalités et des corrections de bugs à une audience test avant une mise à jour complète.
  • Fournissez aux développeurs internes et externes un portail Web dédié documentant toutes les API.
  • Requêtes en cache pour réduire le temps de réponse et réduire la charge sur le backend du système.

références

Webinar

Nous vous invitons au webinaire « API Management with InterSystems API Management », qui aura lieu le 21 novembre à 10h00 heure de Moscou (GMT+3).
InterSystems API Manager (IAM) est un nouveau composant de la plateforme de données InterSystems IRIS qui assure la surveillance, le contrôle et la gestion du trafic vers/depuis les API Web au sein de l'infrastructure informatique. Lors du webinaire, nous démontrerons les capacités clés d'InterSystems API Management :

  • Outils de surveillance du trafic API.
  • Contrôles du trafic API, y compris le contrôle de la bande passante, la limitation du nombre d'appels API, la tenue à jour de listes d'adresses IP autorisées et refusées, etc.
  • Outils de configuration de la sécurité des API.
  • Portail des développeurs pour la publication de documentation interactive sur l'API.
  • Point d'accès unique à l'API.

Le webinaire est destiné aux architectes, développeurs et administrateurs système.

L'inscription est obligatoire!

Source: habr.com

Ajouter un commentaire