Tuto : comment sécuriser une API avec API GATEWAY de Flexible Engine ?

API (Application Programming Interface) est une application qui permet de faire le dialogue, entre une application consommatrice de service et une application productrice de service. 

De nos jours, il existe de plus en plus de risques liés à la cybersécurité des APIs. En effet, les APIs peuvent être détournées de leur objectif initial dans le but de voler des données. Lorsqu’un fournisseur autorise un accès public à ses APIs, il doit assurer leur sécurité et leur fonctionnement optimal. Si ce n’est pas le cas, le cycle de vie de ses APIs sera raccourci, en raison des risques sécurité.

La cybersécurité étant importante pour tout développeur d’API, c’est pourquoi nous vous proposons API Gateway de Flexible Engine, le cloud d’Orange Business Services. L’objectif est de prévenir les problèmes de sécurité de vos APIs.

Qu’est-ce qu’une API Gateway ?

Flexible Engine offre plusieurs solutions face au problème de sécurité, dont une API Gateway. Ses principales missions sont de permettre aux développeurs de créer, publier, sécuriser et monitorer les APIs de leurs applications

L’API Gateway agit comme un point d’entrée unique pour le client (application web/ mobile…) et protège les APIs en Backend en surveillant, en sécurisant le trafic et en assurant la disponibilité des services.

Le fonctionnement d’une API Gateway

Fonctionnement de la passerelle API

Vision globale de la passerelle API
Fonctionnement de la passerelle API- Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Alexis ANDRIANASY

D’abord, la passerelle API reçoit les requêtes du client, puis les traite. Si tout se passe bien, elle transmet la demande au service backend et envoie la réponse du service au client. Autrement dit, la passerelle API joue le rôle de proxy entre le client qui passe la demande (application web/mobile,…) et le service API backend qui répond à la demande du client.

Fonctionnement interne de la passerelle API

Vision interne de la passerelle API
Fonctionnement interne de la passerelle API-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

L’image ci-dessus décrit comment la requête du client est traitée par la passerelle. On voit que la passerelle reçoit la requête et vérifie les informations du client. On passe ensuite au traitement de la requête, incluant l’analyse des paramètres comme l’id d’une ressource par exemple. Si tout est conforme, la demande est transmise au service backend.

Enfin, une réponse est envoyée au client sous forme d’un code d’état à 200 et un message en JSON qui contient les informations demandées au service.

Démonstration / Mise en pratique

Mise en place de l'API

Dans un précédent article de YPSI sur L’intelligence artificielle avec Flexible Engine, on avait obtenu une API capable de faire la différence entre un chihuahua et un muffin grâce à ModelArts de FlexibleEngine d’Orange Business Services. 

Maintenant, pourquoi ne pas faire une API qui traite les données du profil d’un chihuahua, avec nodejs en backend et une base de données MongoDB.

Mise en place de l’API chihuahua
Mise en place de l’API chihuahua-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Postman

On suppose qu’on a ici une API de niveau 2 sur le modèle de maturité de Richardson.

Liste des requêtes implémentées par notre API RestFul

Notre API est en cours de développement, mais nous souhaitons rendre disponible certaines fonctionnalités, auprès d’autres adeptes de chihuahua. Le but est d’étudier, analyser et améliorer le comportement de l’API, le tout dans un environnement sécurisé. Avant toute chose, nous devons mettre en place un serveur cloud de test  (VPC + Subnet + SG +  ECS + mon API backend).

Création d’un serveur
Création d’un serveur-Article de YPSI SUR API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Étape 1 : mise en place d’un groupe API

1. Création d’un groupe d’API
Création d’un groupe d’API-ARTICLE DE YPSI SUR API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

On va dans la console de FlexibleEngine et on clique sur “API Gateway” dans la section “Application”.

2. Création d’un groupe d’API
Création d’un groupe d’API 2- Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Sur le menu à gauche, on clique sur “API Publishing”, puis “API Groups”, ensuite “Create API Group”, et enfin on renseigne le nom de notre groupe d’API. Dans notre cas, c’est “APIGroup_api_test”, puis on clique sur OK.

Un groupe d’API facilite la gestion des APIs utilisées pour un même service. 

Étape 2 : configuration de l’API

Sur le menu à gauche, on clique sur “APIs”, puis “create API” à droite de l’écran. 

1. Création d’une API
Création d’une API-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine
2. Création d’une API
Création d’une API 2-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Dans la console de création d’API, on retrouve les éléments suivants : 

  • Le champ Name pour le nom de l’API, on renseigne ici le nom de notre API.  
  • Le champ API Group, on renseigne ici notre groupe d’API, celui qu’on a créé précédemment. Pour le reste, on peut laisser les valeurs par défaut. 
  • Le champ Visibility représente la lisibilité de l’API qui est publique par défaut. 
  • Le champ Security Authentication représente le mode d’authentification à l’API. Ici, on va laisser la valeur par défaut à APP.
  • Le champ Simple Authentication permet d’authentifier les appels d’API en incluant un AppCode dans l’en-tête. Dans notre cas, on va l’activer, pour nous permettre de faire des appels via postman.
  • Le Tag Name pour donner un tag à l’API. 
  • La Description pour donner une description à l’API.

On valide et on passe à la page suivante.

Définition de la requête
Création d’une API définition de la requête-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Sur cette page, on peut voir que : 

  • Le champ Domain Name est attribué automatiquement. Celui-ci dépend du groupe d’API. Il représente le nom de domaine pour le point d’entrée à l’API / notre URI de base.
  • Le champ Protocol représente le protocole à utiliser. Dans notre cas, je vais sélectionner « HTTP HTTPS ». Libre à vous de faire votre choix en fonction de votre situation.
  • Le champ Path représente le point d’entrée à l’API. Dans notre cas, on va mettre  “/”, mais il est tout à fait possible de mettre “/chihuahua” ou “/getChihuahua”. On peut aussi ajouter des paramètres dans le cas où on voudrait définir un ID par exemple. Dans ce cas, l’id sera spécifié avec le format “{id}” et il faudra l’ajouter dans la liste des “inputs parameters”.
  • Le champ Matching représente le degré de correspondance des URI. Dans notre cas, on  va laisser la valeur par défaut  “Exact match”.
  • Le Champ Method, représente les Méthodes de requête HTTP qu’on veut laisser passer. Dans notre cas, on va le mettre à “ANY” car on veut utiliser un chemin pour tous les verbes HTTP de notre API en backend.
  • Le Champ CORS permet de rendre accessible notre API depuis l’extérieur. Dans notre cas, on va le laisser par défaut.

On valide et on passe à la page suivante.

Enregistrement d’un backend
Création d’une API définition de la requête (2)-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Dans cette partie, on renseigne les informations de notre backend :

  • Dans le champ Backend Type, on met HTTP/HTTPS car on a  un backend de type HTTP. 
  • Dans le champ Protocol, on met HTTP car notre serveur backend est en HTTP. 
  • Dans le champ Method, on met ANY notre backend accepte les requêtes GET/POST/PUT/DELETE.
  • Dans le champ Configure VPC channel, on sélectionne “Configure now” car notre API est sur un serveur cloud. Donc, on peut utiliser le VPC Channel qui nous permet de connecter directement notre API Gateway à notre serveur, via un lien direct sur le sous-réseau de notre serveur cloud.
Fonctionnement du VPC channel
Fonctionnement du VPC channel-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Doc Flexible Engine

On laisse le champ Host Header à vide, car on n’a pas de header  à renseigner. 

Dans le champ Path, on met « /chihuahua » car c’est le point d’accès de notre API sur notre serveur. 

Le Timeout et Backend authentication peuvent être laissés par défaut, car on n’a pas de système d’authentification sur notre API pour le moment, mais vous pouvez renseigner le vôtre.

On valide et on passe à la page suivante.

Définir les réponses
Création d’une API Définir les réponses-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Dans la dernière page, on définit les exemples de requête de réponse de l’API dans le cas nominal et dans le cas d’échec. Ensuite, on valide et on passe l’API en mode debug.

Étape 3 : débogage de l’API

Test de l’API
Création d’une API Test de l’API-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

Lors du débogage de l’API, on doit obtenir un statut 200 avec la réponse en JSON de notre serveur. Cela signifie que notre API fonctionne correctement. On peut donc la publier sur l’environnement RELEASE. Toutefois, il nous est aussi possible de la publier sur un autre environnement, libre à vous de choisir.

Étape 4 : sécurisation et test

Une fois la publication faite, on peut accéder à notre API de l’extérieur via cet URL. Elle représente le point d’accès de notre passerelle API, on peut y effectuer des requêtes de type GET / POST / PUT / DELETE avec comme unique condition d’avoir une clé X-Apig-AppCode dans le HEADER.

Pour cela, il suffit d’aller dans la section API Calling puis Apps et Create App. Une fois le nom de l’app renseigner, on valide avec le bouton OK.

Ensuite, on relie l’app à notre API avec le bouton Bind to API. On sélectionne l’api et on valide.

Création d’une APP
Création d’une APP-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Flexible Engine

On sélectionne l’app qu’on vient de créer, dans notre cas c’est le “App_ort0”. Une fois dans l’app, on clique sur AppCode puis Add AppCode. On obtient alors une clé, que l’on doit utiliser pour se connecter à notre API.

Clé de connexion à notre API
Source : Flexible Engine
Connexion sans clé d’application
Connexion sans clé d’application vie postman-Article YPSI API GATEWAY FLEXIBLE ENGINE
Source : Postman
Avec une clé d’application
Source : Postman

On peut procéder à la surveillance de notre application par le biais des métriques de la passerelle  ou créer des règles d’alarme. On peut  aussi restreindre l’accès à notre API. 

Dans notre cas, on a utilisé une authentification par clé d’application, mais il existe d’autres moyens pour sécuriser notre API, comme  l’IAM ou la création d’une autorisation personnalisée ou la signature des requêtes par une clé.

Au niveau de la facturation, Orange Business Services nous propose pour le moment, une facturation en fonction du nombre d’appels API et du trafic sortant.

Tableau de bord avec les métriques de l’API
Source : Flexible Engine

Conclusion

API Gateway de Flexible Engine offre beaucoup d’avantages comme :

Avantages

API Gateway de Flexible Engine semble être un excellent outil pour la sécurisation et la gestion d’une API car elle est simple à utiliser et à mettre en place.  

En effet, cet outil vous permet de prévenir les problèmes de cybersécurité en filtrant les requêtes de l’utilisateur, limitant le nombre de requêtes, permettant la mise en place d’un système d’authentification et d’autorisation… En plus, il permet de d’être alerté en cas de dysfonctionnement et cyberattaques, grâce à l’analyse de performance que nous offre la plateforme de Flexible Engine avec son tableau de bord. Enfin le travail des serveurs est allégé grâce à la répartition des tâches par l’outil.

Envie de tester l’API Gateway ? Contactez-nous afin bénéficier de 3 mois gratuits Flexible Engine et d’un accompagnement personnalisé de YPSI.

Partagez cet article :

Laisser un commentaire