Configura el acceso privado a los servicios

El acceso privado a los servicios es una conexión privada entre tu red de VPC y una red de Google o 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 tu red de VPC y, luego, crear una conexión privada con 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 que tengan la función de administrador de red de Compute (roles/compute.networkAdmin) 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.

Asigna rangos de direcciones IP

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 varios factores, por ejemplo:

  • La cantidad de servicios y regiones que usas.
  • Los requisitos para los servicios que usas.
    • El tamaño mínimo del rango de direcciones IP para los servicios.
    • Si el proveedor de servicios requiere rangos de IP independientes para cada instancia del servicio que creas o si puede usar el mismo rango de IP para varias instancias del servicio.

Si no tienes un bloque /16 contiguo, puedes comenzar con una asignación más pequeña y agregar nuevas si necesitas más direcciones IP más adelante.

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. El servicio borra la subred solo cuando borras 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.
  • Si agregas un rango asignado adicional a una conexión privada, se expande el rango de direcciones IP disponibles para el productor de servicios cuando crea recursos de servicio nuevos para cualquier servicio que proporcione. No puedes reservar un rango asignado específico dentro de una conexión privada para que lo use un servicio en particular.
  • 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.

Crea una asignación de IP

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

Console

  1. Ve a la página 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"

Borra un rango de direcciones IP asignado

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

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 un solo productor de servicios ofrece varios servicios y deseas controlar qué rangos asignados se usan para diferentes recursos de servicios, puedes usar varias redes de VPC, cada una con sus propias conexiones privadas. Esta configuración te permite seleccionar una red en particular cuando creas un recurso de servicio administrado nuevo a fin de garantizar que se usen los rangos asignados asociados para el recurso nuevo.

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

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

    • 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 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, puedes agregar un rango asignado si estás a punto de agotar el existente.

No puedes quitar rangos de IP asignados mediante Google Cloud Console. Si deseas quitar un rango asignado, usa las instrucciones de gcloud para modificar la conexión. Cuando quitas un rango de una conexión privada, se aplica lo siguiente:

  • El rango asignado ya no está asociado a la conexión privada, pero no se borra.

  • Los recursos existentes del productor del servicio pueden seguir usando el rango que se quitó.

  • El acceso a servicios privados no usará los rangos que se quitaron para asignar subredes nuevas.

Console

  1. Ve a la página 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.
  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 \
    [--force]

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

  • RESERVED_RANGE_NAME es una lista de uno o más nombres de rangos asignados para asignarlos a la conexión privada.

    RESERVED_RANGE_NAME reemplaza la lista anterior de rangos asignados. Si omites un rango que estaba asociado con esta conexión privada, el rango se quitará de la conexión. Debes usar la opción --force para quitar un rango.

  • VPC_NETWORK es el nombre de tu red de VPC.

  • PROJECT_ID es el nombre del ID del proyecto de la red.

Borra una conexión privada

Antes de borrar una conexión privada, debes borrar todas las instancias de servicio a las que accedes a través de la conexión. Por ejemplo, si deseas borrar una conexión privada que se usa para acceder a Cloud SQL, primero debes borrar las instancias de Cloud SQL que usan esa conexión. Después de borrar las instancias de servicio, se borran los recursos del productor de servicios, pero esta eliminación puede no ocurrir de inmediato. Algunos productores de servicios retrasan la eliminación hasta que haya pasado un período de espera. No puedes borrar la conexión privada durante el período de espera. Debes esperar hasta que se hayan borrado los recursos del productor de servicios para poder borrar la conexión.

Por ejemplo, si borras una instancia de Cloud SQL, recibirás una respuesta exitosa, pero el servicio esperará cuatro días antes de borrar los recursos del productor de servicios. El período de espera significa que, si cambias de opinión sobre la eliminación del servicio, puedes solicitar restablecer los recursos. Si intentas borrar la conexión durante el período de espera, la eliminación fallará con un mensaje que indica que el productor de servicios aún usa los recursos.

Console

  1. Ve a la página 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 services vpc-peerings delete \
        --service=servicenetworking.googleapis.com \
        --network=VPC_NETWORK \
        --project=PROJECT_ID

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

  • VPC_NETWORK es el nombre de la red de VPC.

  • PROJECT_ID es el ID del proyecto.

Comparte zonas DNS privadas con los productores de servicios

Las zonas privadas de Cloud DNS son privadas para tu red de VPC. Si quieres permitir que una red del productor de servicios resuelva nombres de tu zona privada, puedes configurar el intercambio de tráfico de DNS entre las dos redes.

Cuando configuras el intercambio de tráfico de DNS, proporcionas una red de VPC y un sufijo DNS. Si el productor de servicios necesita resolver una dirección con ese sufijo DNS, deberá reenviar esas búsquedas a la red de VPC.

Estos servicios compatibles admiten el intercambio de tráfico de DNS, excepto Cloud SQL.

Si deseas habilitar el intercambio de tráfico de DNS, debes habilitar la API de Cloud DNS en tu proyecto.

DNS de intercambio de tráfico con un productor de servicios

gcloud

Configura el intercambio de tráfico de DNS entre tu red de VPC y la red del proveedor de servicios.

gcloud services peered-dns-domains create PEERING_NAME \
    --network=VPC_NETWORK \
    --dns-suffix=DNS_SUFFIX

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

  • PEERING_NAME es un nombre para esta configuración de intercambio de tráfico de DNS.

  • VPC_NETWORK es el nombre de tu red de VPC que está conectada al productor de servicios mediante el acceso privado a servicios.

  • DNS_SUFFIX es el sufijo de DNS que quieres intercambiar con el productor de servicios. Debes proporcionar un nombre de dominio DNS completo, incluido el punto. Por ejemplo, example.com. es un sufijo de DNS válido.

Enumera las configuraciones de intercambio de tráfico de DNS

gcloud

Enumera los dominios DNS con intercambio de tráfico en una red de VPC.

gcloud services peered-dns-domains list \
    --network=VPC_NETWORK

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

  • VPC_NETWORK es el nombre de tu red de VPC.

Borra una configuración de intercambio de tráfico de DNS

gcloud

Borra un dominio de DNS con intercambio de tráfico.

gcloud services peered-dns-domains delete PEERING_NAME \
    --network=VPC_NETWORK

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

  • PEERING_NAME es el nombre de la configuración del intercambio de tráfico de DNS.

  • VPC_NETWORK es el nombre de la red de VPC.

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

Cómo ver qué servicio usa un rango de direcciones IP en particular:

  1. Genera una lista de 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. Genera una lista con 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

Para una conexión privada determinada, si agotas el espacio de direcciones IP asignadas, Google Cloud mostrará este error: Failed to create subnetwork. Couldn't find free blocks in allocated IP ranges..

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. Genera una lista de 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 rango borrado. 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 existente.

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.