Configurer les paramètres réseau

Les paramètres réseau de Cloud Functions vous permettent de contrôler l'entrée et la sortie réseau depuis et vers des fonctions spécifiques. Par exemple, vous pouvez utiliser les paramètres réseau pour les cas d'utilisation suivants :

  • Sécuriser vos fonctions en mettant en œuvre un contrôle des accès basé sur les réseaux
  • Configurer le trafic sortant d'une fonction de façon à respecter les règles de pare-feu, de DNS et de routage associées à votre réseau VPC
  • Associer le trafic sortant d'une fonction à une adresse IP statique

Pour plus d'informations sur les cas d'utilisation, consultez la section Exemples de cas d'utilisation.

Paramètres d'entrée

Les paramètres d'entrée limitent les appels d'une fonction HTTP par des ressources extérieures à votre projet Google Cloud ou au périmètre de service VPC Service Controls. Pour les paramètres d'entrée, vous pouvez spécifier les éléments suivants :

  • Autoriser tout le trafic : par défaut. Toutes les requêtes entrantes vers la fonction sont autorisées, qu'elles proviennent d'Internet ou des ressources d'un même projet.
  • Autoriser uniquement le trafic interne : seules les requêtes provenant des réseaux VPC du même projet ou du périmètre VPC Service Controls sont autorisées. Toutes les autres requêtes sont refusées avec une erreur 403.

Vous pouvez spécifier des paramètres d'entrée lorsque vous déployez ou mettez à jour votre fonction, à l'aide de Google Cloud Console ou de l'outil de ligne de commande gcloud :

Console

  1. Ouvrez la page de présentation de Cloud Functions dans Cloud Console :

    Accéder à la page de présentation de Cloud Functions

  2. Cliquez sur Créer une fonction. Vous pouvez également cliquer sur une fonction existante pour accéder à sa page d'informations, puis sur Modifier.

  3. Développez les paramètres avancés en cliquant sur Variables d'environnement, mise en réseau, délais avant expiration, etc.

  4. Dans la section Mise en réseau, sélectionnez une valeur pour le champ Paramètres d'entrée.

gcloud

Exécutez la commande gcloud functions deploy pour déployer ou mettre à jour la fonction, puis spécifiez l'option --ingress-settings :

gcloud functions deploy FUNCTION_NAME \
--trigger-http \
--ingress-settings INGRESS_SETTINGS \
FLAGS...

où :

  • FUNCTION_NAME est le nom de la fonction.
  • INGRESS_SETTINGS est l'une des valeurs acceptées pour les paramètres d'entrée. Les valeurs possibles sont :

    • all
    • internal-only
    • internal-and-gclb : autorise le trafic interne ainsi que le trafic envoyé à une adresse IP publique exposée par Google Cloud Load Balancer (GCLB). Bloque le trafic envoyé à cloudfunctions.net ou à tout domaine personnalisé configuré via Cloud Functions. Empêche les utilisateurs de contourner les contrôles d'accès (Cloud Armor, IAP) qu'ils ont configurés via GCLB.
  • FLAGS... fait référence aux autres options que vous transmettez à la commande deploy.

Si vous utilisez Google Cloud Armor avec Cloud Load Balancing, vous pouvez créer des règles de sécurité qui filtrent des conditions basées sur le trafic, telles que l'adresse IP, la plage d'adresses IP, le code régional ou les en-têtes d'une requête entrante. Pour en savoir plus, consultez la Présentation des règles de sécurité Google Cloud Armor.

Paramètres de sortie

Les paramètres de sortie contrôlent le routage des requêtes HTTP sortantes depuis une fonction. Pour spécifier des paramètres de sortie, vous devez connecter la fonction à un réseau VPC à l'aide d'un connecteur d'accès au VPC sans serveur. Les paramètres de sortie contrôlent les types de trafic acheminés via le connecteur vers votre réseau VPC.

Pour les paramètres de sortie, vous pouvez spécifier les éléments suivants :

  • Acheminer uniquement les requêtes envoyées à des adresses IP privées via le connecteur VPC : par défaut. Seules les requêtes adressées aux plages d'adresses IP RFC 1918 et RFC 6598 ou aux noms DNS internes sont acheminées vers votre réseau VPC. Toutes les autres requêtes sont acheminées directement vers Internet.
  • Acheminer tout le trafic via le connecteur VPC : toutes les requêtes sortantes provenant du service sont acheminées vers votre réseau VPC.

Vous pouvez spécifier des paramètres de sortie lorsque vous déployez ou mettez à jour votre fonction, à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud :

Console

  1. Ouvrez la page de présentation de Cloud Functions dans Cloud Console :

    Accéder à la page de présentation de Cloud Functions

  2. Cliquez sur Créer une fonction. Vous pouvez également cliquer sur une fonction existante pour accéder à sa page d'informations, puis sur Modifier.

  3. Développez les paramètres avancés en cliquant sur Variables d'environnement, mise en réseau, délais avant expiration, etc.

  4. Dans la section Mise en réseau, sous Paramètres de sortie, sélectionnez un connecteur d'accès au VPC sans serveur.

  5. Sélectionnez le paramètre de sortie approprié en fonction de la manière dont vous souhaitez acheminer le trafic sortant via le connecteur.

gcloud

Exécutez la commande gcloud functions deploy pour déployer ou mettre à jour la fonction, puis spécifiez l'option --egress-settings :

gcloud functions deploy FUNCTION_NAME \
--vpc-connector CONNECTOR_NAME \
--egress-settings EGRESS_SETTINGS \
FLAGS...

où :

  • FUNCTION_NAME est le nom de la fonction.
  • CONNECTOR_NAME est le nom du connecteur d'accès au VPC sans serveur à utiliser. Pour en savoir plus, consultez la documentation sur gcloud.

  • EGRESS_SETTINGS est l'une des valeurs acceptées pour les paramètres de sortie. Consultez la documentation sur gcloud.

  • FLAGS... fait référence aux autres options que vous transmettez à la commande deploy.

Exemples de cas d'utilisation

Créer une fonction ne pouvant pas être appelée par des clients externes

Pour assurer la sécurité de vos fonctions HTTP, vous pouvez spécifier une autorisation afin qu'elles ne soient appelées que par les ressources associées au même projet Cloud ou au même périmètre de service VPC Service Controls.

  1. Déployez votre fonction et n'autorisez que le trafic interne. Utilisez Cloud Console ou l'outil de ligne de commande gcloud :

    Console

    1. Ouvrez la page de présentation de Cloud Functions dans Cloud Console :

      Accéder à la page de présentation de Cloud Functions

    2. Cliquez sur Créer une fonction. Vous pouvez également cliquer sur une fonction existante pour accéder à sa page d'informations, puis sur Modifier.

    3. Développez les paramètres avancés en cliquant sur Variables d'environnement, mise en réseau, délais avant expiration, etc.

    4. Dans la section Mise en réseau, sous Paramètres d'entrée, sélectionnez Autoriser uniquement le trafic interne.

    gcloud

    Utilisez la commande gcloud functions deploy :

    gcloud functions deploy FUNCTION_NAME \
    --ingress-settings internal-only \
    FLAGS...
    

Une fois votre fonction déployée, les requêtes provenant de l'extérieur de votre projet Cloud ne peuvent plus y accéder. Si vous utilisez VPC Service Controls, les requêtes provenant de l'extérieur du périmètre de service sont bloquées. Les instances de VM situées dans votre projet ou périmètre de service peuvent toujours atteindre votre fonction en envoyant des requêtes à son point de terminaison HTTPS.

Si vous souhaitez appeler cette fonction limitée depuis une autre fonction, la fonction appelante doit acheminer son trafic sortant via votre réseau VPC.

Acheminer le trafic sortant d'une fonction via votre réseau VPC

Les réseaux VPC de Google Cloud sont compatibles avec un grand nombre de configurations et de fonctionnalités de mise en réseau. En acheminant le trafic sortant de votre fonction via votre réseau VPC, vous pouvez vous assurer que le trafic sortant de Cloud Functions respecte les règles de pare-feu, de DNS, de routage et autres de votre réseau VPC. Vous pouvez également utiliser des produits tels que Cloud NAT.

  1. Configurez un réseau VPC. Configurez un réseau VPC existant ou créez-en un en suivant la procédure décrite sur la page Utiliser des réseaux VPC.

  2. Configurez un connecteur d'accès au VPC sans serveur. Les fonctions Cloud nécessitent un connecteur d'accès au VPC sans serveur pour pouvoir acheminer le trafic vers votre réseau VPC. Créez un connecteur et configurez les autorisations appropriées en suivant la procédure décrite sur la page Se connecter à un réseau VPC.

  3. Déployez une fonction qui utilise le connecteur et achemine l'ensemble du trafic sortant via le connecteur. Utilisez Cloud Console ou l'outil de ligne de commande gcloud :

    Console

    1. Ouvrez la page de présentation de Cloud Functions dans Cloud Console :

      Accéder à la page de présentation de Cloud Functions

    2. Cliquez sur Créer une fonction. Vous pouvez également cliquer sur une fonction existante pour accéder à sa page d'informations, puis sur Modifier.

    3. Développez les paramètres avancés en cliquant sur Variables d'environnement, mise en réseau, délais avant expiration, etc.

    4. Dans la section Mise en réseau, sous Paramètres de sortie, sélectionnez le connecteur d'accès au VPC sans serveur, puis Acheminer tout le trafic via le connecteur VPC.

    gcloud

    Utilisez la commande gcloud functions deploy :

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    --egress-settings all \
    FLAGS...
    

Une fois votre fonction déployée, tout le trafic qui en provient est acheminé via votre réseau VPC, conformément aux règles que vous avez définies sur ce réseau. Notez que votre fonction ne peut pas accéder au réseau Internet public, à moins de configurer Cloud NAT.

Associer le trafic sortant d'une fonction à une adresse IP statique

Dans certains cas, vous pouvez souhaiter que le trafic provenant de votre fonction soit associé à une adresse IP statique. C'est utile si, par exemple, vous appelez un service externe qui n'accepte que les requêtes provenant d'adresses IP explicitement spécifiées.

  1. Acheminez le trafic sortant de votre fonction via votre réseau VPC. Reportez-vous à la section précédente, Acheminer le trafic sortant d'une fonction via votre réseau VPC.

  2. Configurez Cloud NAT et spécifiez une adresse IP statique. Suivez les procédures décrites dans les sections Spécifier des plages de sous-réseaux pour la NAT et Spécifier les adresses IP pour la NAT afin de configurer Cloud NAT pour le sous-réseau associé au connecteur d'accès au VPC sans serveur de votre fonction. Notez que vous avez besoin que Cloud NAT mappe toutes les plages d'adresses IP principales et secondaires pour tous les sous-réseaux avec la passerelle NAT, afin d'inclure le sous-réseau du connecteur dans le mappage.

Équilibrage de charge multirégional

Vous pouvez déployer une fonction dans différentes régions et autoriser l'envoi de la requête à la région opérationnelle la plus proche. Pour ce faire, vous devez configurer un NEG sans serveur pour la fonction et le connecter à un équilibreur de charge, comme décrit dans la section Configurer un équilibreur de charge HTTP(S) avec des NEG sans serveur.