Configurer des connecteurs dans le projet hôte de VPC partagé
Si votre organisation utilise un VPC partagé, vous pouvez configurer des connecteurs d'accès au VPC sans serveur dans le projet de service ou le projet hôte. Ce guide explique comment configurer un connecteur dans le projet hôte.
Si vous devez configurer un connecteur dans un projet de service, consultez la section Configurer des connecteurs dans des projets de service. Pour en savoir plus sur les avantages offerts par chacune de ces méthodes, consultez la section Se connecter à un réseau VPC partagé.
Avant de commencer
Vérifiez les rôles IAM (Identity and Access Management) pour le compte que vous utilisez. Le compte actif doit disposer des rôles suivants sur le projet hôte :
Sélectionnez le projet hôte dans l'environnement de votre choix.
Dans gcloud CLI, définissez le projet par défaut sur le projet hôte en exécutant la commande suivante dans votre terminal :
gcloud config set project HOST_PROJECT_ID
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID du projet hôte de VPC partagé.
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, vous devez créer un connecteur d'accès au VPC sans serveur. Vous pouvez créer un connecteur à l'aide de la Google Cloud CLI ou de Terraform:
gcloud
Mettez à jour les composants
gcloud
vers la dernière version :gcloud components update
Activez l'API Serverless VPC Access pour votre projet :
gcloud services enable vpcaccess.googleapis.com
Créez un connecteur d'accès au VPC sans serveur :
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet=SUBNET \ --subnet-project=HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances=MIN \ --max-instances=MAX \ # Optional: specify machine type, default is e2-micro --machine-type=MACHINE_TYPE
Remplacez les éléments suivants :
CONNECTOR_NAME
: nom du connecteur. Le nom doit respecter la convention d'attribution de noms de Compute Engine et comporter moins de 21 caractères. Les tirets (-
) comptent pour deux caractères.REGION
: région de votre connecteur. Elle doit correspondre à la région de votre service sans serveur. Si votre service se trouve dans la régionus-central
oueurope-west
, utilisezus-central1
oueurope-west1
.SUBNET
: nom d'un sous-réseau/28
inutilisé- Les sous-réseaux doivent être utilisés exclusivement par le connecteur. Ils ne peuvent pas être utilisés par d'autres ressources telles que les VM, Private Service Connect et les équilibreurs de charge.
- Pour vérifier que votre sous-réseau n'est pas utilisé par Private Service Connect ni Cloud Load Balancing, vérifiez que le paramètre
purpose
du sous-réseau est bien défini surPRIVATE
en exécutant la commande suivante dans gcloud CLI : Remplacez les éléments suivants :gcloud compute networks subnets describe SUBNET_NAME
SUBNET_NAME
: nom de votre sous-réseau
HOST_PROJECT_ID
: ID du projet hôteMIN
: nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre2
et9
. La valeur par défaut est2
. Pour en savoir plus sur le scaling des connecteurs, consultez la page Débit et scaling.MAX
: nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre3
et10
. La valeur par défaut est10
. Si le trafic l'exige, le connecteur effectue un scaling horizontal jusqu'aux instances[MAX]
, mais il ne réduit pas le nombre d'instances. Pour en savoir plus sur le scaling des connecteurs, consultez la page Débit et scaling.MACHINE_TYPE
:f1-micro
,e2-micro
oue2-standard-4
. 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.
Pour plus d'informations et d'arguments facultatifs, consultez la documentation de référence sur
gcloud
.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.
Activer Cloud Run Functions pour le projet de service
Activez l'API Cloud Run Functions pour le projet de service. Cela est nécessaire pour ajouter des rôles IAM lors des étapes suivantes et pour que le projet de service puisse utiliser Cloud Run Functions.
Exécutez la commande suivante dans votre terminal :
gcloud services enable cloudfunctions.googleapis.com --project=SERVICE_PROJECT_ID
Remplacez les éléments suivants :
SERVICE_PROJECT_ID
: ID du projet de service
Fournir un accès au connecteur
Accordez l'accès au connecteur en attribuant au projet de service le rôle IAM Utilisateur de l'accès au VPC sans serveur de l'agent de service des fonctions Cloud Run sur le projet hôte. Vous devez également attribuer le même rôle à l'agent de service Cloud Run.
Exécutez la commande suivante dans votre terminal :
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID du projet hôte de VPC partagéSERVICE_PROJECT_NUMBER
: numéro du projet de service associé au projet de service Cette valeur est différente de l'ID du projet. Vous pouvez trouver le numéro de projet en exécutant la commande suivante :gcloud projects describe SERVICE_PROJECT_ID
Attribuez également le rôle à l'agent de service Cloud Run en exécutant la commande suivante :
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \ --role=roles/vpcaccess.user
Rendre le connecteur visible
Sur la stratégie IAM du projet hôte, vous devez attribuer les deux rôles prédéfinis suivants aux comptes principaux qui déploient les services Cloud Run :
- Lecteur pour l'accès au VPC sans serveur (
vpcaccess.viewer
) : obligatoire. - Lecteur de réseau Compute (
compute.networkViewer
) : facultatif, mais recommandé. Permet au compte principal IAM d'énumérer les sous-réseaux du réseau VPC partagé.
Vous pouvez également utiliser des rôles personnalisés ou d'autres rôles prédéfinis qui incluent toutes les autorisations du rôle Lecteur d'accès au VPC sans serveur (vpcaccess.viewer
).
Exécutez les commandes suivantes dans votre terminal :
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID du projet hôte de VPC partagé.PRINCIPAL
: compte principal qui déploie les services Cloud Run. En savoir plus sur l'option--member
.
Configurer votre fonction pour utiliser un connecteur
Pour chaque fonction nécessitant un accès à votre VPC partagé, vous devez spécifier le connecteur de la fonction. La procédure suivante montre comment configurer votre fonction pour utiliser un connecteur.
Définissez gcloud CLI pour utiliser le projet contenant la fonction :
Remplacez les éléments suivants :gcloud config set project PROJECT_ID
PROJECT_ID
: ID du projet contenant la fonction qui nécessite l'accès à votre VPC partagé. Si la fonction se trouve dans le projet hôte, il s'agit de l'ID du projet hôte. Si la fonction se trouve dans un projet de service, il s'agit de l'ID du projet de service.
Utilisez l'option
--vpc-connector
et déployez votre fonction :gcloud functions deploy FUNCTION_NAME --vpc-connector=CONNECTOR_NAME
Remplacez les éléments suivants :
FUNCTION_NAME
: nom de votre fonctionCONNECTOR_NAME
: nom du connecteur. Utilisez le nom complet lors du déploiement à partir d'un projet de service VPC partagé (par opposition au projet hôte), par exemple : oùprojects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
HOST_PROJECT_ID
est l'ID du projet hôte,CONNECTOR_REGION
est la région de votre connecteur etCONNECTOR_NAME
est le nom de votre connecteur.
Pour apprendre à contrôler plus précisément les requêtes acheminées via le connecteur, consultez la section Paramètres de sortie.
Étapes suivantes
- Connectez-vous à Memorystore à partir de Cloud Run Functions.
- Configurez les paramètres réseau de Cloud Run Functions.
- 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 Identity and Access Management (IAM) 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.