Mise en réseau privée et Cloud Run

Cette page décrit les options de configuration permettant d'inclure des services 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 services Cloud Run ne sont associés à aucun réseau VPC particulier par défaut. Cette page explique comment intégrer des services 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 d'entreprise et des microservices
  • Accéder à des bases de données et à des systèmes de fichiers de manière publique ou privée
  • Se connecter avec 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.
  • Le fait que le service 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 services Cloud Run, d'App Engine et Cloud Run Functions

Lorsque votre service Cloud Run de destination reçoit du trafic en provenance d'autres services Cloud Run, d'App Engine ou de Cloud Run Functions, et qu'il 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 services Cloud Run, d'App Engine ou de Cloud Run Functions, procédez comme suit :

  1. Configurez le service 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 le service 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 service 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é au service 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 VPC disposant d'adresses IP publiques ou qui utilisent Cloud NAT peuvent accéder directement à Internet et aux services Google Cloud tels que Pub/Sub et Cloud Run. Pour les autres ressources VPC, il existe plusieurs options pour activer le chemin du trafic vers Cloud Run :

  1. Le chemin le plus direct consiste à activer l'accès privé à Google sur les sous-réseaux hébergeant vos ressources VPC. Une fois activées, les ressources des sous-réseaux peuvent accéder à vos services Cloud Run via l'URL run.app par défaut. Le trafic depuis votre VPC vers Cloud Run reste sur le réseau de Google. Dans ce cas, la plage d'adresses IP des requêtes envoyées au service 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.
  2. Si vous souhaitez que votre service Cloud Run (avec d'autres API Google) soit exposé en tant qu'adresse IP interne dans votre réseau VPC, envisagez de faire appel à Private Service Connect. Une fois cette option activée, les ressources VPC peuvent accéder à vos services Cloud Run avec l'URL run.app par défaut à l'aide de l'adresse IP interne.
  3. 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 VPC accèdent à vos services Cloud Run à l'aide de l'URL associée à l'équilibreur de charge d'application interne.
  4. 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 également y accéder à l'aide de 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

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

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

  • Entrée VPC partagé : le service Cloud Run est associé à 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 via une 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 un service Cloud Run du réseau VPC partagé, redéployez ce service sans accès au réseau VPC, ou en le 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 VPC en dehors de votre projet

Si vous utilisez des contrôles d'entrée Cloud Run pour vous assurer que tout le trafic doit provenir de votre réseau privé (à l'aide du paramètre internal), notez que le trafic provenant d'autres VPC en dehors de votre projet n'est pas reconnu comme du trafic "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 service Cloud Run est publié 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 d'un 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 Cloud Scheduler, Cloud Tasks, Eventarc, et Pub/Sub ou 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 reconnus comme "internes".
  • Les requêtes provenant de Cloud Run, App Engine et Cloud Run Functions 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, d'App Engine et de fonctions Cloud Run.
  • Si le service Google Cloud choisi ne parvient pas à accéder aux services 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. En fonction de vos besoins en termes de sécurité, il peut s'avérer suffisant pour que le service Cloud Run de destination exige une authentification au lieu d'une entrée "interne".
  • Les requêtes des services Google Cloud non mentionnés ci-dessus ne sont pas reconnues comme internes et ne peuvent pas être reçues par les services Cloud Run dont l'entrée est définie sur internal ou internal-and-cloud-load-balancing.

Recevoir des requêtes depuis un environnement sur site ou depuis d'autres clouds

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

  1. Configuration de base : pour que les requêtes provenant de ressources sur site ou d'autres clouds traversent votre réseau privé, configurez l'accès privé à Google pour les hôtes sur site.
  2. Exposez le service Cloud Run avec une adresse IP interne : pour appeler des services Cloud Run à l'aide d'une adresse IP interne, configurez Private Service Connect pour les hôtes sur site. L'ajout de Private Service Connect pour les hôtes sur site vous permet d'exposer votre service Cloud Run à votre réseau VPC en tant qu'adresse IP interne. Private Service Connect entraîne des coûts.
  3. Fonctionnalités d'équilibrage de charge : si vous avez besoin de fonctionnalités et de contrôles d'équilibrage de charge, utilisez un équilibreur de charge d'application interne.
  4. Au-delà des limites administratives : 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 le publier à l'aide de Private Service Connect. Pour utiliser ce service, consultez la page Utiliser Private Service Connect à partir d'hôtes sur site (nécessite un équilibreur de charge d'application interne).

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

Pour empêcher le trafic entrant (entrée) provenant de sources externes, vous pouvez spécifier 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 service Cloud Run ou appliquer le paramètre d'entrée de votre choix pour tous les services Cloud Run de votre organisation.

  • Pour spécifier le paramètre d'entrée pour chaque service : consultez la section Définir l'entrée.
  • Pour appliquer un paramètre d'entrée spécifique à tous les services 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 service 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 d'accès au VPC sans serveur 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 d'accès au VPC sans serveur, les réponses sont renvoyées à l'aide du chemin emprunté par la requête. Les requêtes depuis votre VPC vers Cloud Run sont activées à l'aide d'autres technologies et ne sont pas acheminées via l'accès au VPC sans serveur ou la sortie VPC directe. 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 VPC vers Cloud Run, consultez la section Recevoir des requêtes 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 la page Se connecter à un réseau VPC partagé.
  2. Pour les autres VPC, configurez la sortie VPC directe ou un connecteur d'accès au VPC sans serveur pour vous connecter à un VPC dans votre projet.
    • VPC appairé : 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 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 VPC de projet, configurez Private Service Connect après avoir configuré la sortie réseau VPC.

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

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

Pour les requêtes adressées aux services 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 services Cloud Run, d'App Engine et de fonctions Cloud Run.

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. Ensuite, 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 service Cloud Run soient dirigées vers votre réseau VPC, spécifiez "tout le trafic" pour le paramètre de sortie de réseau VPC. Vous pouvez spécifier le paramètre de sortie pour chaque service Cloud Run utilisant la sortie réseau VPC, ou appliquer le paramètre de sortie préféré à tous les services 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 service Cloud Run.
  2. Vous souhaitez appliquer des règles de pare-feu pour toute sortie d'un service 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 service 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 le connecteur d'accès au VPC sans serveur (s'il est configuré) et peut augmenter les coûts en conséquence. Les connecteurs d'accès au VPC sans serveur é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'un service 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 services Cloud Run dans un réseau privé.