Configura el Acceso a VPC sin servidores

El acceso a VPC sin servidores te permite conectarte desde un entorno sin servidores en Google Cloud (Cloud Run, Cloud Functions o el entorno estándar de App Engine) directamente a la red de VPC. Esta conexión permite que el entorno sin servidores acceda a las instancias de VM de Compute Engine, las instancias de Memorystore y cualquier otro recurso con una dirección IP interna. Por ejemplo, esto puede ser útil en los siguientes casos:

  • Si usas Memorystore para almacenar datos de un servicio sin servidores.
  • Si tus cargas de trabajo sin servidores usan software de terceros que ejecutas en una VM de Compute Engine.
  • Si ejecutas un servicio de backend en un grupo de instancias administrado en Compute Engine y necesitas que el entorno sin servidores se comunique con este backend sin exponerse a la Internet pública.
  • Si el entorno sin servidores debe acceder a los datos de la base de datos local a través de Cloud VPN.

La conexión a una red de VPC permite que tu entorno sin servidores envíe solicitudes a nombres de DNS internos y direcciones IP internas según lo que se define en RFC 1918 y RFC 6598. Solo se puede acceder a estas direcciones internas desde los servicios de Google Cloud. Usar direcciones internas evita exponer recursos a la Internet pública y mejora la latencia de la comunicación entre los servicios.

El Acceso a VPC sin servidores permite que solo el entorno sin servidores inicie las solicitudes. Las solicitudes iniciadas por una VM deben usar la dirección externa del servicio sin servidores. Consulta Acceso privado a Google para obtener más información.

El Acceso a VPC sin servidores es compatible con la VPC compartida y la comunicación con las redes conectadas a través de Cloud Interconnect, Cloud VPN y el intercambio de tráfico entre redes de VPC. El Acceso a VPC sin servidores no es compatible con las redes heredadas.

Acerca de los conectores del Acceso a VPC sin servidores

El acceso a VPC sin servidores se basa en un recurso denominado conector. Los conectores controlan el tráfico entre el entorno sin servidores y la red de VPC. Cuando creas un conector en un proyecto de Google Cloud, debes conectarlo a una red de VPC y a una región específicas. Luego, puedes configurar tus servicios sin servidores para usar el conector en el tráfico de red saliente.

Cuando creas un conector, puedes usar tu propia subred /28 de CIDR o un rango de IP personalizado. El tráfico enviado a través del conector a tu red de VPC se originará desde tu subred /28 o desde una dirección en el rango de IP personalizado. Si usas un rango de IP personalizado, el rango de IP debe ser un rango de /28 de CIDR que no esté reservado en tu red de VPC.

Si la subred no es una subred compartida, se crea una regla de firewall implícita con prioridad 1,000 en la red de VPC para permitir la entrada desde la subred del conector o el rango de IP personalizado a todos los destinos en la red.

El Acceso a VPC sin servidores aprovisiona de forma automática la capacidad de procesamiento de un conector en incrementos de 100 Mbps según la cantidad de tráfico que se envía a través de él. La capacidad de procesamiento aprovisionada automáticamente solo puede aumentar la escala, no disminuirla. Los conectores siempre tienen aprovisionados 100 Mbps como mínimo y se pueden escalar verticalmente hasta 16 Gbps. Puedes configurar límites de escalamiento de la capacidad de procesamiento cuando creas un conector. Ten en cuenta que la capacidad de procesamiento real a través de un conector puede superar la aprovisionada, en especial, para aumentos de actividad de tráfico breves.

Los conectores del Acceso a VPC sin servidores tienen un cargo mensual en función del uso. Consulta Precios para obtener más detalles.

Ejemplo del Acceso a VPC sin servidores (haz clic para ampliar)
Ejemplo del Acceso a VPC sin servidores (haz clic para ampliar)

Ten en cuenta lo siguiente:

  • Los conectores deben estar ubicados en el mismo proyecto que el servicio sin servidores (como los servicios de Cloud Run, las apps de App Engine o Cloud Functions) que se conecten a ellos.
  • Un conector debe estar ubicado en la misma región que el servicio sin servidores que se conecta a él. Consulta Regiones compatibles para ver la lista de regiones en las que puedes crear conectores.
  • El tráfico a las direcciones IP internas y los nombres de DNS interno se enruta a través del conector. De forma predeterminada, el tráfico a las direcciones IP externas se enruta a través de Internet.
  • Si usas VPC compartidas, sigue estos pasos:

  • Puedes usar el mismo conector con varios servicios sin servidores.

  • En el caso de los recursos (como las instancias de VM de Google Cloud o los clústeres de GKE) que permiten el acceso entre regiones, un conector pueden estar en una región diferente a la de los recursos a los que envía el tráfico. Se te facturará por el tráfico de salida del conector. Consulta los Precios.

Etiquetas de red de Acceso a VPC sin servidores

Las etiquetas de red de acceso a VPC sin servidores te permiten especificar conectores de VPC en reglas de firewall y rutas.

Cada conector de acceso a VPC sin servidores recibe de forma automática dos etiquetas de red (a veces llamadas etiquetas de instancia):

  • Etiqueta de red universal: vpc-connector, se aplica a todos los conectores existentes y a cualquier conector futuro.
  • Etiqueta de red única: vpc-connector-REGION-CONNECTOR_NAME, se aplica al conector CONNECTOR_NAME en REGION

No se pueden borrar estas etiquetas de red. No se pueden agregar nuevas etiquetas de red.

Crea un conector

Console

  1. Si usas la VPC compartida, asegúrate de configurar el proyecto host.

  2. Asegúrate de que esté habilitada la API de Acceso a VPC sin servidores en el proyecto:

    Habilitar API

  3. Dirígete a la página de descripción general de Acceso a VPC sin servidores.

    Ir a Acceso a VPC sin servidores

  4. Haz clic en Crear conector.

  5. En el campo Nombre, ingresa un nombre para el conector.

  6. En el campo Región, selecciona una región para el conector. Debe coincidir con la región del servicio sin servidores. Consulta Regiones admitidas.

  7. En el campo Red, selecciona la red de VPC a la que conectarás el conector.

  8. Haz clic en el menú desplegable Subred:

    • Si usas tu propia subred (obligatorio para la VPC compartida), selecciona la subred /28 que deseas usar en el conector.
    • Si no usas una VPC compartida y prefieres que el conector cree una subred en lugar de crear una explícitamente, selecciona Rango de IP personalizado en el menú desplegable y, luego, en el campo Rango de IP, ingresa la primera dirección en un rango de IP interna /28 con CIDR sin reservar. Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC. Por ejemplo, 10.8.0.0 (/28) funcionará en la mayoría de los proyectos nuevos.

  9. (Opcional) Si deseas configurar las opciones de escalamiento para tener control adicional del conector, haz clic en Mostrar la configuración de escalamiento a fin de mostrar el formulario de escalamiento:

    image

    1. Configura la cantidad mínima y máxima de instancias para tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se escala horizontalmente al máximo especificado si el uso del tráfico lo requiere, pero el conector no se reduce cuando el tráfico disminuye. Debes usar valores que se encuentren entre 2 y 10.
    2. En el menú desplegable Tipo de instancia, elige el tipo de máquina que se usará para el conector o usa el tipo e2-micro predeterminado. Observa la barra lateral de costos a la izquierda cuando elijas el tipo de instancia, en la que se muestran las estimaciones de costo y ancho de banda.
  10. Haga clic en Crear.

  11. Aparecerá una marca de verificación verde junto al nombre del conector cuando esté listo para usar.

gcloud

  1. Si usas la VPC compartida, asegúrate de configurar el proyecto host.

  2. Actualiza los componentes de gcloud a la versión más reciente:

    gcloud components update
    
  3. Asegúrate de que esté habilitada la API de Acceso a VPC sin servidores en el proyecto:

    gcloud services enable vpcaccess.googleapis.com
    
  4. Si usas tu propia subred (obligatorio para VPC compartida), crea un conector con el siguiente comando:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --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
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: un nombre para tu conector
    • REGION: una región para el conector, la cual debe coincidir con la región del servicio sin servidores (consulta Regiones admitidas)
    • SUBNET: tu propia subred dedicada “/28” que no usa ningún otro recurso. El valor que se debe proporcionar es el nombre de la subred
    • HOST_PROJECT_ID: el ID del proyecto host. Suministra este valor solo si usas una VPC compartida
    • MIN: Es la cantidad mínima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre 2 y 10. El valor predeterminado es 2.
    • MAX: Es la cantidad máxima de instancias que se usarán para el conector. Usa un número entero que se encuentre entre 2 y 10. El valor predeterminado es 10. Si el tráfico lo requiere, el conector se escalará horizontalmente hasta el [MAX] de instancias, pero luego no se reducirá la escala.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4

      Tipo de máquina Rango de capacidad de procesamiento estimado en Mbps Precio
      (instancia del conector más costos de salida de red)
      f1-micro 100-500 Precios de f1-micro
      e2-micro 200-1000 Precios de e2-micro
      e2-standard-4 3200-16000 Precios estándar de e2

    Por ejemplo, si configuras MACHINE_TYPE como f1-micro, la capacidad de procesamiento estimada de tu conector será de 100 Mbps en el valor predeterminado MIN y de 500 Mbps en el valor MAX predeterminado.

    Para obtener más detalles y ver los argumentos opcionales, consulta la referencia de gcloud.

  5. Si no usas una VPC compartida y deseas proporcionar un rango de IP personalizado en lugar de usar una subred, crea un conector con el siguiente comando:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: un nombre para tu conector
    • VPC_NETWORK: la red de VPC a la que conectarás el conector
    • REGION: una región para el conector, la cual debe coincidir con la región del servicio sin servidores (consulta Regiones admitidas)
    • IP_RANGE: una red IP interna no reservada. Se requiere un valor “/28” de espacio no asignado. El valor proporcionado es la red en notación CIDR (10.8.0.0/28). Este rango de IP no debe superponerse con ninguna reserva de dirección IP existente en la red de VPC. Por ejemplo, 10.8.0.0/28 funciona en la mayoría de los proyectos nuevos.

    Para obtener más detalles y argumentos opcionales, como los controles de la capacidad de procesamiento, consulta la referencia de gcloud.

  6. Verifica que tu conector tenga el estado READY antes de usarlo:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    Reemplaza lo siguiente:

    • CONNECTOR_NAME: Es el nombre de tu conector. Este es el nombre que especificaste en el paso anterior
    • REGION: Es la región del conector. Esta es la región que especificaste en el paso anterior

    El resultado debe contener la línea state: READY.

Terraform

Puedes usar un recurso de Terraform para habilitar la API de vpcaccess.googleapis.com.

resource "google_project_service" "project" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Puedes usar módulos de Terraform para crear una red y subred de VPC y, luego, crear el conector.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
}

Configura el proyecto host si usas una VPC compartida

Si creas un conector para VPC compartida, debes configurar el proyecto host de la siguiente manera:

  • Agrega reglas de firewall para permitir que los rangos de IP requeridos tengan acceso al conector.
  • Otorga a cada proyecto de servicio la función del usuario de la red de Compute en el proyecto host.
  • Crea una subred en el proyecto host que se usará para crear un conector de VPC compartida.

Agrega reglas de firewall para permitir rangos de IP

Un usuario con una de las siguientes funciones en el proyecto host debe llevar a cabo estos pasos:

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. Ejecuta el siguiente comando para permitir solicitudes de cualquier conector de VPC para todos los recursos en la red:

    gcloud compute firewall-rules create \
    vpc-connector-egress \
    --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 permitir que los conectores de VPC accedan solo a un conjunto más limitado de recursos, especifica un destino para estas reglas de firewall. 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 permiso menor

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.

Crea 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.

Borra un conector

Antes de borrar un conector, asegúrate de que ningún servicio lo esté usando. Consulta la documentación de productos correspondiente para obtener información sobre cómo desconectar un conector de un servicio.

Para borrar un conector, usa Cloud Console o la herramienta de línea de comandos de gcloud:

Console

  1. Dirígete a la página de descripción general de acceso a VPC sin servidores.

    Ir a Acceso a VPC sin servidores

  2. Selecciona el conector que quieres borrar.

  3. Haz clic en Borrar.

gcloud

Usa el siguiente comando de gcloud para borrar un conector:

gcloud compute networks vpc-access connectors delete CONNECTOR_NAME \
--region REGION

Reemplaza lo siguiente:

  • CONNECTOR_NAME es el nombre del conector que quieres borrar.
  • REGION es la región donde se encuentra el conector.

Configura un servicio para usar un conector

Después de crear un conector, puedes configurar los servicios sin servidores para usarlo. La forma en que configuras un servicio para usar un conector depende del producto. Para obtener instrucciones específicas, consulta la guía correspondiente:

Después de que tu servicio se conecta a una red de VPC, puedes acceder a instancias de VM y a otros recursos internos si envías solicitudes a sus direcciones IP internas o nombres de DNS.

Restringe el acceso a los recursos de VPC

Puedes restringir el acceso de tu conector a la red de VPC mediante las reglas de firewall.

Cuando te conectas a una red de VPC compartida, las reglas de firewall no se crean de forma automática. Un usuario con la función de administrador de red en el proyecto host establece reglas de firewall cuando configura el proyecto host. Si usas una VPC compartida, consulta Crea reglas de firewall con un alcance más limitado para obtener información sobre cómo restringir el acceso.

Cuando te conectas a una red de VPC independiente, se crea de forma automática una regla de firewall implícita con prioridad de 1,000 en la red de VPC para permitir la entrada de la subred del conector o el rango de IP personalizado a todos los destinos en la red de VPC. La regla de firewall implícita no se puede ver en Google Cloud Console y solo existe mientras exista el conector asociado. Si no quieres que tu conector pueda acceder a todos los destinos de la red de VPC, puedes restringir su acceso.

Para restringir el acceso del conector, crea reglas de entrada en el recurso de destino o crea reglas de salida en el conector de VPC.

Restringe el acceso mediante reglas de entrada

Elige las etiquetas de red o los rangos de CIDR que sirven para controlar el tráfico de entrada a tu red de VPC:

Etiquetas de red

En los siguientes pasos, se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función de las etiquetas de red del conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Deniega el tráfico del conector en toda tu red de VPC.

    Crea una regla de firewall de entrada con una prioridad inferior a 1,000 en la red de VPC para denegar la entrada de la etiqueta de red del conector. Esto anula la regla de firewall implícita que crea el acceso a VPC sin servidores en la red de VPC de forma predeterminada.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: un número entero de 1 a 999, inclusive. Por ejemplo, 990.
  3. Permite el tráfico del conector al recurso que debe recibir tráfico del conector.

    Usa las marcas allow y target-tags para crear una regla de firewall de entrada orientada al recurso en tu red de VPC a la que deseas que acceda el conector de VPC. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico. Si usaste la etiqueta de red única en el paso anterior, usa la etiqueta de red única.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • RESOURCE_TAG: la etiqueta de red para el recurso de VPC al que deseas que acceda tu conector de VPC.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Rango de CIDR

En los siguientes pasos, se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función del rango de CIDR del conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Deniega el tráfico del conector en toda tu red de VPC.

    Crea una regla de firewall de entrada con una prioridad inferior a 1,000 en tu red de VPC para denegar la entrada desde el rango de CIDR del conector. Esto anula la regla de firewall implícita que crea el acceso a VPC sin servidores en la red de VPC de forma predeterminada.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: Un número entero de 1 a 999. Por ejemplo, 990.
  3. Permite el tráfico del conector al recurso que debe recibir tráfico del conector.

    Usa las marcas allow y target-tags para crear una regla de firewall de entrada orientada al recurso en tu red de VPC a la que deseas que acceda el conector de VPC. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • VPC_CONNECTOR_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • RESOURCE_TAG: la etiqueta de red para el recurso de VPC al que deseas que acceda tu conector de VPC.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Restringe el acceso mediante reglas de salida

En los siguientes pasos, se muestra cómo crear reglas de salida para restringir el acceso al conector.

  1. Asegúrate de tener los permisos necesarios para insertar reglas de firewall. Debes contar con una de las siguientes funciones de Identity and Access Management (IAM):

  2. Rechaza el tráfico de salida proveniente de tu conector.

    Crea una regla de firewall de salida en tu conector de acceso a VPC sin servidores para evitar que envíe tráfico de salida.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico.
    • VPC_NETWORK es el nombre de tu red de VPC.
    • PRIORITY: Un número entero de 1 a 999. Por ejemplo, 990.
  3. Permite el tráfico de salida cuando el destino se encuentra en el rango CIDR al que deseas que acceda tu conector.

    Usa las marcas allow y destination-ranges a fin de crear una regla de firewall que permita el tráfico de salida desde el conector para un rango específico de destinos. Establece el rango de destinos en el rango de CIDR del recurso en tu red de VPC a la que deseas que tu conector pueda acceder. Establece la prioridad para que esta regla sea un valor inferior a la prioridad de la regla que estableciste en el paso anterior.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Reemplaza lo siguiente:

    • RULE_NAME: Es el nombre de la regla de firewall nueva. Por ejemplo, allow-vpc-connector-for-select-resources
    • PROTOCOLS: los protocolos que deseas permitir desde tu conector de VPC. Pueden ser uno o más de los valores de string con distinción entre mayúsculas y minúsculas, tcp, udp, icmp, esp, ah, sctp o cualquier número del protocolo de IP. Para los protocolos basados en puertos, tcp, udp y sctp, se puede especificar una lista de puertos o rangos de puertos a los que se aplica la regla. Para obtener más información, consulta la documentación de la marca allow.
    • RESOURCE_CIDR_RANGE: El rango de CIDR del conector cuyo acceso estás restringiendo
    • VPC_NETWORK es el nombre de tu red de VPC.
    • VPC_CONNECTOR_NETWORK_TAG: Es la etiqueta de red del conector de VPC universal si deseas que la regla se aplique para todos los conectores de VPC existentes y futuros. O bien, es la etiqueta de red del conector de VPC única si deseas controlar un conector específico. Si usaste la etiqueta de red única en el paso anterior, usa la etiqueta de red única.
    • PRIORITY: un número entero inferior a la prioridad que estableciste en el paso anterior. Por ejemplo, si estableces la prioridad para la regla que creaste en el paso anterior en 990, prueba con 980.

A fin de obtener más información sobre las marcas obligatorias y opcionales para la creación de reglas de firewall, consulta la documentación de gcloud compute firewall-rules create.

Agrega Controles del servicio de VPC

Una vez que hayas creado el conector y configurado el servicio, puedes mitigar el riesgo de robo de datos y proteger los recursos y los datos mediante los Controles del servicio de VPC para la API de Acceso a VPC sin servidores.

Si deseas obtener información general para habilitar los Controles del servicio de VPC, consulta Crea un perímetro de servicio.

Servicios compatibles

Puedes usar el Acceso a VPC sin servidores para acceder a una red de VPC desde los siguientes servicios:

Regiones compatibles

Puedes crear un conector de acceso a VPC sin servidores en las siguientes regiones:

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2
  • us-west3
  • us-west4

Protocolos de red compatibles

En la siguiente tabla, se describen los protocolos compatibles con cada configuración de salida de conector de acceso a VPC sin servidores. Consulta la página Establece la configuración de red para obtener más información sobre la configuración de salida disponible.

Protocolo Enrutar solo las solicitudes a las IP privadas mediante el conector de VPC Enrutar todo el tráfico mediante el conector de VPC
TCP
UDP
ICMP Solo compatible con direcciones IP externas

Funciones de IAM seleccionadas

En la siguiente tabla, se describen las funciones de la administración de identidades y accesos (IAM) asociadas con el Acceso a VPC sin servidores. Consulta Funciones de Acceso a VPC sin servidores en la documentación de IAM para obtener una lista de permisos asociados con cada función.

Función Descripción
Administrador de Acceso a VPC sin servidores
roles/vpcaccess.admin
Acceso completo a todos los recursos de Acceso a VPC sin servidores
Usuario de Acceso a VPC sin servidores
roles/vpcaccess.user
Usuario de conectores de Acceso a VPC sin servidores
Visualizador de Acceso a VPC sin servidores
roles/vpcaccess.viewer
Visualizador de todos los recursos de Acceso a VPC sin servidores

Cuenta de servicio

Para realizar operaciones en el proyecto de Cloud, el servicio de Acceso a VPC sin servidores usa la cuenta de servicio del agente de servicio de Acceso a VPC sin servidores. La dirección de correo electrónico de esta cuenta de servicio tiene el siguiente formato:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

De forma predeterminada, esta cuenta de servicio tiene la función de agente de servicio de Acceso a VPC sin servidores (roles/vpcaccess.serviceAgent). Las operaciones del Acceso a VPC sin servidores pueden fallar si cambias los permisos de esta cuenta.

Registros de auditoría

Consulta Información de registro de auditoría de Acceso a VPC sin servidores.

Precios

Para obtener los precios de Acceso a VPC sin servidores, consulta Acceso a VPC sin servidores en la página de precios de VPC.

Soluciona problemas

Si la creación de un conector produce un error, sigue estos pasos y vuelve a crear el conector:

  • Especifica un rango de IP internas de RFC 1918 que no se superponga con ninguna reserva de dirección IP existente en la red de VPC.
  • Otorga al proyecto permiso para usar las imágenes de VM de Compute Engine del proyecto con el ID serverless-vpc-access-images. Consulta Configura restricciones de acceso a imágenes para obtener información sobre cómo actualizar las políticas de la organización según corresponda.
  • Establece la política de la organización constraints/compute.vmCanIpForward para permitir que las VM habiliten el reenvío de IP.

Si especificaste un conector para un servicio sin servidores, pero aún no puedes acceder a los recursos de la red de VPC, haz lo siguiente:

  • Asegúrate de que no haya ninguna regla de firewall en la red de VPC con una prioridad inferior a 1,000 que rechace la entrada desde el rango de IP o las etiquetas de red del conector.