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 :

  1. 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.

  2. 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.
  3. 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.

  4. Sélectionnez Suivant pour entrer les détails des routes individuelles du déploiement d'API dans la page Routes.

  5. 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 :

  6. 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 :

  7. Sélectionnez Suivant pour vérifier les détails que vous avez entrés pour le déploiement d'API.
  8. Sélectionnez Créer ou enregistrer les modifications pour créer ou mettre à jour le déploiement d'API.
  9. (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 :

  1. 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"
          }
        }
      ]
    }
  2. Pour ajouter une politique de demande qui s'applique globalement à toutes les routes de la spécification de déploiement d'API :

    1. Insérez une section requestPolicies avant la section routes. Par exemple :

      
      {
        "requestPolicies": {},
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
               "type": "ORACLE_FUNCTIONS_BACKEND",
               "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            }
          }
        ]
      }
    2. 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 section requestPolicies 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.

  3. Pour ajouter une politique de demande qui s'applique à une route individuelle de la spécification de déploiement d'API :

    1. Insérez une section requestPolicies après la section backend de la route. Par exemple :

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "requestPolicies": {}
          }
        ]
      }
    2. 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 section requestPolicies 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.

  4. Pour ajouter une politique de réponse qui s'applique à une route individuelle de la spécification de déploiement d'API :

    1. Insérez une section responsePolicies après la section backend de la route. Par exemple :

      {
        "routes": [
          {
            "path": "/hello",
            "methods": ["GET"],
            "backend": {
              "type": "ORACLE_FUNCTIONS_BACKEND",
              "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
            },
            "responsePolicies": {}
          }
        ]
      }
    2. 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 politique headerTransformations dans la section responsePolicies 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.

  5. Enregistrez le fichier JSON contenant la spécification de déploiement d'API.
  6. 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.