Mise en réseau privée et Cloud Run

Cette page décrit les options de configuration permettant d'inclure des ressources Cloud Run dans votre réseau privé.

Pour tirer pleinement parti de ce contenu, vous devez maîtriser les concepts suivants :

Pour sécuriser le trafic réseau de leurs services et applications, de nombreuses organisations utilisent un réseau privé sur Google Cloud doté de contrôles de périmètre pour empêcher l'exfiltration de données. Votre réseau privé peut comporter les propriétés suivantes :

  • Vous pouvez disposer d'un certain nombre de ressources, telles que des VM, sur un ou plusieurs réseaux VPC.
  • Ces VM peuvent appartenir à de nombreux projets différents et être connectées avec un VPC partagé.
  • Des charges de travail sur site ou dans d'autres clouds peuvent être connectées à cet environnement à l'aide de Cloud VPN ou de Cloud Interconnect.
  • Vous avez peut-être activé un périmètre VPC Service Controls pour réduire le risque d'exfiltration de données.
  • Vous pouvez avoir plusieurs réseaux privés de ce type : un pour chacun des différents environnements, un pour les environnements de production, un pour la préproduction et un pour le développement.

Contrairement aux VM, les ressources Cloud Run ne sont associées à aucun réseau VPC particulier par défaut. Cette page explique comment intégrer des ressources Cloud Run à votre réseau privé.

Présentation de la mise en réseau sans serveur

Pour explorer diverses configurations courantes d'entreprise pour la mise en réseau publique et privée, consultez notre présentation de la mise en réseau sans serveur.

Ce point de départ présente les scénarios de base et avancés Cloud Run suivants :

  • Déployer en toute sécurité une application "Hello, World!" qui utilise un domaine personnalisé
  • Développer des applications et des microservices d'entreprise
  • Accéder à des bases de données et à des systèmes de fichiers de manière publique ou privée
  • Contacter des fournisseurs SaaS
  • Appliquer des contrôles de sécurité

Consultez la liste des modules Terraform correspondants.

Recevoir des requêtes de votre réseau privé

La réception de requêtes en provenance de votre réseau privé nécessite une configuration basée sur les conditions suivantes :

  • L'origine de la requête.
  • Indique si la ressource Cloud Run n'autorise que les requêtes provenant de votre réseau privé.

Par exemple, la réception de requêtes à partir de réseaux VPC peut nécessiter une configuration différente de la réception de requêtes à partir de ressources sur site ou d'autres clouds.

Recevoir des requêtes d'autres ressources Cloud Run ou d'App Engine

Lorsque votre ressource Cloud Run de destination reçoit du trafic en provenance d'autres ressources Cloud Run ou d'App Engine, et qu'elle utilise le paramètre d'entrée "interne" ou "équilibrage de charge interne", le trafic doit alors utiliser le réseau VPC pour être considéré comme interne.

Pour recevoir des requêtes d'autres ressources Cloud Run ou d'App Engine, procédez comme suit :

  1. Configurez la ressource source pour utiliser soit la sortie VPC directe, soit un connecteur.

  2. Assurez-vous que le trafic vers Cloud Run transite par le réseau VPC en utilisant l'une des options suivantes :

    • Configurez la ressource source pour envoyer tout le trafic via le réseau VPC et activez l'accès privé à Google sur le sous-réseau associé à la sortie VPC directe ou au connecteur.
    • Configurez Private Service Connect ou un équilibreur de charge d'application interne pour faire face à votre ressource Cloud Run de destination. Avec cette configuration, vous accédez à Cloud Run à l'aide d'adresses IP internes, de sorte que les requêtes sont acheminées via le réseau VPC.
    • Activez l'accès privé à Google sur le sous-réseau associé à la ressource source et configurez le DNS pour résoudre les URL run.app dans les plages private.googleapis.com (199.36.153.8/30) ou restricted.googleapis.com (199.36.153.4/30). Les requêtes adressées sur ces plages sont acheminées via le réseau VPC.

Recevoir des requêtes à partir de réseaux VPC

Par défaut, seules les ressources disposant d'adresses IP externes ou qui utilisent Cloud NAT peuvent accéder directement à Internet et aux servicesGoogle Cloud tels que Pub/Sub et Cloud Run. Pour les autres ressources, il existe plusieurs options pour activer le chemin du trafic vers Cloud Run :

  • Le chemin le plus direct consiste à activer l'accès privé à Google sur les sous-réseaux hébergeant vos ressources. Lorsque l'accès privé à Google est activé, les ressources des sous-réseaux peuvent accéder à vos ressources Cloud Run via l'URL run.app par défaut. Le trafic depuis votre réseau VPC vers Cloud Run reste sur le réseau de Google. Dans ce cas, la plage d'adresses IP des requêtes envoyées à la ressource Cloud Run est 0.0.0.0/32. Cela signifie que dans les entrées de journal de requêtes, l'attribut remoteIp de la requête HttpRequest est 0.0.0.0.
  • Si vous souhaitez que votre ressource Cloud Run (avec d'autres API Google) soit accessible via une adresse IP interne dans votre réseau VPC, envisagez de créer un point de terminaison Private Service Connect et de configurer une zone DNS privée pour run.app. Avec cette configuration, les ressources du réseau VPC peuvent accéder aux ressources Cloud Run à l'URL run.app par défaut via l'adresse IP du point de terminaison Private Service Connect.
  • Si vous avez besoin de fonctionnalités et de contrôles d'équilibrage de charge, envisagez d'utiliser un équilibreur de charge d'application interne. Avec cette approche, les ressources du réseau VPC accèdent à vos ressources Cloud Run à l'aide de l'URL associée à l'équilibreur de charge d'application interne.
  • Si vous souhaitez exposer votre service à des clients internes en tant que service géré et pouvoir contrôler les projets pouvant y accéder, vous pouvez l'héberger avec un équilibreur de charge d'application interne et le publier à l'aide de Private Service Connect. Les projets qui doivent utiliser le service peuvent y accéder à l'aide d'un point de terminaison Private Service Connect ou d'un backend Private Service Connect.

Les réponses sont renvoyées à l'aide du même chemin que celui utilisé pour la requête.

Informations spécifiques aux VPC partagés

Lorsque vous utilisez le paramètre internal avec les contrôles d'entrée Cloud Run pour exiger que tout le trafic doit provenir de votre réseau privé, le trafic des VPC partagés n'est reconnu comme "interne" que dans les cas suivants :

  • La ressource Cloud Run s'exécute dans le projet hôte de VPC partagé.

  • Entrée VPC partagé : la ressource Cloud Run est associée à un réseau VPC partagé. Dans ce scénario, tenez compte des points suivants :

    • Seules les révisions de service qui ont configuré la sortie VPC directe ou qui ont configuré un connecteur d'accès au VPC sans serveur pour envoyer le trafic vers le réseau VPC partagé acceptent également le trafic provenant de ce même réseau VPC partagé.

    • Les requêtes utilisent différents chemins en fonction du sens du trafic. Les requêtes envoyées depuis Cloud Run vers le réseau VPC partagé sont acheminées par la sortie VPC directe ou le connecteur. Cependant, les requêtes envoyées depuis le réseau VPC partagé vers Cloud Run utilisent le chemin d'entrée standard.

    • Pour dissocier une ressource Cloud Run du réseau VPC partagé, redéployez-la sans accès au réseau VPC, ou en la configurant pour envoyer le trafic vers un autre réseau VPC.

  • Vous utilisez un équilibreur de charge d'application interne pour acheminer le trafic par proxy.

  • Vous avez placé l'hôte de VPC partagé et tous les projets de service dans le même périmètre VPC Service Controls. Pour configurer VPC Service Controls, consultez la page Utiliser VPC Service Controls (VPC SC).

Informations spécifiques aux autres réseaux VPC en dehors de votre projet

Lorsque vous utilisez le paramètre internal avec les contrôles d'entrée Cloud Run pour vous assurer que tout le trafic doit provenir de votre réseau privé, le trafic provenant d'autres réseaux VPC en dehors de votre projet n'est pas reconnu comme "interne", sauf dans les cas suivants :

  • VPC Service Controls est configuré pour autoriser le trafic avec run.googleapis.com en tant que service restreint, et l'Accès privé à Google est activé pour le sous-réseau source.
  • Votre ressource Cloud Run est publiée en tant que service géré à l'aide de Private Service Connect (nécessite un équilibreur de charge d'application interne) et est accessible depuis l'autre réseau VPC.

L'appairage avec un réseau VPC en dehors de votre projet ne permet pas de reconnaître le trafic comme étant "interne".

Recevoir des requêtes provenant d'autres services Google Cloud

Les requêtes adressées à Cloud Run depuis des services Google Cloud tels que Pub/Sub restent dans le réseau de Google.

Vous avez configuré quelques considérations spéciales si vous avez configuré les contrôles d'entrée Cloud Run pour autoriser uniquement le trafic "interne" :

  • Les requêtes provenant de BigQuery, Cloud Scheduler, Cloud Tasks, Dialogflow CX, Eventarc, Pub/Sub, des surveillances synthétiques (y compris les tests de disponibilité) et des workflows situés dans le même projet ou dans le même périmètre VPC Service Controls sont reconnues comme "internes".
  • Les requêtes provenant de Cloud Run ou App Engine envoyées depuis le même projet ou le même périmètre VPC Service Controls nécessitent une configuration supplémentaire avant d'être reconnues comme "internes". Pour en savoir plus, consultez la section Recevoir des requêtes d'autres services Cloud Run ou d'App Engine.
  • Si le service Google Cloud de votre choix ne parvient pas à accéder aux ressources Cloud Run dont l'entrée est définie sur internal, notez que de nombreux services acceptent l'authentification auprès de Cloud Run, tels que Pub/Sub (compatible avec une entrée définie sur internal et l'authentification), API Gateway et Dialogflow CX (compatible avec une entrée définie sur internal et l'authentification). En fonction de vos besoins en termes de sécurité, il peut s'avérer suffisant pour que la ressource Cloud Run de destination exige une authentification au lieu d'une entrée "interne".
  • Les requêtes des services Google Cloud non mentionnés précédemment ne sont pas reconnues comme internes et ne peuvent pas être reçues par les ressources Cloud Run dont l'entrée est définie sur internal ou internal-and-cloud-load-balancing.

Recevoir des requêtes provenant de ressources sur site ou d'autres clouds

Il existe plusieurs façons de recevoir en privé des requêtes provenant de ressources sur site et d'autres clouds.

Exiger que les requêtes proviennent de votre réseau privé

Pour empêcher le trafic entrant (entrée) provenant de sources externes, vous spécifiez un paramètre d'entrée restrictif. Le paramètre d'entrée le plus restrictif est internal. Lorsque l'entrée est définie sur internal, votre service n'autorise que les requêtes provenant de votre projet, des réseaux VPC partagés auxquels votre projet est associé et de votre périmètre VPC Service Controls. Ce paramètre présente certaines limites en fonction de l'origine des requêtes. Pour en savoir plus sur ces limites et sur la façon de les appréhender, consultez la section Recevoir des requêtes provenant de votre réseau privé.

Vous pouvez spécifier le paramètre d'entrée pour chaque ressource Cloud Run ou appliquer le paramètre d'entrée de votre choix pour toutes les ressources Cloud Run de votre organisation.

  • Pour spécifier le paramètre d'entrée pour chaque ressource Cloud Run : consultez la section Définir l'entrée.
  • Pour appliquer un paramètre d'entrée spécifique à toutes les ressources Cloud Run de votre projet, dossier ou organisation, configurez la contrainte de règle d'administration run.allowedIngress. Pour en savoir plus, consultez la page Personnaliser les règles pour les contraintes de liste.

Envoyer des requêtes à votre réseau privé

Si votre ressource Cloud Run doit accéder à une ressource de votre réseau privé, vous pouvez configurer un chemin d'accès pour les requêtes privées adressées à votre réseau. La configuration dépend de la destination finale de la requête.

Envoyer des requêtes à votre réseau VPC

Pour envoyer des requêtes à un réseau VPC, vous devez configurer la sortie VPC directe ou un connecteur d'accès au VPC sans serveur. Comparer la sortie VPC directe et les connecteurs VPC Consultez les tarifs pour comprendre les coûts.

Lorsque la sortie VPC directe ou les connecteurs sont configurés, les considérations suivantes s'appliquent par défaut :

  • Toutes les requêtes DNS sont envoyées au serveur DNS configuré pour le réseau VPC associé à votre configuration de sortie réseau VPC.

  • Les requêtes adressées à des adresses IP internes sont acheminées vers le réseau VPC à l'aide de la sortie VPC directe ou d'un connecteur. Les requêtes vers des destinations publiques continuent d'être acheminées directement vers Internet, sauf si votre paramètre de sortie est configuré d'une autre façon.

Avec les requêtes acheminées à l'aide de la sortie VPC directe ou des connecteurs, les réponses sont renvoyées à l'aide du chemin emprunté par la requête. Les requêtes depuis votre réseau VPC vers Cloud Run sont activées à l'aide d'autres technologies et ne sont pas acheminées via la sortie VPC directe ni les connecteurs. Les réponses à ces requêtes sont renvoyées via le même chemin. Pour en savoir plus sur l'envoi de requêtes depuis votre réseau VPC vers Cloud Run, consultez Recevoir des requêtes provenant de réseaux VPC.

Envoyer des requêtes à un réseau VPC en dehors de votre projet

Pour envoyer des requêtes à un réseau VPC en dehors de votre projet, procédez comme suit :

  1. Pour les utilisateurs de VPC partagé, consultez Se connecter à un réseau VPC partagé.
  2. Pour les autres réseaux VPC, configurez la sortie VPC directe ou un connecteur pour vous connecter à un VPC dans votre projet.
    • Réseaux VPC appairés : pour envoyer des requêtes à un VPC qui est appairé à un VPC utilisant la sortie réseau VPC, aucune configuration supplémentaire n'est requise. Toutefois, les VM du sous-réseau hébergeant la sortie du réseau VPC doivent pouvoir atteindre le réseau VPC cible.
    • Autres réseaux VPC : pour les réseaux VPC en dehors de votre projet et qui ne font pas partie du même environnement VPC partagé ou ne sont pas appairés à votre réseau VPC de projet, configurez Private Service Connect après avoir configuré la sortie réseau VPC.

Envoyer des requêtes à d'autres ressources Cloud Run et services Google Cloud

Les requêtes provenant d'une ressource Cloud Run à destination d'une autre ressource Cloud Run ou d'autres servicesGoogle Cloud restent dans le réseau interne de Google et sont soumises à VPC Service Controls.

Pour les requêtes adressées aux ressources Cloud Run avec des paramètres d'entrée restrictifs, une configuration supplémentaire est requise. Consultez la section Recevoir des requêtes d'autres ressources Cloud Run ou d'App Engine.

Envoyer des requêtes à des ressources sur site ou situées dans d'autres clouds

Pour envoyer des requêtes à des ressources sur site ou situées dans d'autres clouds via votre réseau privé, procédez comme suit :

  1. Assurez-vous que votre réseau VPC est configuré pour acheminer de manière privée votre trafic vers la destination, par exemple via un tunnel VPN.
  2. Configurez votre service pour envoyer des requêtes à votre réseau VPC.
  3. Exigez que toutes les requêtes soient transmises à votre réseau VPC.

Exiger que toutes les requêtes soient dirigées vers votre réseau VPC

Pour exiger que toutes les requêtes de votre ressource Cloud Run soient dirigées vers votre réseau VPC, spécifiez le paramètre de sortie de réseau VPC all-traffic. Vous pouvez spécifier le paramètre de sortie pour chaque ressource Cloud Run utilisant la sortie réseau VPC, ou appliquer le paramètre de sortie préféré à toutes les ressources Cloud Run de votre projet, dossier ou organisation.

Cela s'avère utile dans les situations suivantes :

  1. Vous souhaitez configurer une adresse IP sortante statique pour votre ressource Cloud Run.
  2. Vous souhaitez appliquer des règles de pare-feu pour toute sortie d'une ressource Cloud Run.
  3. Vous souhaitez envoyer des requêtes à des ressources sur site ou dans d'autres clouds via votre réseau privé.

Si votre ressource Cloud Run envoie des requêtes à des destinations finales en dehors de votre réseau VPC, le fait d'exiger l'envoi de toutes les requêtes à votre réseau VPC augmente l'utilisation de la bande passante sur les connecteurs d'accès au VPC sans serveur configurés et peut augmenter les coûts en conséquence. Les connecteurs évoluent automatiquement lorsque le trafic augmente, mais n'effectuent pas de scaling vertical en cas de diminution du trafic. Consultez les tarifs pour comprendre les coûts.

Paramètres supplémentaires

  • Contrôles de périmètre : pour réduire le risque d'exfiltration de données d'un groupe de ressources, placez-les dans un périmètre contextuel à l'aide de VPC Service Controls.
  • Contrôles précis : pour contrôler l'accès au trafic depuis une ressource spécifique de votre réseau privé, telle qu'une ressource Cloud Run ou une machine virtuelle Compute Engine, utilisez des comptes de service pour contrôler les autorisations et l'authentification.

Étapes suivantes

Si vous utilisez Terraform, consultez cet exemple de code Terraform permettant de configurer des ressources Cloud Run dans un réseau privé.