Sécuriser le trafic vers un service avec la console Google Cloud

Cette page explique comment déployer une API sur API Gateway pour sécuriser le trafic vers un service de backend.

Suivez les étapes ci-dessous pour déployer une nouvelle API afin d'accéder à un service de backend sur des fonctions Cloud Run à l'aide de la console Google Cloud. Ce guide de démarrage rapide explique également comment utiliser une clé API pour protéger votre backend contre les accès non autorisés.

Avant de commencer

  1. Dans la console Google Cloud, accédez à la page API Gateway, puis sélectionnez ou créez un projet Google Cloud.

    Accéder à la page API Gateway

  2. API Gateway nécessite l'activation des services Google suivants :

    Nom Titre
    apigateway.googleapis.com API de la passerelle API
    servicemanagement.googleapis.com API Service Management
    servicecontrol.googleapis.com API Service Control

    Si vous n'avez pas encore activé ces services pour le projet sélectionné, vous serez invité à le faire.

  3. Vérifiez que la facturation est activée sur votre projet.

    Découvrir comment activer la facturation

Déployer un backend d'API

API Gateway se situe devant un service de backend déployé et gère toutes les requêtes entrantes. Dans ce guide de démarrage rapide, API Gateway achemine les appels entrants vers un backend de fonction Cloud Run nommé helloGET qui contient la fonction illustrée ci-dessous :

/**
 * HTTP Cloud Function.
 * This function is exported by index.js, and is executed when
 * you make an HTTP request to the deployed function's endpoint.
 *
 * @param {Object} req Cloud Function request context.
 *                     More info: https://expressjs.com/en/api.html#req
 * @param {Object} res Cloud Function response context.
 *                     More info: https://expressjs.com/en/api.html#res
 */

exports.helloGET = (req, res) => {
  res.send('Hello World!');
};

Suivez les étapes de la section Démarrage rapide: utiliser la Google Cloud CLI pour télécharger l'exemple de code des fonctions Cloud Run et déployer le service de backend de la fonction Cloud Run.

Créer une définition d'API

API Gateway utilise une définition d'API pour acheminer les appels vers le service de backend. Vous pouvez utiliser une spécification OpenAPI contenant des annotations pour définir le comportement souhaité pour API Gateway. L'OpenAPI La spécification de ce guide de démarrage rapide contient des instructions de routage vers le backend de la fonction Cloud Run:

# openapi2-functions.yaml
swagger: '2.0'
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://us-central1-PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

Pour définir votre API à l'aide de la spécification OpenAPI présentée ci-dessus, procédez comme suit :

  1. À partir de la ligne de commande, créez un fichier nommé openapi2-functions.yaml.

  2. Copiez et collez le contenu de la spécification OpenAPI ci-dessus dans le fichier que vous venez de créer.

  3. Modifiez le fichier comme suit :

    1. Dans le champ title, remplacez API_ID par le nom de votre API (qui sera créé à l'étape suivante) et optional-string par une brève description de votre choix. La valeur de ce champ est utilisée lors de la génération des clés API qui accordent l'accès à cette API. Consultez la section Exigences concernant les ID d'API pour connaître les consignes de dénomination des ID d'API.
    2. Dans le champ address, remplacez PROJECT_ID par le nom de votre projet Google Cloud.

Créer une passerelle

Vous êtes maintenant prêt à créer et à déployer une passerelle sur API Gateway.

  1. Ouvrez la page API Gateway dans la console Google Cloud.

    Accéder à la page API Gateway

  2. Cliquez sur Créer une passerelle.

  3. Dans la section API :

    1. Vous pouvez choisir de créer une API ou de sélectionner une API existante dans Sélectionnez une liste déroulante d'API. Pour ce tutoriel, sélectionnez Créer une API.
    2. Saisissez le nom à afficher de votre API.
    3. Saisissez l'ID de votre API.
    4. (Facultatif) Ajoutez des étiquettes à votre API à l'aide d'un format clé/valeur. Pour en ajouter d'autres plusieurs étiquettes, cliquez sur Ajouter une étiquette, puis saisissez des valeurs supplémentaires.
  4. Dans la section API Config (Configuration de l'API) :

    1. Vous pouvez choisir de créer une configuration d'API ou de sélectionner une configuration d'API existante dans le menu déroulant Select a Config (Sélectionner une configuration). Pour ce tutoriel, sélectionnez Créer Configuration de l'API.
    2. Utilisez l'explorateur de fichiers pour importer le openapi2-functions.yaml utilisé pour définir votre API.
    3. Saisissez un nom à afficher pour votre configuration d'API.
    4. Sélectionnez un compte de service dans la liste déroulante. Le compte de service que vous sélectionnez servira d'identité pour API Gateway.

    5. (Facultatif) Ajoutez des libellés à votre configuration d'API à l'aide d'un format clé/valeur. Pour en ajouter d'autres plusieurs étiquettes, cliquez sur Ajouter une étiquette, puis saisissez des valeurs supplémentaires.

  5. Dans la section Gateway details (Détails de la passerelle) :

    1. Saisissez le nom à afficher de la passerelle. L'URL de la passerelle est générée automatiquement.
    2. Sélectionnez l'emplacement de la passerelle dans le menu déroulant.
    3. (Facultatif) Ajoutez des étiquettes à votre passerelle à l'aide d'un format clé/valeur. Pour en ajouter d'autres plusieurs étiquettes, cliquez sur Ajouter une étiquette, puis saisissez des valeurs supplémentaires.
  6. Cliquez sur Créer une passerelle.

Cette action déploie la configuration de l'API sur une passerelle nouvellement créée. Le déploiement d'une configuration d'API sur une passerelle définit une URL externe que les clients API peuvent utiliser pour accéder à votre API.

L'opération peut prendre plusieurs minutes. Pour vérifier l'état du processus de création et de déploiement, vous pouvez cliquer sur l'icône Notification dans la barre de navigation principale pour afficher une notification d'état, comme illustré dans l'image ci-dessous :

Panneau des notifications

Si l'opération réussit, vous pouvez afficher les détails de la passerelle sur la page de destination Passerelles.

Accéder à la page Passerelles

Notez l'URL de la passerelle. Vous l'utiliserez pour tester votre déploiement à l'étape suivante.

Tester le déploiement de votre API

Vous pouvez désormais envoyer des requêtes à votre API à l'aide de l'URL générée lors du déploiement de votre passerelle.

Dans votre navigateur Web, saisissez l'URL suivante, où :

  • GATEWAY_URL spécifie l'URL de votre passerelle déployée.
  • hello est le chemin d'accès spécifié dans la configuration de l'API.
https://GATEWAY_URL/hello

Exemple :

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Le message Hello World! doit s'afficher dans votre navigateur.

Vous avez réussi à créer et à déployer une passerelle API.

Sécuriser l'accès avec une clé API

Pour sécuriser l'accès au backend de votre API, vous pouvez générer une clé API associée à votre projet et lui accorder l'accès nécessaire pour appeler votre API. Pour en savoir plus, consultez Restreindre l'accès à une API à l'aide de clés API.

Si aucune clé API n'est associée au projet Google Cloud que vous utilisez dans ce guide de démarrage rapide, vous pouvez en ajouter une en suivant la procédure décrite dans Créer une clé API.

Pour sécuriser l'accès à votre passerelle à l'aide d'une clé API :

  1. Activez la prise en charge des clés API pour votre service:
    1. Dans la console Google Cloud, accédez à la page API et Services > bibliothèque.
    2. Dans la barre de recherche, saisissez le nom du service géré de l'API que vous venez de créer. Vous trouverez cette valeur dans la colonne Service géré de votre API sur la page de destination des API. Exemple :
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. Sur la page de destination de votre service, cliquez sur Activer.
  2. Modifiez la spécification OpenAPI utilisée pour créer votre configuration d'API afin d'inclure des instructions permettant d'appliquer une règle de sécurité pour la validation des clés API à tout le trafic. Ajoutez le type security et securityDefinitions comme indiqué ci-dessous :
        # openapi2-functions.yaml
        swagger: '2.0'
        info:
          title: API_ID optional-string
          description: Sample API on API Gateway with a Google Cloud Functions backend
          version: 1.0.0
        schemes:
          - https
        produces:
          - application/json
        paths:
          /hello:
            get:
              summary: Greet a user
              operationId: hello
              x-google-backend:
                address:https://us-central1.PROJECT_ID.cloudfunctions.net/helloGET
              security:
              - api_key: []
              responses:
                '200':
                  description: A successful response
                  schema:
                    type: string
        securityDefinitions:
          # This section configures basic authentication with an API key.
          api_key:
            type: "apiKey"
            name: "key"
            in: "query"
    securityDefinition configure votre API pour qu'elle exige une clé API transmise en tant que paramètre de requête nommé key lors de la demande d'accès à tous les chemins définis dans la spécification.
  3. Créez et déployez une configuration d'API sur votre passerelle existante :
    1. Accédez à la page de destination des passerelles.

      Accéder à la page Passerelles

    2. Sélectionnez votre passerelle dans la liste pour afficher les détails.
    3. Cliquez sur Modifier pour ouvrir le volet de configuration de la passerelle.
    4. Dans la section Configuration de l'API:
      1. Sélectionnez Créer une configuration d'API dans le menu déroulant disponible.
      2. Importez votre spécification OpenAPI modifiée à l'aide du navigateur de fichiers.
      3. Saisissez le nom à afficher pour votre nouvelle configuration d'API.
      4. Sélectionnez un compte de service dans la liste déroulante. Le compte de service que vous sélectionnez sera utilisé comme identité pour API Gateway.
      5. (Facultatif) Ajoutez des étiquettes à votre configuration d'API à l'aide d'un format clé/valeur. Pour ajouter plusieurs libellés, cliquez sur Ajouter une étiquette, puis saisissez des valeurs supplémentaires.
    5. Cliquez sur Mettre à jour.

Tester votre clé API

Une fois que vous avez créé et déployé l'API modifiée, envoyez-lui une requête.

Dans votre navigateur Web, saisissez l'URL suivante, où :

  • GATEWAY_URL spécifie l'URL de votre passerelle déployée.
  • hello est le chemin d'accès spécifié dans la configuration de l'API.
https://GATEWAY_URL/hello

Exemple :

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

L'erreur suivante devrait se produire :

UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.

Dans votre navigateur, saisissez l'URL suivante, où :

  • GATEWAY_URL spécifie l'URL de votre passerelle déployée.
  • hello est le chemin d'accès spécifié dans la configuration de l'API.
  • API_KEY spécifie la clé API que vous avez créée dans la section Sécuriser l'accès à l'aide d'une clé API.
https://GATEWAY_URL/hello?key=API_KEY

Vous devriez maintenant voir Hello World! dans votre navigateur.

Félicitations ! Vous avez réussi à protéger le backend de votre API avec une passerelle API. Vous pouvez maintenant commencer à intégrer de nouveaux clients API en générant d'autres clés API.

Suivre l'activité de l'API

  1. Affichez les graphiques d'activité de votre API sur la page API Gateway dans le console Google Cloud. Cliquez sur votre API pour afficher ses graphiques d'activité sur la Vue d'ensemble. Il peut s'écouler quelques instants avant que les requêtes ne soient reflétées dans les graphiques.

  2. Consultez les journaux de requêtes de votre API sur la page de l'explorateur de journaux. Un lien vers la page Explorateur de journaux est disponible sur la page API Gateway de la console Google Cloud.

    Accéder à la page API Gateway

    Une fois sur la page API Gateway :

    1. Sélectionnez l'API à afficher.
    2. Cliquez sur l'onglet Détails.
    3. Cliquez sur le lien sous Journaux.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce guide de démarrage rapide soient facturées sur votre compte Google Cloud, vous pouvez :

Vous pouvez également supprimer le projet Google Cloud utilisé pour ce tutoriel.

Étape suivante