Étape 5 : Créez une politique de sécurité GCP pour le proxy de service dans la Console

Dans les étapes précédentes, vous avez créé 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 le point de terminaison soit ouvert au public, vous devez le sécuriser en créant une politique de sécurité sur la Google Cloud API Gateway.

Cette rubrique fournit des instructions pour créer une politique de sécurité pour la passerelle API Gateway en ajoutant une section securityDefinitions personnalisée au fichier de configuration de la définition API.

Important

Snowflake recommande fortement de créer une politique de sécurité pour la passerelle API Gateway. Une fois cette étape terminée, seul Snowflake est autorisé à appeler votre fonction Cloud via la passerelle API Gateway.

Dans ce chapitre :

Mettre à jour le fichier de configuration

Note

Le nom du fichier de configuration est enregistré dans le champ « Nom du fichier de configuration » de votre feuille de calcul de suivi.

  1. Ajoutez ou mettez à jour la section securityDefinitions suivante dans le 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>"
    

    Dans la section :

    • Remplacez <nom-def-securite> par un nom de définition de sécurité unique (par exemple, snowflakeAccess01). Si vous avez ajouté la définition de sécurité temporaire à l’étape 2 du tutoriel (Étape 2 : Créer le service proxy (Google Cloud API Gateway) dans la console), c’est déjà fait.

    • De plus, enregistrez ce nom dans le champ « Nom de la définition de sécurité » de votre feuille de calcul de suivi.

    • Remplacez <compte de service gmail> par la valeur du champ « API_GCP_SERVICE_ACCOUNT » dans votre feuille de calcul de suivi. Ajoutez la valeur à deux endroits dans le fichier de configuration :

      • champ x-google-issuer

      • champ x-google-jwks_uri (accolé à la fin du champ)

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

    Sous le champ operationId, ajoutez :

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

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

    • Remplacez <nom_def_securite> par la valeur du champ « Nom de la définition de sécurité » dans votre feuille de calcul de suivi si ce n’est pas déjà fait.

    • 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: []
    
  3. Enregistrez le fichier de configuration.

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

Rechargez le fichier mis à jour

Après avoir mis à jour le fichier de configuration, vous devez recharger le fichier dans la Google Cloud Console :

  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 Gateway. Si le champ Config indique le nom d’affichage de l’ancien fichier de configuration API :

    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.

    Vous devrez peut-être attendre quelques minutes pendant que la passerelle API Gateway soit mise à jour. Vous pouvez voir une icône à gauche du nom de la passerelle API Gateway qui indique que la passerelle est en cours d’actualisation.

Pour vérifier si l’actualisation est toujours en cours, cliquez sur le bouton REFRESH au-dessus du nom de la passerelle. 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.

Testez votre fonction externe

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.

Étape suivante

Aucun. Vous avez réussi à créer une fonction externe pour GCP.