Cette page explique comment utiliser l'accès au VPC sans serveur pour connecter directement votre application s'exécutant dans l'environnement standard App Engine à votre réseau VPC, afin d'accéder à des instances de VM Compute Engine, à des instances Memorystore et à toute autre ressource disposant d'une adresse IP interne.
Avant de commencer
Si vous n'avez pas encore de réseau VPC dans votre projet, créez-en un.
Si vous utilisez un VPC partagé, consultez la section Se connecter à un réseau VPC partagé.
Dans la console Google Cloud, assurez-vous que l'API Serverless VPC Access est activée pour votre projet.
Créez un connecteur d'accès au VPC sans serveur.
Pour envoyer des requêtes à votre réseau VPC et recevoir les réponses correspondantes sans utiliser l'Internet public, vous pouvez utiliser un connecteur d'accès au VPC sans serveur.
Si votre connecteur se trouve dans le même projet que son réseau VPC, vous pouvez soit créer un connecteur à l'aide d'un sous-réseau existant, soit créer un connecteur et un nouveau sous-réseau.
Si votre connecteur est situé dans un projet de service et utilise un réseau VPC partagé, alors le connecteur et le réseau VPC associé se situent dans des projets différents. Lorsqu'un connecteur et son réseau VPC se trouvent dans des projets différents, un administrateur de réseau VPC partagé doit créer le sous-réseau du connecteur dans le réseau VPC partagé avant que vous ne puissiez créer le connecteur. En outre, vous devez créer le connecteur à l'aide d'un sous-réseau existant.
Pour en savoir plus sur les exigences concernant les sous-réseaux, consultez la section Exigences concernant les sous-réseaux des connecteurs.
Pour en savoir plus sur le débit du connecteur, y compris le type de machine et le scaling, consultez la section Débit et scaling.
Vous pouvez créer un connecteur à l'aide de la console Google Cloud, de Google Cloud CLI ou de Terraform.
Console
Accédez à la page de présentation de l'accès au VPC sans serveur.
Cliquez sur Créer un connecteur.
Dans le champ Nom, spécifiez un nom pour votre connecteur, en respectant les conventions d'attribution de noms de Compute Engine, auxquelles s'ajoutent ces exigences supplémentaires : le nom doit comporter moins de 21 caractères, et les tirets (-) comptent pour deux caractères.
Dans le champ Région, sélectionnez une région pour votre connecteur. Elle doit correspondre à la région de votre service sans serveur.
Si votre service ou job se trouve dans la région
us-central
oueurope-west
, utilisezus-central1
oueurope-west1
.Dans le champ Réseau, sélectionnez le réseau VPC auquel associer le connecteur.
Dans le champ Sous-réseau, sélectionnez l'une des options suivantes :
Créer un connecteur à l'aide d'un sous-réseau existant : sélectionnez le sous-réseau existant dans le champ Sous-réseau.
Créer un connecteur et un nouveau sous-réseau : sélectionnez Plage d'adresses IP personnalisée dans le champ Sous-réseau. Saisissez ensuite la première adresse d'une plage CIDR
/28
inutilisée (par exemple,10.8.0.0/28
) à utiliser comme plage d'adresses IPv4 principale d'un nouveau sous-réseau, que Google Cloud va créer dans le réseau VPC du connecteur. Assurez-vous que la plage d'adresses IP n'entre pas en conflit avec des routes existantes dans le réseau VPC du connecteur. Le nom du nouveau sous-réseau commence par le préfixe "aet-".
(Facultatif) Pour définir les options de scaling afin de renforcer le contrôle du connecteur, cliquez sur Afficher les paramètres de scaling pour afficher le formulaire de scaling.
- Définissez le nombre minimal et maximal d'instances de votre connecteur ou utilisez les valeurs par défaut, qui sont 2 (min.) et 10 (max.). Le connecteur effectue un scaling à la hausse jusqu'à la valeur maximale spécifiée si l'utilisation du trafic l'exige, mais il ne réduit pas le nombre d'instances lorsque le trafic diminue. Les valeurs doivent être comprises entre
2
et10
. - Dans le menu Type d'instance, choisissez le type de machine à utiliser pour le connecteur ou utilisez la valeur par défaut
e2-micro
. Notez la barre latérale des coûts sur la droite lorsque vous choisissez le type d'instance, qui affiche des estimations de bande passante et de coûts.
- Définissez le nombre minimal et maximal d'instances de votre connecteur ou utilisez les valeurs par défaut, qui sont 2 (min.) et 10 (max.). Le connecteur effectue un scaling à la hausse jusqu'à la valeur maximale spécifiée si l'utilisation du trafic l'exige, mais il ne réduit pas le nombre d'instances lorsque le trafic diminue. Les valeurs doivent être comprises entre
Cliquez sur Créer.
Une coche verte apparaît à côté du nom du connecteur lorsque celui-ci est prêt à être utilisé.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Mettez à jour les composants
gcloud
vers la dernière version :gcloud components update
Assurez-vous que l'API Serverless VPC Access est activée pour votre projet :
gcloud services enable vpcaccess.googleapis.com
Créez le connecteur à l'aide de l'une des options suivantes :
Pour plus d'informations et pour connaître les arguments facultatifs pouvant être stipulés, consultez la documentation de référence sur
gcloud
.Créer un connecteur à l'aide d'un sous-réseau existant
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Remplacez les éléments suivants :
CONNECTOR_NAME
: nom de votre connecteur, respectant les conventions d'attribution de noms de Compute Engine, avec les exigences supplémentaires suivantes : le nom doit comporter moins de 21 caractères, et les tirets (-) sont comptés comme deux caractères.REGION
: région du connecteur, correspondant à la région de votre service ou job sans serveur. Si votre service ou votre job se trouve dans la régionus-central
oueurope-west
, utilisezus-central1
oueurope-west1
.SUBNET_NAME
: nom du sous-réseau existant.HOST_PROJECT_ID
: ID du projet hôte de VPC partagé. Si le connecteur et le sous-réseau existant se trouvent dans le même projet, omettez l'option--subnet-project
.MIN
: nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre2
(valeur par défaut) et9
.MAX
: nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre3
et10
(valeur par défaut). Si le connecteur effectue un scaling à la hausse jusqu'à atteindre le nombre maximal d'instances, il ne réduit pas ensuite le nombre d'instances lorsque le trafic diminue.MACHINE_TYPE
: le type de machine doit être défini sur l'une des valeurs suivantes :f1-micro
,e2-micro
oue2-standard-4
.
Créer un connecteur et un nouveau sous-réseau
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Remplacez les éléments suivants :
CONNECTOR_NAME
: nom de votre connecteur, respectant les conventions d'attribution de noms de Compute Engine, avec les exigences supplémentaires suivantes : le nom doit comporter moins de 21 caractères, et les tirets (-) sont comptés comme deux caractères.REGION
: région du connecteur, correspondant à la région de votre service ou job sans serveur. Si votre service ou votre job se trouve dans la régionus-central
oueurope-west
, utilisezus-central1
oueurope-west1
.VPC_NETWORK
: nom du réseau VPC auquel associer le connecteur. Le connecteur et le réseau VPC doivent se trouver dans le même projet.IP_RANGE
: indiquez une plage CIDR/28
inutilisée (par exemple,10.8.0.0/28
) à utiliser comme plage d'adresses IPv4 principale d'un nouveau sous-réseau, que Google Cloud va créer dans le réseau VPC du connecteur. Assurez-vous que la plage d'adresses IP n'entre pas en conflit avec des routes existantes dans le réseau VPC du connecteur. Le nom du nouveau sous-réseau commence par le préfixe "aet-".MIN
: nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre2
(valeur par défaut) et9
.MAX
: nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre3
et10
(valeur par défaut). Si le connecteur effectue un scaling à la hausse jusqu'à atteindre le nombre maximal d'instances, il ne réduit pas ensuite le nombre d'instances lorsque le trafic diminue.MACHINE_TYPE
: le type de machine doit être défini sur l'une des valeurs suivantes :f1-micro
,e2-micro
oue2-standard-4
.
Avant d'utiliser le connecteur, vérifiez qu'il est dans l'état
READY
:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Remplacez les éléments suivants :
CONNECTOR_NAME
: nom du connecteur. Il s'agit du nom que vous avez spécifié à l'étape précédente.REGION
: région du connecteur. Il s'agit de la région que vous avez spécifiée à l'étape précédente.
Le résultat doit contenir la ligne
state: READY
.
Terraform
Vous pouvez utiliser une ressource Terraform pour activer l'API vpcaccess.googleapis.com
.
Vous pouvez utiliser les modules Terraform pour créer un réseau et un sous-réseau VPC, puis créer le connecteur.
Configurer votre service pour utiliser un connecteur
Une fois que vous avez créé un connecteur d'accès au VPC sans serveur, vous devez configurer chaque service de votre application App Engine que vous souhaitez connecter à votre réseau VPC.
Pour associer un connecteur à un service de votre application, procédez comme suit :
Pour utiliser l'accès au VPC sans serveur, arrêtez d'utiliser le service de récupération d'URL App Engine. L'accès au VPC sans serveur n'est pas compatible avec le service de récupération d'URL. Les requêtes effectuées à l'aide de ce service ignorent les paramètres d'accès au VPC sans serveur. Établissez plutôt des connexions sortantes avec des sockets.
Ajoutez le champ
vpc_access_connector
au fichierapp.yaml
de votre service :vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Où
PROJECT_ID
correspond à votre ID de projet Google Cloud,REGION
à la région dans laquelle se trouve le connecteur etCONNECTOR_NAME
au nom du connecteur.Déployez le service :
gcloud app deploy
Une fois votre service déployé, il peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.
Limiter l'accès aux ressources VPC
Règles de pare-feu requises pour les connecteurs dans les projets de service
Si vous créez un connecteur dans un réseau VPC autonome ou dans le projet hôte d'un réseau VPC partagé, Google Cloud crée toutes les règles de pare-feu nécessaires au fonctionnement du connecteur. Pour en savoir plus, consultez la section Règles de pare-feu pour les connecteurs dans les réseaux VPC autonomes ou les projets hôtes de VPC partagés.
Toutefois, si vous créez un connecteur dans un projet de service et qu'il cible un réseau VPC partagé dans le projet hôte, vous devez ajouter des règles de pare-feu afin d'autoriser le trafic nécessaire au fonctionnement du connecteur provenant des plages d'adresses suivantes :
- Plage d'adresses IP de l'infrastructure sans serveur :
35.199.224.0/19
- Plages d'adresses IP de vérification d'état :
35.191.0.0/16
,35.191.192.0/18
et130.211.0.0/22
Ces plages sont utilisées par l'infrastructure Google sous-jacente de Cloud Run, Cloud Run Functions et l'environnement standard App Engine. Toutes les requêtes provenant de ces adresses IP proviennent de l'infrastructure Google pour s'assurer que chaque ressource sans serveur ne communique qu'avec le connecteur auquel elle est connectée.
Vous devez également autoriser le trafic du sous-réseau du connecteur vers les ressources de votre réseau VPC.
Pour effectuer ces étapes, vous devez disposer de l'un des rôles suivants sur le projet hôte :
- Rôle Propriétaire (
roles/owner
) - Rôle d'administrateur de sécurité de Compute (
roles/compute.securityAdmin
) - Rôle personnalisé Identity and Access Management (IAM) avec l'autorisation
compute.firewalls.create
activée
Pour une configuration simple, appliquez les règles pour autoriser les ressources sans serveur dans tout projet de service connecté au réseau VPC partagé à envoyer des requêtes à n'importe quelle ressource du réseau.
Pour appliquer ces règles, exécutez les commandes suivantes dans le projet hôte :
Créez des règles de pare-feu permettant aux requêtes de l'infrastructure sans serveur de Google et aux vérifications d'état d'atteindre tous les connecteurs du réseau. Dans ces commandes, les ports UDP et TCP sont utilisés respectivement en tant que proxys et pour les vérifications d'état HTTP. Ne modifiez pas les ports spécifiés.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
Remplacez
VPC_NETWORK
par le nom du réseau VPC auquel associer le connecteur.Créez une règle de pare-feu d'entrée sur votre réseau VPC pour autoriser les requêtes provenant de connecteurs qui ciblent ce réseau :
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Cette règle permet au connecteur d'accéder à chaque ressource du réseau. Pour limiter les ressources auxquelles votre environnement sans serveur peut accéder à l'aide de l'accès au VPC sans serveur, consultez la page Limiter l'accès des VM du connecteur aux ressources de réseau VPC.
Créer des règles de pare-feu pour des connecteurs spécifiques
La procédure décrite à la section Règles de pare-feu requises pour les connecteurs dans les projets de service permet de créer des règles de pare-feu qui s'appliquent à tous les connecteurs actuels et créés ultérieurement. Si vous ne souhaitez pas utiliser cette fonctionnalité, mais que vous préférez créer des règles pour des connecteurs spécifiques, vous pouvez définir des règles de sorte qu'elles ne s'appliquent qu'à ces connecteurs.
Pour limiter le champ d'application des règles à des connecteurs spécifiques, vous pouvez utiliser l'un des mécanismes suivants.
- Tags réseau : chaque connecteur dispose de deux tags réseau,
vpc-connector
etvpc-connector-REGION-CONNECTOR_NAME
. Utilisez ce dernier format pour limiter le champ d'application de vos règles de pare-feu à un connecteur spécifique. - Plages d'adresses IP : utilisez cette option uniquement pour les règles de sortie, car elle ne fonctionne pas pour les règles d'entrée. Vous pouvez utiliser la plage d'adresses IP du sous-réseau du connecteur pour limiter le champ d'application de vos règles de pare-feu à un seul connecteur VPC.
Limiter l'accès des VM du connecteur aux ressources de réseau VPC
Vous pouvez limiter l'accès du connecteur aux ressources de son réseau VPC cible à l'aide de règles de pare-feu VPC ou de règles de stratégies de pare-feu. Vous pouvez respecter ces restrictions en utilisant l'une des stratégies suivantes :
- Créez des règles d'entrée dont les cibles représentent les ressources auxquelles vous souhaitez limiter l'accès aux VM du connecteur et dont les sources représentent les VM du connecteur.
- Créez des règles de sortie dont les cibles représentent les VM du connecteur et dont les destinations représentent les ressources auxquelles vous souhaitez leur limiter l'accès.
Les exemples suivants illustrent chaque stratégie.
Restreindre l'accès à l'aide de règles d'entrée
Choisissez des tags réseau ou des plages CIDR pour contrôler le trafic entrant vers votre réseau VPC.
Tags réseau
Les étapes suivantes expliquent comment créer des règles d'entrée limitant l'accès d'un connecteur à votre réseau VPC en fonction des tags réseau du connecteur.
Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :
- Rôle d'administrateur de sécurité de Compute
- Rôle IAM personnalisé avec l'autorisation
compute.firewalls.create
activée
Refuser le trafic du connecteur sur votre réseau VPC
Créez une règle de pare-feu d'entrée ayant une priorité inférieure à 1 000 sur votre réseau VPC pour refuser l'entrée du tag réseau du connecteur. Cette option remplace la règle de pare-feu implicite créée par défaut par l'accès au VPC sans serveur sur votre réseau VPC.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
deny-vpc-connector
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants :
ah
,all
,esp
,icmp
,ipip
etsctp
.VPC_CONNECTOR_NETWORK_TAG : tag réseau de connecteur universel si vous souhaitez limiter l'accès de tous les connecteurs (y compris ceux créés ultérieurement), ou tag réseau unique si vous souhaitez limiter l'accès d'un connecteur spécifique.
- Tag réseau universel :
vpc-connector
Tag réseau unique :
vpc-connector-REGION-CONNECTOR_NAME
Remplacez :
- REGION : région du connecteur que vous souhaitez restreindre
- CONNECTOR_NAME : nom du connecteur que vous souhaitez restreindre
Pour en savoir plus sur les tags réseau de connecteur, consultez la page Tags réseau.
- Tag réseau universel :
VPC_NETWORK : nom de votre réseau VPC
PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.
Autorisez le trafic de connecteur vers la ressource qui doit recevoir le trafic du connecteur.
Utilisez les options
allow
ettarget-tags
pour créer une règle de pare-feu d'entrée ciblant la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur VPC accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez définie à l'étape précédente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
allow-vpc-connector-for-select-resources
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.VPC_CONNECTOR_NETWORK_TAG : tag réseau de connecteur universel si vous souhaitez limiter l'accès de tous les connecteurs (y compris ceux créés ultérieurement), ou tag réseau unique si vous souhaitez limiter l'accès d'un connecteur spécifique. Il doit correspondre au tag réseau que vous avez spécifié à l'étape précédente.
- Tag réseau universel :
vpc-connector
Tag réseau unique :
vpc-connector-REGION-CONNECTOR_NAME
Remplacez :
- REGION : région du connecteur que vous souhaitez restreindre
- CONNECTOR_NAME : nom du connecteur que vous souhaitez restreindre
Pour en savoir plus sur les tags réseau de connecteur, consultez la page Tags réseau.
- Tag réseau universel :
VPC_NETWORK : nom de votre réseau VPC
RESOURCE_TAG : tag réseau de la ressource VPC à laquelle votre connecteur VPC doit accéder.
PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.
Pour en savoir plus sur les options obligatoires et facultatives de création de règles de pare-feu, consultez la documentation sur la commande gcloud compute firewall-rules create
.
Plage CIDR
Les étapes suivantes montrent comment créer des règles d'entrée qui limitent l'accès d'un connecteur à votre réseau VPC en fonction de la plage CIDR du connecteur.
Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :
- Rôle d'administrateur de sécurité de Compute
- Rôle IAM personnalisé avec l'autorisation
compute.firewalls.create
activée
Refuser le trafic du connecteur sur votre réseau VPC
Créez une règle de pare-feu d'entrée ayant une priorité inférieure à 1000 sur votre réseau VPC pour refuser l'entrée de la plage CIDR du connecteur. Cette option remplace la règle de pare-feu implicite créée par défaut par l'accès au VPC sans serveur sur votre réseau VPC.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
deny-vpc-connector
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants :
ah
,all
,esp
,icmp
,ipip
etsctp
.VPC_CONNECTOR_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès
VPC_NETWORK : nom de votre réseau VPC
PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.
Autorisez le trafic de connecteur vers la ressource qui doit recevoir le trafic du connecteur.
Utilisez les options
allow
ettarget-tags
pour créer une règle de pare-feu d'entrée ciblant la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur VPC accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez définie à l'étape précédente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
allow-vpc-connector-for-select-resources
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.VPC_CONNECTOR_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès
VPC_NETWORK : nom de votre réseau VPC
RESOURCE_TAG : tag réseau de la ressource VPC à laquelle votre connecteur VPC doit accéder.
PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.
Pour en savoir plus sur les options requises et facultatives pour la création de règles de pare-feu, consultez la documentation sur la commande gcloud compute firewall-rules create
.
Restreindre l'accès à l'aide de règles de sortie
La procédure suivante explique comment créer des règles de sortie afin de restreindre l'accès au connecteur.
Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :
- Rôle d'administrateur de sécurité de Compute
- Rôle IAM personnalisé avec l'autorisation
compute.firewalls.create
activée
Refusez le trafic sortant de votre connecteur.
Créez une règle de pare-feu de sortie sur votre connecteur d'accès au VPC sans serveur pour l'empêcher d'envoyer du trafic sortant, à l'exception des réponses établies, vers n'importe quelle destination.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
deny-vpc-connector
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants :
ah
,all
,esp
,icmp
,ipip
etsctp
.VPC_CONNECTOR_NETWORK_TAG : tag réseau du connecteur VPC universel si vous souhaitez que la règle s'applique à tous les connecteurs VPC existants et à tous les connecteurs VPC créés ultérieurement. Ou tag réseau unique du connecteur VPC si vous souhaitez contrôler un connecteur spécifique.
VPC_NETWORK : nom de votre réseau VPC
PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.
Autorisez le trafic sortant lorsque la destination se trouve dans la plage CIDR à laquelle vous souhaitez que votre connecteur accède.
Utilisez les options
allow
etdestination-ranges
pour créer une règle de pare-feu autorisant le trafic sortant de votre connecteur pour une plage de destination spécifique. Définissez la plage de destination sur la plage CIDR de la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez configurée à l'étape précédente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
Remplacez les éléments suivants :
RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple :
allow-vpc-connector-for-select-resources
.PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont
tcp
ouudp
. Par exemple,tcp:80,udp
autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'optionallow
.RESOURCE_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès
VPC_NETWORK : nom de votre réseau VPC
VPC_CONNECTOR_NETWORK_TAG : tag réseau du connecteur VPC universel si vous souhaitez que la règle s'applique à tous les connecteurs VPC existants et à tous les connecteurs VPC créés ultérieurement. Ou tag réseau unique du connecteur VPC si vous souhaitez contrôler un connecteur spécifique. Si vous avez utilisé le tag réseau unique à l'étape précédente, utilisez-le.
PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.
Pour plus d'informations sur les options obligatoires et facultatives de création de règles de pare-feu, reportez-vous à la documentation de gcloud compute firewall-rules create
.
Gérer votre connecteur
Contrôler le trafic sortant d'un service
Par défaut, seules les requêtes adressées aux adresses IP internes et aux noms DNS internes sont acheminées via un connecteur d'accès au VPC sans serveur. Vous pouvez spécifier le paramètre de sortie de votre service dans votre fichier app.yaml
.
Les paramètres de sortie ne sont pas compatibles avec le service de récupération d'URL. Si vous ne l'avez pas déjà fait, désactivez le comportement par défaut de la récupération d'URL en utilisant des sockets et arrêtez toute utilisation explicite du package urlfetch
.
L'utilisation de la bibliothèque urlfetch
ignore les paramètres de sortie et les requêtes ne sont pas acheminées via un connecteur d'accès au VPC sans serveur.
Pour configurer le comportement de sortie de votre service App Engine, procédez comme suit :
Ajoutez l'attribut
egress_setting
au champvpc_access_connector
du fichierapp.yaml
de votre service :vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Remplacez :
PROJECT_ID
par l'ID de votre projet Google CloudREGION
par la région dans laquelle se trouve le connecteur.CONNECTOR_NAME
par le nom de votre connecteur.EGRESS_SETTING
par l'un des éléments suivants :private-ranges-only
(valeur 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.all-traffic
Toutes les requêtes sortantes provenant de votre service sont acheminées vers votre réseau VPC. Les requêtes sont ensuite soumises aux règles de pare-feu, de DNS et de routage de votre réseau VPC. Notez que le routage de toutes les requêtes sortantes vers votre réseau VPC augmente la quantité de trafic de sortie gérée par le connecteur d'accès au VPC sans serveur et peut entraîner des frais.
Déployez le service :
gcloud app deploy
Déconnecter un service d'un réseau VPC
Pour déconnecter un service d'un réseau VPC, supprimez la section vpc_access_connector
du fichier app.yaml
, puis redéployez le service.
Les connecteurs continuent à entraîner des frais, même s'ils n'ont pas de trafic et sont déconnectés. Pour en savoir plus, reportez-vous à Tarification. Si vous n'avez plus besoin de votre connecteur, veillez à le supprimer pour éviter de continuer à payer des frais.
Mettre à jour un connecteur
Vous pouvez mettre à jour et surveiller les attributs suivants de votre connecteur à l'aide de la console Google Cloud, de Google Cloud CLI ou de l'API :
- Type de machine (instance)
- Nombre minimal et maximal d'instances
- Débit récent, nombre d'instances et utilisation du processeur
Mettre à jour le type de machine
Console
Accédez à la page de présentation de l'accès au VPC sans serveur.
Sélectionnez le connecteur que vous souhaitez modifier, puis cliquez sur Modifier.
Dans la liste Type d'instance, sélectionnez le type de machine (instance) de votre choix. Pour en savoir plus sur les types de machines disponibles, consultez la documentation Débit et scaling.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pour mettre à jour le type de machine du connecteur, exécutez la commande suivante dans votre terminal :
Remplacez les éléments suivants :gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME
: nom de votre connecteurREGION
: nom de la région du connecteurMACHINE_TYPE
: type de machine de votre choix Pour en savoir plus sur les types de machines disponibles, consultez la documentation Débit et scaling.
Réduire le nombre minimal et maximal d'instances
Pour réduire le nombre minimal et maximal d'instances, vous devez procéder comme suit :
- Créez un connecteur avec les valeurs de votre choix.
- Mettez à jour votre service ou votre fonction pour utiliser le nouveau connecteur.
- Supprimez l'ancien connecteur lorsque vous avez déplacé son trafic.
Pour en savoir plus, consultez la section Créer un connecteur d'accès au VPC sans serveur.
Augmenter le nombre minimal et maximal d'instances
Console
Accédez à la page de présentation de l'accès au VPC sans serveur.
Sélectionnez le connecteur que vous souhaitez modifier, puis cliquez sur Modifier.
Dans le champ Nombre minimal d'instances, sélectionnez le nombre minimal d'instances de votre choix.
La plus petite valeur possible de ce champ est la valeur actuelle. La plus grande valeur possible pour ce champ est la valeur actuelle figurant dans le champ Nombre maximal d'instances moins 1. Par exemple, si la valeur du champ Nombre maximal d'instances est 8, la valeur la plus élevée possible pour le champ Nombre minimal d'instances est 7.
Dans le champ Nombre maximal d'instances, sélectionnez le nombre maximal d'instances souhaité.
La plus petite valeur possible de ce champ est la valeur actuelle. La valeur la plus élevée pour ce champ est 10.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Pour augmenter le nombre minimal ou maximal d'instances du connecteur, exécutez la commande suivante dans votre terminal :
Remplacez les éléments suivants :gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
CONNECTOR_NAME
: nom de votre connecteurREGION
: nom de la région du connecteurMIN_INSTANCES
: nombre minimal d'instances souhaité.- La plus petite valeur possible pour ce champ est la valeur actuelle de
min_instances
. Pour trouver la valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles. - La plus grande valeur possible pour ce champ est la valeur
max_instances
actuelle moins 1, carmin_instances
doit être inférieur àmax_instances
. Par exemple, simax_instances
est défini sur 8, la plus grande valeur possible pour ce champ est 7. Si votre connecteur utilise la valeurmax-instances
par défaut de 10, la plus grande valeur possible de ce champ est 9. Pour trouver la valeur demax-instances
, consultez Rechercher les valeurs d'attributs actuelles.
- La plus petite valeur possible pour ce champ est la valeur actuelle de
MAX_INSTANCES
:- La plus petite valeur possible pour ce champ est la valeur actuelle de
max_instances
. Pour trouver la valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles. - La valeur la plus élevée possible pour ce champ est 10.
Si vous souhaitez augmenter le nombre minimal d'instances, mais pas le nombre maximal, vous devez toujours spécifier le nombre maximal d'instances. Inversement, si vous ne souhaitez mettre à jour que le nombre maximal d'instances, mais pas le nombre minimal, vous devez toujours spécifier le nombre minimal d'instances. Pour conserver la valeur actuelle du nombre minimal ou maximal d'instances, vous devez spécifier cette valeur actuelle. Pour trouver leur valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles.
- La plus petite valeur possible pour ce champ est la valeur actuelle de
Rechercher les valeurs d'attribut actuelles
Pour trouver les valeurs d'attribut actuelles de votre connecteur, exécutez la commande suivante dans votre terminal :
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME
: nom de votre connecteurREGION
: nom de la région du connecteurPROJECT
: nom de votre projet Google Cloud
Surveiller l'utilisation des connecteurs
Surveiller l'utilisation au fil du temps peut vous aider à déterminer quand ajuster les paramètres d'un connecteur. Par exemple, si l'utilisation du processeur connaît un pic, vous pouvez essayer d'augmenter le nombre maximal d'instances pour obtenir de meilleurs résultats. Si vous atteignez le débit maximal, vous pouvez également décider de passer à un type de machine de capacité supérieure.
Pour afficher des graphiques concernant le débit du connecteur, le nombre d'instances et les métriques d'utilisation du processeur au fil du temps à l'aide de la console Google Cloud, procédez comme suit :
Accédez à la page de présentation de l'accès au VPC sans serveur.
Cliquez sur le nom du connecteur que vous souhaitez surveiller.
Sélectionnez le nombre de jours à afficher, compris entre 1 et 90 jours.
Dans le graphique Débit, passez la souris sur le graphique pour afficher le débit récent du connecteur.
Dans le graphique Nombre d'instances, passez la souris sur le graphique pour afficher le nombre d'instances récemment utilisées par le connecteur.
Dans le graphique Utilisation du processeur, passez la souris sur le graphique pour afficher l'utilisation récente du processeur par le connecteur. Le graphique affiche l'utilisation du processeur répartie sur les instances pour les 50e, 95e et 99e centiles.
Supprimer un connecteur
Avant de supprimer un connecteur, assurez-vous qu'aucun service ni job ne lui est toujours connecté.
Pour les utilisateurs de VPC partagé qui configurent des connecteurs dans le projet hôte de VPC partagé, vous pouvez exécuter la commande gcloud compute networks vpc-access connectors describe
pour répertorier les projets dans lesquels certains services ou jobs utilisent un connecteur donné.
Pour supprimer un connecteur, utilisez la console Google Cloud ou Google Cloud CLI :
Console
Accédez à la page de présentation de l'accès au VPC sans serveur dans la console Google Cloud :
Sélectionnez le connecteur que vous souhaitez supprimer.
Cliquez sur Supprimer.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Utilisez la commande
gcloud
suivante pour supprimer un connecteur :gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Remplacez les éléments suivants :
- CONNECTOR_NAME par le nom du connecteur que vous souhaitez supprimer ;
- REGION par la région où se trouve le connecteur.
Dépannage
Autorisations de compte de service
Pour effectuer des opérations dans votre projet Google Cloud, le service d'accès au VPC sans serveur utilise le compte de service Agent de service de l'accès au VPC sans serveur. L'adresse e-mail de ce compte de service est au format suivant :
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
Par défaut, ce compte de service dispose du rôle Agent de service d'accès au VPC sans serveur (roles/vpcaccess.serviceAgent
). Les opérations d'accès au VPC sans serveur peuvent échouer si vous modifiez les autorisations de ce compte.
Mauvaises performances du réseau ou utilisation élevée du processeur inactif
L'utilisation d'un seul connecteur pour des milliers d'instances peut entraîner une dégradation des performances et une utilisation élevée du processeur inactif. Pour résoudre ce problème, répartissez vos services entre plusieurs connecteurs.
Erreurs
Erreur "Compte de service nécessitant un rôle d'agent de service"
Si vous utilisez la contrainte de règle d'administration Restreindre l'utilisation des services de ressources pour bloquer Cloud Deployment Manager (deploymentmanager.googleapis.com
), vous verrez peut-être le message d'erreur suivant :
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
Définissez la règle d'administration pour retirer Deployment Manager de la liste de blocage ou l'ajouter à la liste d'autorisation.
Erreur de création de connecteur
Si la création d'un connecteur entraîne une erreur, procédez comme suit :
- Spécifiez une plage d'adresses IP interne RFC 1918 qui ne chevauche aucune réservation d'adresses IP existantes sur le réseau VPC.
- Accordez à votre projet l'autorisation d'utiliser les images de VM Compute Engine du projet avec l'ID
serverless-vpc-access-images
. Consultez la section Définir des contraintes d'accès aux images pour savoir comment mettre à jour votre règle d'administration en conséquence.
Impossible d'accéder aux ressources
Si vous avez spécifié un connecteur, mais que vous ne pouvez toujours pas accéder aux ressources de votre réseau VPC, assurez-vous qu'aucune règle de pare-feu de votre réseau VPC ayant une priorité inférieure à 1 000 ne refuse l'entrée en provenance de la plage d'adresses IP de votre connecteur.
Si vous configurez un connecteur dans un projet de service VPC partagé, assurez-vous que vos règles de pare-feu autorisent l'entrée de votre infrastructure sans serveur vers le connecteur.
Erreur de connexion refusée
Si vous recevez des erreurs connection refused
ou connection timeout
qui dégradent les performances du réseau, cela signifie peut-être que le nombre de vos connexions augmente sans cesse à mesure des appels de votre application sans serveur. Pour limiter le nombre maximal de connexions utilisées par instance, utilisez une bibliothèque cliente compatible avec les pools de connexions. Pour obtenir des exemples détaillés d'utilisation des pools de connexions, consultez la page Gérer les connexions aux bases de données.
Erreur de ressource introuvable
Lorsque vous supprimez un réseau VPC ou une règle de pare-feu, un message semblable au suivant peut s'afficher : The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Pour en savoir plus sur cette erreur et sa solution, consultez la section Erreur de ressource introuvable dans la documentation sur les règles de pare-feu VPC.
Étapes suivantes
- Surveillez l'activité des administrateurs avec les journaux d'audit de l'accès au VPC sans serveur.
- Protégez les ressources et les données en créant un périmètre de service avec VPC Service Controls.
- Découvrez les rôles IAM (gestion de l'authentification et des accès) associés à l'accès au VPC sans serveur. Reportez-vous à la page Rôles associés à l'accès au VPC sans serveur dans la documentation IAM pour obtenir la liste des autorisations associées à chaque rôle.
- Découvrez comment vous connecter à Memorystore depuis l'environnement standard App Engine.