Étape 5 : définir la politique de sécurité pour le service proxy (Google Cloud API Gateway)

Ces instructions montrent comment définir la politique de sécurité sur votre Google Cloud API Gateway.

Les étapes précédentes ont permis de créer une fonction Google Cloud qui peut être appelée par toute personne disposant du point de terminaison correct de Google Cloud API Gateway. À moins que vous ne souhaitiez que votre point de terminaison soit ouvert au public, vous devez le sécuriser en ajoutant une section securityDefinitions personnalisée au fichier de configuration pour la définition API.

Dans ce chapitre :

Mettre à jour le fichier de configuration

Le nom du fichier de configuration est enregistré dans le champ « Nom du fichier de configuration » de la feuille de calcul. Les instructions ci-dessous vous montrent comment ajouter une section securityDefinitions au fichier de configuration. Après l’ajout, la personnalisation, le chargement et l’affichage de cette section, seul Snowflake peut appeler votre fonction Cloud via la passerelle API.

  1. Ajoutez la section securityDefinitions suivante au fichier de configuration. Ajoutez-la juste au-dessus de la section schemes: du fichier de configuration et au même niveau d’indentation.

    securityDefinitions:
      <security-def-name>:
        authorizationUrl: ""
        flow: "implicit"
        type: "oauth2"
        x-google-issuer: "<gmail service account>"
        x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<gmail service account>"
    
  2. Remplacez le <security-def-name> par un nom de définition de sécurité unique (par exemple, snowflakeAccess01).

  3. Enregistrez ce nom dans le champ « Nom de la définition de sécurité » de la feuille de calcul.

  4. Remplacez <gmail service account> par valeur du champ « API_GCP_SERVICE_ACCOUNT » de la feuille de calcul. Effectuez le changement dans deux champs du fichier de configuration :

    1. Le champ x-google-issuer.

    2. La fin du champ x-google-jwks_uri.

  5. Mettez à jour la section post: du fichier de configuration pour faire référence à la définition de sécurité que vous avez créée ci-dessus.

    1. Sous le champ operationId, ajoutez :

      security:
        - <security-def-name>: []
      

      Il doit être indenté au même niveau que le champ operationId.

      Remplacez <security-def-name> par la valeur du champ « Nom de la définition de sécurité » de la feuille de calcul.

      Veillez à inclure un trait d’union et un blanc avant le nom de la définition de sécurité, comme indiqué ci-dessus.

      Veillez à inclure les accolades vides ([]) après les deux-points.

      Par exemple :

      security:
        - snowflakeAccess01: []
      

      Votre fichier de configuration mis à jour devrait ressembler à ce qui suit :

      swagger: '2.0'
      info:
        title: API Gateway config for Snowflake external function
        description: This configuration file connects the API Gateway resource to the remote service (Cloud Function).
        version: 1.0.0
      securityDefinitions:
        snowflakeAccess01:
          authorizationUrl: ""
          flow: "implicit"
          type: "oauth2"
          x-google-issuer: "<API_GCP_SERVICE_ACCOUNT>"
          x-google-jwks_uri: "https://www.googleapis.com/robot/v1/metadata/x509/<API_GCP_SERVICE_ACCOUNT>"
      schemes:
        - https
      produces:
        - application/json
      paths:
        /demo-func-resource:
          post:
            summary: Echo the input
            operationId: operationID
            security:
              - snowflakeAccess01: []
            x-google-backend:
              address: <Cloud Function Trigger URL>
              protocol: h2
            responses:
              '200':
                description: <DESCRIPTION>
                schema:
                  type: string
      
  6. Enregistrez le fichier de configuration.

Recharger le fichier de configuration mis à jour

  1. Sur la page Gateways cliquez sur le nom de votre passerelle.

  2. Cliquez sur EDIT.

  3. Sous API Config, cliquez dans la case intitulée Select a Config.

  4. Sélectionnez l’option Create new API config.

  5. Dans la case qui contient Upload an API Spec, cliquez sur le bouton BROWSE.

  6. Sélectionnez le fichier YAML souhaité, que vous avez créé précédemment. Vérifiez qu’il porte l’extension « .yaml » ou « .yml ».

  7. Entrez le Display Name. Utilisez un nouveau nom unique, et non le nom que vous utilisiez précédemment.

  8. Si on vous demande de Select a Service Account, sélectionnez App Engine default service account.

    Si vous créez une fonction destinée à être utilisée en production (plutôt que comme exemple), vous pouvez choisir un compte de service différent.

    Le compte de service sélectionné doit disposer des privilèges appropriés, y compris les privilèges permettant d’appeler la fonction Google Cloud.

  9. Vous devriez maintenant être de retour sur la page de votre passerelle API. Si le champ Config indique le nom d’affichage de l’ancien fichier de configuration API, alors :

    1. Cliquez sur EDIT.

    2. Sous API Config, trouvez à nouveau la case Select a Config et cliquez dessus.

    3. Sélectionnez la nouvelle configuration API.

    4. Cliquez sur le bouton UPDATE.

      Cela vous ramène à la liste des passerelles API.

    5. Vous devrez peut-être attendre quelques minutes pendant que la passerelle API soit mise à jour.

      Vous pouvez voir une icône à gauche du nom de la passerelle API qui indique que la passerelle est en cours d’actualisation.

      Vous pouvez cliquer sur le bouton REFRESH au-dessus du nom de la passerelle pour vérifier si l’actualisation est toujours en cours. Lorsque l’icône à gauche

      du nom de la passerelle disparaît, la passerelle devrait être entièrement actualisée et vous pouvez passer à l’étape suivante.

  10. Pour vous assurer que votre fonction externe fonctionne correctement avec le nouveau fichier de configuration de sécurité, appelez à nouveau votre fonction externe. Pour plus de détails, voir Appel d’une fonction externe pour GCP.