Architecture d'API Gateway
API Gateway est un système de gestion d'API qui assure la gestion, la surveillance et l'authentification de vos API. API Gateway se compose des composants suivants:
- API Gateway : pour gérer tous les aspects d'une API déployée
- Service Control : permet d'appliquer les règles de gestion des API.
- Service Management : pour gérer les configurations d'API.
- gcloud CLI: permet de déployer et de gérer vos API.
- Console Google Cloud: pour la journalisation, la surveillance et le partage
Architecture
Vous trouverez ci-dessous un diagramme général des principaux composants impliqués dans API Gateway :
Dans ce diagramme :
Le fournisseur d'API est chargé de créer et de déployer une API sur API Gateway. Chaque API est définie par un fichier écrit en tant que spécification OpenAPI 2.0.
La spécification OpenAPI définit l'URL publique du point de terminaison REST pour l'API, le service de backend accessible par l'API et d'autres caractéristiques de l'API telles que l'authentification, le format des données et les options de réponse.
Le client API envoie une requête REST à une API hébergée sur API Gateway pour accéder aux services de backend. Un client API peut être toute application capable d'effectuer un appel REST, telle qu'un navigateur, une application mobile ou une application Web.
Le client API a uniquement besoin de connaître l'URL de l'API, le verbe de la requête (tel que
GET
,PUT
,POST
,DELETE
), les conditions requises pour l'authentification et le format des données envoyées à l'API ou reçues de celle-ci.Le client API n'a pas besoin de savoir quoi que ce soit sur l'implémentation du backend. En fait, une seule API hébergée sur API Gateway peut être configurée pour accéder à différents backends en fonction des informations transmises dans la requête.
Composants d'API Gateway
API Gateway
API Gateway fournit une solution entièrement gérée et payée à l'utilisation pour l'hébergement de vos API. API Gateway fournit un accès sécurisé à vos services de backend via une API REST bien définie et cohérente entre tous vos services, quelle que soit leur implémentation.
API Gateway est intégré à Google Cloud afin que vous puissiez utiliser les mêmes outils de développement, de surveillance, de journalisation et de traçage que ceux que vous utilisez avec les autres produits Google Cloud.
Si vous vous connectez à un service de backend hébergé en dehors de Google Cloud, vous pouvez toujours bénéficier de tous les services Google Cloud, y compris les services d'authentification et d'autorisation utilisés pour contrôler l'accès à vos API.
API Service Control
L'API Service Control applique les règles de gestion des API lors de l'exécution, telles que l'authentification par clé API, la surveillance et la journalisation. Service Control utilise les méthodes suivantes :
- Vérification : vérifie les clés d'authentification et les clés API et indique si un appel doit être autorisé.
- Rapport : notifie les systèmes lors d'enregistrements de journalisation et de surveillance
API Service Management
La spécification OpenAPI est utilisée pour définir votre API. Vous utiliserez ensuite la gcloud CLI pour importer la spécification OpenAPI dans Service Management, qui créera la configuration de l'API. D'autres tâches liées à la configuration sont également effectuées ici, telles que le partage de votre API avec d'autres développeurs, l'activation ou la désactivation de l'API dans différents projets, et la génération de clés API.
gcloud CLI
La gcloud CLI fournit l'outil de ligne de commande gcloud qui vous permet d'appeler divers services Google Cloud. Vous allez utiliser la Google Cloud CLI pour importer la spécification OpenAPI, qui crée la configuration de l'API, puis la déployer sur API Gateway.
console Cloud
Google Cloud Console est l'interface utilisateur graphique de Google Cloud. Utilisez la console Google Cloud pour exposer les données de surveillance et de journalisation enregistrées par Service Control, configurer l'authentification et les autorisations, et permettre aux développeurs de générer des clés API pour appeler l'API.
Gérer une requête API
Dans une configuration d'API, il existe deux types de points de terminaison :
- Point de terminaison de l'API : définit le point de terminaison accessible au public que les clients utilisent pour utiliser vos API.
- Point de terminaison du backend: définit le point de terminaison que l'API utilise pour se connecter à votre service de backend. Les paramètres de sécurité, tels que l'accès HTTP ou HTTPS, sont définis par la mise en œuvre du service de backend.
Les requêtes adressées à votre point de terminaison d'API sont transmises au point de terminaison du backend, y compris toutes les données transmises dans le cadre de la requête. Les réponses du service de backend, y compris toutes les données renvoyées par le service, sont renvoyées au client.
Routage des requêtes
Lorsqu'une requête est reçue :
API Gateway crée un jeton de trace pour Cloud Trace.
API Gateway établit une correspondance entre le chemin des requêtes entrantes et l'API cible. Après avoir trouvé un itinéraire correspondant, API Gateway effectue toutes les étapes d'authentification pour l'API spécifiée.
Si la validation du jeton JWT est nécessaire, API Gateway valide l'authentification à l'aide de la clé publique appropriée pour le signataire, puis valide le champ d'audience dans le jeton JWT. Si une clé API est requise, API Gateway appelle l'API Service Control pour la valider.
Service Control recherche la clé pour la valider et s'assure que le projet associé à la clé a activé l'API. Si la clé n'est pas valide ou si le projet n'a pas activé l'API, l'appel est rejeté et est consigné via l'API Service Control.
Si Service Control valide la clé, la requête, ainsi que tous les en-têtes d'origine, et l'en-tête de validation JWT le cas échéant, sont transmis au backend.
Lorsqu'une réponse est reçue du backend, API Gateway renvoie la réponse à l'appelant et envoie les informations de date et heure finales à Stackdriver Trace. Les points d'appel sont enregistrés par l'API Service Control, qui écrit les métriques et les journaux dans les destinations appropriées.