Go 1.16 pasó a la fase de disponibilidad general.

Conexión a una red de VPC compartida

Si tu organización usa una VPC compartida, puedes configurar conectores de Acceso a VPC sin servidores en el proyecto de servicio o en el proyecto host. En esta guía, se muestra cómo configurar un conector en el proyecto de servicio.

En un nivel alto, debes seguir estos pasos:

  1. Agrega reglas de firewall para permitir los rangos de IP obligatorios
  2. Otorga permisos
  3. Crear una subred
  4. En la página Configura el Acceso a VPC sin servidores, completa los pasos de las siguientes secciones:

Ventajas

Ventajas de crear conectores en los proyectos de servicio:

  • Aislamiento: Cada conector tiene un ancho de banda dedicado y no se ve afectado por el uso del ancho de banda de los conectores en otros proyectos de servicio. Esto es bueno si tienes un servicio que experimenta aumentos repentinos de tráfico o si necesitas asegurarte de que cada proyecto de servicio no se vea afectado por el uso de conectores de otros proyectos de servicio.
  • Devoluciones de cargos: Los cargos que generan los conectores están asociados al proyecto de servicio que contiene el conector. Esto facilita las devoluciones de cargos.
  • Seguridad: Te permite seguir el “principio de privilegio mínimo”. Los conectores deben tener acceso a los recursos en tu red de VPC compartida a los que deben llegar. Si creas un conector en el proyecto de servicio, puedes limitar a qué pueden acceder los servicios del proyecto mediante reglas de firewall.
  • Independencia del equipo: Reduce la dependencia del administrador del proyecto host. Los equipos pueden crear y administrar los conectores asociados a su proyecto de servicio. Un usuario con la función Administrador de seguridad de Compute Engine o una función personalizada de Identity and Access Management (IAM) con el permiso compute.firewalls.create habilitado para el proyecto host de todos modos debe administrar las reglas de firewall para el conector.

Si estas consideraciones no se ajustan a tu caso de uso, lee sobre las ventajas de configurar la VPC compartida con conectores en el proyecto host.

Agrega reglas de firewall para permitir rangos de IP

Para seguir estos pasos, debes tener una de las siguientes funciones en el proyecto host:

Debes crear reglas de firewall para permitir que las solicitudes de los siguientes rangos de IP lleguen al conector y que el conector pueda llegar a estas:

  • Rangos de NAT
    • 107.178.230.64/26
    • 35.199.224.0/19
  • Rangos de verificación de estado
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 108.170.220.0/23

La infraestructura de Google subyacente a Cloud Run, Cloud Functions y el entorno estándar de App Engine usan estos rangos. Se garantiza que todas las solicitudes de estas IP se originen en la infraestructura de Google, lo que garantiza que cada servicio, función o app de Cloud Run, Cloud Functions y App Engine solo se comunique con el conector de VPC con el que tienen una conexión.

Para una configuración simple, aplica las reglas a fin de permitir que los servicios sin servidores en cualquier proyecto de servicio conectado a la red de VPC compartida envíen solicitudes a cualquier recurso en la red.

Para aplicar estas reglas, sigue estos pasos:

  1. Ejecuta los tres comandos siguientes para establecer las reglas a fin de permitir que las solicitudes del entorno sin servidores lleguen a todos los conectores de VPC de la red:

    gcloud compute firewall-rules create serverless-to-vpc-connector \
    --allow tcp:667,udp:665-666,icmp \
    --source-ranges 107.178.230.64/26,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 107.178.230.64/26,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 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK

    VPC_NETWORK es la red de VPC a la que conectarás el conector.

  2. Crea una regla de entrada en la red de VPC para permitir las solicitudes de los conectores:

    gcloud compute firewall-rules create vpc-connector-requests \
    --allow tcp,udp,icmp \
    --direction=INGRESS \
    --source-tags vpc-connector \
    --network=VPC_NETWORK

    Esta regla otorga al conector de VPC acceso a cada recurso de la red. Para limitar los recursos a los que tu entorno sin servidores puede acceder con el Acceso a VPC sin servidores, especifica un destino para estas reglas de firewall o consulta Crea reglas de firewall con un alcance más reducido. Ten en cuenta que si especificas un destino, debes crear un conjunto nuevo de reglas de firewall cada vez que crees un nuevo conector de VPC.

Crea reglas de firewall con un alcance más reducido

Seguir el procedimiento en Agregar reglas de firewall para permitir rangos de IP da como resultado reglas de firewall que se aplican a todos los conectores, tanto los actuales como los que se creen en el futuro. Si no quieres esto, pero deseas crear reglas solo para conectores específicos, puedes definir el alcance de las reglas para que se apliquen solo a esos conectores.

Para limitar el alcance de las reglas a conectores específicos, puedes usar uno de los siguientes mecanismos:

  • Etiquetas de red. Cada conector tiene dos etiquetas de red: vpc-connector y vpc-connector-REGION-CONNECTOR_NAME. Usa este último formato para limitar el alcance de las reglas de firewall a un conector específico.
  • Rangos de IP. Usa esto solo para las reglas de salida, porque no funciona con Ingress. Puedes usar el rango de IP de la subred del conector para limitar el alcance de las reglas de firewall a un solo conector de VPC.

Otorga permisos a cuentas de servicio en tus proyectos de servicio

Para cada proyecto de servicio que usará conectores de VPC, un administrador de VPC compartida debe otorgar la función de usuario de la red de Compute (compute.networkUser) en el proyecto host al proyecto de servicio de las cuentas de servicio cloudservices y vpcaccess.

Para otorgar la función, haz lo siguiente:

  1. Usa los siguientes comandos:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
  2. Si la cuenta de servicio @gcp-sa-vpcaccess no existe, activa la API de acceso a VPC sin servidores en el proyecto de servicio y vuelve a intentarlo:

    gcloud services enable vpcaccess.googleapis.com

Si prefieres no otorgar a estas cuentas de servicio acceso a toda la red de VPC compartida y prefieres otorgar acceso a subredes específicas, puedes otorgar estas funciones a estas cuentas de servicio solo en subredes específicas.

Crear una subred

Cuando usas la VPC compartida, el administrador de VPC compartida debe crear una subred para cada conector. Puedes seguir la documentación sobre cómo agregar una subred para agregar una subred /28 a la red de VPC compartida. Esta subred debe estar en la misma región que los servicios sin servidores que usarán el conector.

Próximos pasos