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
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
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
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
Étape 1 : mise en place d’un groupe API
1. Création d’un groupe d’API
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
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
2. Création d’une API
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
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
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
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
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
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
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
Connexion sans clé d’application
Avec une clé d’application
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
Conclusion
API Gateway de Flexible Engine offre beaucoup d’avantages comme :
Avantages
- La sécurisation de nos points d'accès API
- La possibilité de superviser notre API
- Une facilité de gestion du trafic avec l’aide des “VPC Channel”
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 :