Ajout de politiques de demande et de réponse aux spécifications de déploiement d'API
Découvrez comment contrôler le comportement des déploiements d'API en ajoutant des politiques de demande et de réponse aux spécifications d'API que vous avez créées précédemment avec API Gateway.
Vous pouvez contrôler le comportement d'un déploiement d'API que vous créez sur une passerelle d'API en ajoutant des politiques de demande et de réponse à la spécification de déploiement d'API :
- Une politique de demande décrit les actions à effectuer sur une demande entrante en provenance d'un client d'API avant son envoi à un élément dorsal.
- Une politique de réponse décrit les actions à effectuer sur une réponse retournée par un élément dorsal avant son envoi à un client d'API.
Vous pouvez utiliser des politiques de demande ou de réponse pour :
- Limiter le nombre de demandes envoyées aux services dorsaux
- Prendre en charge la spécification CORS (Cross-Origin Resource Sharing)
- Assurer l'authentification et l'autorisation
- ajouter la prise en charge mTLS
- valider les demandes avant de les envoyer aux services dorsaux
- Modifier des demandes entrantes et des réponses sortantes
- les réponses en mémoire cache pour améliorer les performances et réduire la charge sur les services dorsaux
- rendre les déploiements d'API admissibles à l'inclusion dans les plans d'utilisation qui surveillent et gèrent l'accès des abonnés
Dans une spécification de déploiement d'API, vous pouvez ajouter des politiques qui s'appliquent globalement à toutes les routes, ainsi que des politiques qui s'appliquent uniquement à des routes particulières.
Notez que les politiques de demande et de réponse du service Passerelle d'API sont différentes des politiques GIA, qui contrôlent l'accès aux ressources Oracle Cloud Infrastructure.
Vous pouvez ajouter des politiques de demande et de réponse à une spécification de déploiement d'API comme suit :
- En utilisant la console.
- En modifiant un fichier JSON.
Utilisation de la console pour ajouter des politiques de demande et de réponse
Pour ajouter des politiques de demande et de réponse à une spécification de déploiement d'API à l'aide de la console :
-
Créez ou mettez à jour un déploiement d'API à l'aide de la console, sélectionnez l'option À partir de zéro et entrez les détails dans la page Informations de base.
Pour plus d'informations, voir Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API et Mise à jour d'une passerelle d'API.
-
Dans la section Politiques de demande d'API de la page Informations de base, spécifiez les politiques de demande qui s'appliquent globalement à toutes les routes de la spécification du déploiement d'API :
- Mutual-TLS : Politique permettant de contrôler l'accès aux API que vous déployez sur les passerelles d'API en fonction du certificat TLS présenté par le client d'API soumettant une demande. Vous pouvez uniquement appliquer une politique mTLS globalement à toutes les routes de la spécification de déploiement d'API (et non à des routes individuelles). Voir Ajout de la prise en charge de mTLS aux déploiements d'API.
- Spécification CORS : Politique permettant d'activer la prise en charge de la spécification CORS dans les API que vous déployez sur des passerelles d'API. Vous pouvez aussi spécifier des politiques de spécification CORS qui s'appliquent à des routes individuelles dans la spécification de déploiement d'API (vous n'avez pas besoin d'entrer d'abord une politique de spécification CORS globale). Voir Ajout de la prise en charge de la spécification CORS aux déploiements d'API.
- Limitation de débit : Politique permettant de limiter le débit auquel les clients d'API peuvent faire des demandes aux services dorsaux. Vous pouvez uniquement appliquer une politique de limitation de débit globalement à toutes les routes de la spécification de déploiement d'API (et non à des routes individuelles). Voir Limitation du nombre de demandes aux éléments dorsaux du service de passerelle d'API.
-
Sélectionnez Suivant pour spécifier les options permettant de définir une politique de demande d'authentification globale dans la page Authentification.
La politique de demande d'authentification contrôle l'accès aux API que vous déployez sur les passerelles d'API. Ayant d'abord spécifié une politique d'authentification globale, vous pouvez ensuite spécifier des politiques d'autorisation qui s'appliquent à des routes individuelles de la spécification de déploiement d'API. Voir Ajout de l'authentification et de l'autorisation aux déploiements d'API.
-
Sélectionnez Suivant pour entrer les détails des routes individuelles du déploiement d'API dans la page Routes.
-
Pour spécifier des politiques de demande qui s'appliquent à une route individuelle, sélectionnez Afficher les politiques de demande de route et spécifiez les données suivantes :
- Autorisation : Politique permettant de spécifier les opérations qu'un utilisateur final est autorisé à effectuer, en fonction des étendues d'accès dont il dispose. Notez que vous devez déjà avoir spécifié une politique d'authentification globale pour pouvoir spécifier une politique d'autorisation pour une route individuelle. Voir Ajout de l'authentification et de l'autorisation aux déploiements d'API.
- Spécification CORS : Politique permettant d'activer la prise en charge de la spécification CORS pour des routes individuelles de la spécification de déploiement d'API (vous n'avez pas besoin d'entrer d'abord une politique de spécification CORS globale). Voir Ajout de la prise en charge de la spécification CORS aux déploiements d'API.
- Validations d'en-tête : Politique permettant de valider les en-têtes dans les demandes. Voir Utilisation de la console pour ajouter des politiques de demande de validation.
- Validations des paramètres d'interrogation : Politique permettant de valider les paramètres d'interrogation dans les demandes. Voir Utilisation de la console pour ajouter des politiques de demande de validation.
- Validation du corps : Politique permettant de valider le contenu du corps des demandes. Voir Utilisation de la console pour ajouter des politiques de demande de validation
- Transformations d'en-tête : Politique permettant d'ajouter, de supprimer et de modifier les en-têtes des demandes. Voir Utilisation de la console pour ajouter des politiques de demande de transformation d'en-tête.
- Transformations d'interrogation : Politique permettant d'ajouter, de supprimer et de modifier les paramètres d'interrogation des demandes. Voir Utilisation de la console pour ajouter des politiques de demande de transformation de paramètre d'interrogation.
-
Pour spécifier des politiques de réponse qui s'appliquent à une route individuelle, sélectionnez Afficher les politiques de réponse de routage et spécifiez les données suivantes :
- Transformations d'en-tête : Politique permettant d'ajouter, de supprimer et de modifier les en-têtes des réponses. Voir Utilisation de la console pour ajouter des politiques de réponse de transformation d'en-tête.
- Sélectionnez Suivant pour vérifier les détails que vous avez entrés pour le déploiement d'API.
- Sélectionnez Créer ou enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
- (Facultatif) Vérifiez que l'API a été déployée avec succès en l'appelant (voir Appel d'une API déployée sur une passerelle d'API).
Modification d'un fichier JSON pour ajouter des politiques de demande et de réponse
Pour ajouter des politiques de demande et de réponse à une spécification de déploiement d'API dans un fichier JSON :
-
Dans votre éditeur JSON préféré, modifiez la spécification de déploiement d'API existante à laquelle vous souhaitez ajouter une politique de demande ou de réponse, ou créez une spécification de déploiement d'API (voir Création d'une spécification de déploiement d'API).
Au minimum, la spécification de déploiement d'API inclura une section
routes
contenant les éléments suivants :- Un chemin. Par exemple
/hello
. - Une ou plusieurs méthodes. Par exemple
GET
- La définition d'un élément dorsal. Par exemple, une URL ou l'OCID d'une fonction du service des fonctions pour OCI.
Par exemple, la spécification de déploiement d'API de base suivante définit une simple fonction sans serveur Hello World du service des fonctions pour OCI en tant qu'élément dorsal unique :
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
- Un chemin. Par exemple
-
Pour ajouter une politique de demande qui s'applique globalement à toutes les routes de la spécification de déploiement d'API :
-
Insérez une section
requestPolicies
avant la sectionroutes
. Par exemple :{ "requestPolicies": {}, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
-
Incluez une politique de demande dans la section
requestPolicies
.Par exemple, pour limiter le nombre de demandes envoyées à toutes les routes d'une spécification de déploiement d'API, vous incluez la politique
rateLimiting
dans la sectionrequestPolicies
comme suit :{ "requestPolicies": { "rateLimiting": { "rateKey": "CLIENT_IP", "rateInRequestsPerSecond": 10 } }, "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
Pour plus d'informations sur la politique de demande
rateLimiting
, voir Limitation du nombre de demandes aux éléments dorsaux du service de passerelle d'API.
-
-
Pour ajouter une politique de demande qui s'applique à une route individuelle de la spécification de déploiement d'API :
-
Insérez une section
requestPolicies
après la sectionbackend
de la route. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": {} } ] }
-
Incluez une politique de demande dans la section
requestPolicies
.Par exemple, pour activer la prise en charge de la spécification CORS dans un déploiement d'API pour une route particulière, vous incluez la politique
cors
dans la sectionrequestPolicies
comme suit :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "requestPolicies": { "cors":{ "allowedOrigins": ["*", "https://oracle.com"], "allowedMethods": ["*", "GET"], "allowedHeaders": [], "exposedHeaders": [], "isAllowCredentialsEnabled": false, "maxAgeInSeconds": 3000 } } } ] }
Pour plus d'informations sur la politique de demande
cors
, voir Ajout de la prise en charge de la spécification CORS aux déploiements d'API.
-
-
Pour ajouter une politique de réponse qui s'applique à une route individuelle de la spécification de déploiement d'API :
-
Insérez une section
responsePolicies
après la sectionbackend
de la route. Par exemple :{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "responsePolicies": {} } ] }
-
Incluez une politique de réponse dans la section
responsePolicies
.Par exemple, pour renommer un en-tête
X-Username
àX-User-ID
dans la réponse d'une route particulière, vous incluez la politiqueheaderTransformations
dans la sectionresponsePolicies
comme suit:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" }, "responsePolicies": { "headerTransformations": { "renameHeaders": { "items": [ { "from": "X-Username", "to": "X-User-ID" } ] } } } } ] }
Pour plus d'informations sur la politique de réponse
headerTransformations
, voir Modification d'un fichier JSON pour ajouter des politiques de réponse de transformation d'en-tête.
-
- Enregistrez le fichier JSON contenant la spécification de déploiement d'API.
-
Utilisez comme suit la spécification de déploiement d'API lorsque vous créez ou mettez à jour un déploiement d'API :
- En spécifiant le fichier JSON dans la console lorsque vous sélectionnez l'option Charger une API existante.
- En spécifiant le fichier JSON dans une demande à l'API REST du service Passerelle d'API.
Pour plus d'informations, voir Déploiement d'une API sur une passerelle d'API en créant un déploiement d'API.