Configura el acceso privado a los servicios

El acceso privado a servicios es una conexión privada entre tu red de VPC y una red de Google o de terceros. Las entidades que ofrecen servicios, como Google o terceros, también se conocen como productores de servicios. La conexión privada permite que las instancias de VM en la red de VPC y los servicios a los que accedes se comuniquen de forma exclusiva mediante direcciones IP internas. Las instancias de VM no necesitan acceso a Internet o direcciones IP externas para alcanzar los servicios que están disponibles a través del acceso privado a los servicios.

Para obtener más información sobre el acceso privado a los servicios y otras opciones de acceso privado, consulta Opciones de acceso privado a los servicios.

En un nivel alto, para usar el acceso privado a los servicios, debes asignar un rango de direcciones IP (bloque CIDR) en la red de VPC y, luego, crear una conexión privada a un productor de servicios.

Antes de comenzar

Para establecer una conexión privada, completa los siguientes requisitos previos:

  • Verifica que el servicio que usas admita el acceso privado a los servicios.
  • Debes tener una red de VPC existente que usarás para conectarte a la red del productor de servicios. Las instancias de VM deben usar esta red de VPC para conectarse a los servicios mediante una conexión privada.
  • Activa la API de Herramientas de redes de servicios en el proyecto. La API es necesaria para crear una conexión privada.
  • Crea un proyecto de Cloud o elige uno existente. Para obtener información sobre cómo crear un proyecto de Cloud, consulta Crea y administra proyectos.
  • Instala el SDK de Cloud si deseas ejecutar los ejemplos de la línea de comandos de gcloud de esta guía.

Permisos

Los propietarios del proyecto y los miembros de IAM con la función de Administrador de red pueden crear rangos de direcciones IP asignados y administrar conexiones privadas.

Para obtener más información sobre las funciones, consulta la documentación de funciones de IAM de VPC.

Situación de VPC compartida

Si usas una VPC compartida, crea el rango de IP asignado y la conexión privada en el proyecto host. Por lo general, un administrador de red en el proyecto host debe realizar estas tareas. Después de configurar el proyecto host, las instancias de VM en proyectos de servicio pueden usar la conexión privada.

Cuotas y límites

Debido a que una conexión privada se implementa como una conexión de intercambio de tráfico de VPC, los mismos límites y cuotas que se aplican al intercambio de tráfico entre redes de VPC también se aplican al acceso privado a los servicios.

Crea rangos de direcciones IP asignados

Antes de crear una conexión privada, debes asignar un rango de direcciones IP para que la red de VPC del productor de servicios lo use. Esto garantiza que no haya una colisión de direcciones IP entre tu red de VPC y la red del productor de servicios. Crea un rango asignado para cada productor de servicios.

Cuando asignas un rango en tu red de VPC, ese rango no es apto para subredes (rangos principales y secundarios) ni los destinos de las rutas estáticas personalizadas.

Tamaño del rango de direcciones IP

Rangos de acceso privado a los servicios (haz clic para ampliar)

Cuando un productor de servicios crea una subred en su lado de la conexión, se selecciona un rango abierto de la asignación para el rango de direcciones IP de la subred.

Cada productor de servicios requiere un tamaño mínimo de rango de direcciones IP. Para Google, el tamaño mínimo es un bloque único de /24 (256 direcciones), pero el tamaño recomendado es un bloque de /16 (65,536 direcciones). El tamaño que elijas depende de factores como la cantidad de servicios y regiones que usas. Puedes usar un solo servicio en varias regiones para situaciones redundantes o a fin de reducir la latencia.

Por ejemplo, si usas dos servicios en tres regiones diferentes, el productor de servicios debe crear 6 subredes, cada una con un bloque de /24. Si planeas usar servicios o regiones adicionales, puedes agotar con rapidez una asignación de /20. Si no tienes un bloque de /16 contiguo, puedes comenzar con una asignación más pequeña y agregar nuevas si luego necesitas más direcciones IP.

Acerca de la subred del productor de servicios

Cuando estableces una conexión privada y creas un recurso con una dirección IP privada, el servicio crea una subred para aprovisionar el recurso. El servicio selecciona un rango de direcciones IP disponibles del rango asignado. No puedes seleccionar o modificar el rango de direcciones IP de la subred del productor de servicios. Incluso si borras la conexión privada o el rango de direcciones IP asignado, la subred se mantendrá hasta que borres todos los recursos en ella.

A medida que aprovisionas recursos adicionales, el servicio los aprovisiona en subredes regionales existentes que creaste antes. Si una subred está llena, el servicio crea una nueva en esa región.

Consideraciones

Antes de asignar un rango de direcciones IP, considera las siguientes restricciones:

  • Selecciona un rango que no se superponga con rangos asignados existentes, subredes o rutas estáticas personalizadas. No se pueden superponer dos rangos.
  • Si usas una red de VPC de modo automático, no puedes crear un rango asignado que coincida o se superponga con 10.128.0.0/9. Este rango es para subredes creadas de forma automática.
  • Selecciona un bloque CIDR que sea lo suficientemente grande para satisfacer tus necesidades actuales y futuras. Si luego descubres que el rango no tiene el tamaño suficiente, expándelo de ser posible. Aunque puedes establecer varias asignaciones en un solo productor de servicios, Google aplica una cuota a la cantidad de rangos de direcciones IP que puedes asignar, pero no al tamaño (máscara de red) de cada rango.
  • No vuelvas a usar el mismo rango asignado para varios productores de servicios. Aunque es posible, hacerlo puede superponer las direcciones IP. Cada productor de servicios puede visualizar solo su red y no puede saber qué direcciones IP usan otros productores de servicios.
  • Solo puedes asignar un bloque CIDR a un rango asignado cuando creas la asignación. Si necesitas expandir el rango de direcciones IP, no puedes agregar más bloques a una asignación. En cambio, puedes crear otra asignación o volver a crear la existente mediante el uso de un bloque más grande que abarque los rangos nuevos y existentes.
  • Si tú mismo creas la asignación en lugar de que lo haga Google (como a través de Cloud SQL), puedes usar la misma convención de nombres a fin de indicar a otros usuarios o servicios de Google que ya existe una asignación para Google. Cuando un servicio de Google asigna un rango en tu nombre, el servicio usa el siguiente formato para otorgarle un nombre a la asignación: google-managed-services-[your network name]. Si esta asignación existe, los servicios de Google usan la existente en lugar de crear otra.

Procedimiento

En los pasos siguientes, se describe cómo crear un rango de direcciones IP asignado.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que se conectará a un productor de servicios.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Rangos de IP asignados para servicios.
  5. Haz clic en Rango de IP asignado.
  6. Ingresa un Nombre y una Descripción para el rango asignado.
  7. Especifica un Rango de IP para la asignación:

    • Para especificar un rango de direcciones IP, selecciona Personalizado y luego ingresa un bloque CIDR, como 192.168.0.0/16.
    • Para especificar la longitud de un prefijo y permitir que Google seleccione un rango disponible, selecciona Automático y luego ingresa la longitud de un prefijo, como 16.
  8. Haz clic en Asignar para crear un rango asignado.

gcloud

Crea un rango asignado en tu red de VPC.

  • Para especificar un rango de dirección y una longitud de prefijo (máscara de subred), usa las marcas addresses y prefix-length. Por ejemplo, a fin de asignar el bloque CIDR 192.168.0.0/16, especifica 192.168.0.0 para la dirección y 16 como la longitud de prefijo.

    gcloud compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    
  • Para especificar solo una longitud de prefijo (máscara de subred), usa la marca prefix-length. Cuando omites el rango de direcciones, Google Cloud selecciona de forma automática un rango de direcciones sin usar en tu red de VPC. En el siguiente ejemplo, se selecciona un rango de direcciones IP sin usar con una longitud de prefijo de 16 bits.

    gcloud compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    

Reemplaza los siguientes marcadores de posición por valores relevantes:

  • [RESERVED_RANGE_NAME] es un nombre para el rango asignado, como my-allocated-range.
  • [DESCRIPTION] una descripción para el rango, como allocated for my-service.
  • [VPC_NETWORK] es el nombre de la red de VPC, como my-vpc-network.

En el siguiente ejemplo, se crea una conexión privada a Google para que las instancias de VM en la red de VPC my-network puedan usar el acceso privado a los servicios a fin de llegar a los servicios de Google que la admiten.

gcloud compute addresses create google-managed-services-my-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=my-network \
    --project=my-project

Enumera rangos de direcciones IP asignados

Puedes hacer una lista de los rangos con la marca --filter a fin de ver los que puedes usar para el acceso privado a los servicios. Filtra los rangos con el propósito VPC_PEERING, como se muestra en el siguiente ejemplo:

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

Crea una conexión privada

Después de crear un rango asignado, puedes crear una conexión privada a un productor de servicios. La conexión privada establece una conexión de intercambio de tráfico de red de VPC entre tu red de VPC y la red del productor de servicios.

Las conexiones privadas constituyen una relación uno a uno entre tu red de VPC y el productor de servicios. Si un solo productor de servicios ofrece varios servicios, solo necesitas una conexión privada para todos los servicios del productor.

Si te conectas a varios productores de servicios, usa una asignación única para cada uno de ellos. Esta práctica te ayuda a administrar la configuración de la red, como las rutas y las reglas de firewall, para cada productor de servicios.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que se conectará a un productor de servicios.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los servicios.
  5. Haz clic en Crear una conexión para crear una conexión privada entre tu red y un productor de servicios.
  6. Para la Asignación designada, selecciona uno o más rangos asignados existentes que no estén siendo usados por otros productores de servicios.
  7. Haz clic en Conectar para crear la conexión.

gcloud

  1. Crea una conexión privada.

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=[RESERVED_RANGE_NAME] \
        --network=[VPC_NETWORK] \
        --project=[PROJECT_ID]
    
    • [RESERVED_RANGE_NAME] es el nombre de uno o más rangos asignados.
    • [VPC_NETWORK] es el nombre de tu red de VPC.
    • [PROJECT_ID] es el ID del proyecto que contiene tu red de VPC.

    El comando inicia una operación de larga duración y, luego, muestra un nombre de operación.

  2. Verifica si la operación se realizó correctamente.

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    Reemplaza [OPERATION_NAME] por el nombre de la operación que se mostró en el paso anterior.

Puedes especificar más de un rango asignado cuando creas una conexión privada. Por ejemplo, si se agotó un rango, puedes asignar rangos adicionales. El servicio usará direcciones IP de todos los rangos proporcionados en el orden que especificaste.

Enumera las conexiones privadas

Después de crear una conexión privada, puedes colocarla en una lista para verificar que existe. La lista también muestra los rangos asignados asociados a cada conexión. Por ejemplo, si no recuerdas qué rango asignado designaste a una conexión, consulta la lista para saberlo.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que contiene las conexiones.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los servicios para ver todas las conexiones privadas de la red.

gcloud

Enumera las conexiones privadas de la red de VPC.

gcloud services vpc-peerings list \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

Reemplaza [VPC_NETWORK] y [PROJECT_ID] por el nombre de tu red de VPC y el ID del proyecto.

Modifica una conexión privada

En el caso de las conexiones privadas existentes, puedes agregar o quitar rangos de direcciones IP asignados sin interrumpir el tráfico. Por ejemplo, a medida que escalas, puede agregar un rango asignado si estás a punto de agotar el existente.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que contiene las conexiones.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Conexiones privadas a los servicios para ver todas las conexiones privadas de la red.
  5. Haz clic en el nombre de una conexión de la lista.
  6. En el menú desplegable Asignación designada, selecciona los rangos que deseas asignar. No puedes quitar rangos con Google Cloud Console. Si deseas quitar rangos, consulta las instrucciones de gcloud.
  7. Haz clic en Aceptar.

gcloud

Agrega o quita rangos de direcciones IP asignados en una conexión privada existente.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=[RESERVED_RANGE_NAME] \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

Reemplaza [RESERVED_RANGE_NAME] por el nombre de uno o más rangos asignados para asignarlos a la conexión privada. Reemplaza [VPC_NETWORK] y [PROJECT_ID] por el nombre de tu red de VPC y el ID del proyecto de la red. La lista que especificas es el conjunto de rangos nuevo. Los intervalos que no se incluyeron se borran, si es que había alguno.

Borra una conexión privada

Para borrar una conexión privada, debes borrar la conexión de intercambio de tráfico de VPC correspondiente. La red de VPC está desconectada de la red de VPC del productor de servicios, y los recursos existentes en ambas redes se mantienen, pero pierden acceso privado a los servicios. Puedes volver a establecer la conectividad si creas una conexión privada con una lista vacía para los rangos de IP. Esto restablecerá los rangos de IP que se asignaron antes. Si deseas cambiar los rangos de direcciones, debes actualizar la conexión de intercambio de tráfico y establecer el campo “force” en “true”.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que contiene las conexiones que quieres borrar.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Conexión privada a servicios.
  5. Selecciona la conexión privada que quieres borrar.
  6. Haz clic en Borrar para eliminarla.
  7. Vuelve a hacer clic en Borrar para confirmar la eliminación.

gcloud

Borra la conexión de intercambio de tráfico de la red de VPC de la conexión privada.

gcloud compute networks peerings delete [CONNECTION_NAME] \
    --network [VPC_NETWORK]

Reemplaza [CONNECTION_NAME] y [VPC_NETWORK] por el nombre de tu conexión privada y la red de VPC.

Borra una asignación

Antes de borrar un rango de direcciones IP asignado, verifica que no lo use ninguna conexión privada. Puedes borrar o modificar una conexión privada existente para desvincular el rango asignado. Si no lo haces, las conexiones existentes permanecen activas, pero no hay nada que impida que la VPC use direcciones IP que se superpongan con la red del productor de servicios. Además, el servicio no puede crear subredes nuevas porque no hay un rango de direcciones IP asignado desde el cual pueda seleccionar.

Console

  1. Ve a la página de redes de VPC en Google Cloud Console.
    Ir a la página de redes de VPC
  2. Selecciona la red de VPC que contiene las asignaciones que quieres borrar.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. En la pestaña Conexión privada a servicios, selecciona la pestaña Rangos de IP asignados para servicios.
  5. Selecciona la asignación para borrar.
  6. Haz clic en Liberar para mostrar el rango de direcciones IP asignado al conjunto de direcciones IP internas disponibles de la red.

    Si el rango de direcciones IP sigue asignado a una conexión existente, debes ingresar una confirmación adicional antes de poder liberar la asignación.

  7. Vuelve a hacer clic en Liberar para confirmar la eliminación.

gcloud

Borra la asignación especificando el nombre de tu asignación.

gcloud compute addresses delete [NAME] \
    --global

Solución de problemas

¿Qué cantidad de mi asignación se utiliza?

Cuando creas una conexión privada con un productor de servicios, le asignas un rango de direcciones IP para que use. Si usas servicios múltiples de un productor de servicios, cada uno reservará un fragmento de direcciones IP de ese rango asignado. Puedes revisar qué direcciones IP usan los servicios para que, por ejemplo, puedas ver qué servicios usan grandes bloques de direcciones IP y evitar su agotamiento.

Para ver qué servicio usa un rango de direcciones IP en particular, sigue estos pasos:

  1. Enumera tus conexiones privadas.
  2. Busca el nombre de la conexión de intercambio de tráfico que te conecta al productor de servicios relevante.
  3. Enumera las rutas para tu red de VPC.
  4. Encuentra las rutas con un salto siguiente que coinciden con el nombre de la conexión de intercambio de tráfico. El rango de destino de las rutas indica las direcciones IP que usa cada servicio.

Agotamiento del rango de direcciones IP

En una conexión privada determinada, si agotas el espacio de direcciones IP asignado, puedes expandir la asignación existente o agregar otras nuevas. La asignación expandida debe ser un rango de direcciones IP contiguo que incluya el rango existente. Se recomienda expandir una asignación porque no existe un límite en el tamaño de una asignación, aunque existe un límite en la cantidad de asignaciones que puedes crear.

Para expandir una asignación existente, sigue estos pasos:

  1. Enumera las conexiones privadas y registra el nombre del rango asignado que necesitas expandir.
  2. Borra el rango asignado existente.
  3. Crea un rango asignado nuevo con el mismo nombre que el del rango que se borró. Especifica un rango de direcciones IP que incluya el rango de direcciones IP que se borró. De esa manera, los recursos de intercambio de tráfico existentes que usan el rango asignado anterior pueden seguir usando las mismas direcciones IP sin entrar en conflicto con los recursos de la red de VPC. Por ejemplo, si el rango asignado con anterioridad era 192.168.0.0/20, crea un rango asignado nuevo como 192.168.0.0/16.

Para agregar rangos asignados a una conexión privada existente, sigue estos pasos:

  1. Crea un rango asignado nuevo. Este rango no tiene que ser contiguo a los rangos asignados existentes.
  2. Agrega el rango asignado a la conexión privada saliente.

Los hosts locales no pueden comunicarse con la red del productor de servicios

Es posible que la red del productor de servicios no tenga las rutas correctas para dirigir el tráfico a tu red local. De forma predeterminada, la red del productor de servicios solo aprende las rutas de la subred desde tu red de VPC. Por lo tanto, el productor de servicios descarta cualquier solicitud que no sea de un rango de IP de subred.

En tu red de VPC, actualiza la conexión de intercambio de tráfico para exportar rutas personalizadas a la red del productor de servicios. La exportación de rutas envía todas las rutas estáticas y dinámicas aptas que se encuentran en la red de VPC, como las rutas a tu red local, a la red del productor de servicios. La red del productor de servicios los importa de forma automática y, luego, puede enviar el tráfico a tu red local a través de la red de VPC.

Vuelve a crear una conexión que use diferentes rangos asignados

Cuando borras una conexión privada, la red del productor de servicios se puede conservar. Este comportamiento te permite volver a conectarte a la misma red con los mismos rangos asignados. Sin embargo, si intentas crear una conexión nueva con ese productor de servicios mediante diferentes rangos asignados, Google Cloud muestra un error Cannot modify allocated ranges. Si deseas conectarte al productor de servicios mediante diferentes rangos asignados, usa gcloud y la marca --force para actualizar la conexión.

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=[RESERVED_RANGE_NAME] \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID] \
    --force