Configura una conectividad privada a los servicios y las API de Google

En este documento, se describe cómo configurar la conectividad privada de hosts en una red de VPC o una red local a los servicios y las API de Google que son compatibles con los Controles del servicio de VPC.

Antes de leer este documento, te recomendamos que te familiarices con los conceptos de Acceso privado a Google, las especificaciones y la configuración de red. Consulta ejemplos de diagramas de topología sobre el uso del Acceso privado a Google con los Controles del servicio de VPC.

Antes de comenzar

  • Habilita las API a las que deseas acceder a través de la página de API y servicios en la consola de Google Cloud.
  • Asegúrate de tener la función necesaria para crear o actualizar las subredes. Los propietarios del proyecto, los editores y las principales de IAM con la función de administrador de red pueden crear o actualizar las subredes y asignar direcciones IP. Para obtener más información sobre las funciones, consulta la documentación sobre las funciones de IAM.
  • Verifica que una red de VPC esté configurada para el Acceso privado a Google y el Acceso privado a Google para los hosts locales. Se admiten las redes de VPC en modo automático y personalizado. No se admiten las redes heredadas.
  • Asegúrate de que las instancias de VM en una red de VPC tengan una dirección IP privada (sin dirección IP pública) y que estén en una subred que tenga habilitado el Acceso privado a Google.
  • Para los hosts locales, asegúrate de tener un túnel de Cloud VPN existente o una conexión de Cloud Interconnect a la red de VPC. Para admitir hosts locales que tengan direcciones IPv6, consulta Compatibilidad con IPv6.

Descripción general del procedimiento

Para configurar la conectividad privada, completa las siguientes tareas:

  • Configura las rutas para los rangos de direcciones IP de restricted.googleapis.com. Para obtener más información, consulta Configura las rutas.
  • Configura las reglas de firewall para permitir que el tráfico adecuado llegue a los rangos de direcciones IP de restricted.googleapis.com. Para obtener más información, consulta Configura reglas de firewall.
  • Configura un DNS para que el tráfico hacia las APIs de Google se resuelva en los rangos de direcciones IP de restricted.googleapis.com. Para obtener más información, consulta Configura un DNS.

Compatibilidad con IPv6 para restricted.googleapis.com

Puedes acceder a las APIs de Google mediante el rango de direcciones IPv6 del dominio restricted.googleapis.com: 2600:2d00:0002:1000::/64.

Considera configurar las direcciones IPv6 si deseas usar el dominio restricted.googleapis.com y tienes clientes que usan direcciones IPv6. Los clientes IPv6 que también tienen direcciones IPv4 configuradas pueden acceder a los servicios y las APIs de Google mediante las direcciones IPv4. No todos los servicios aceptan tráfico de clientes IPv6.

Para permitir que los clientes IPv6 de tu entorno local accedan a las APIs de Google mediante restricted.googleapis.com, debes configurar la conexión a la red de VPC para que sea compatible con IPv6. Si deseas obtener más información, consulta las siguientes páginas:

Los clientes locales pueden enviar solicitudes desde cualquier dirección IPv6 GUA o ULA, excepto el rango ULA fda3:e722:ac3:cc00::/64, que está reservado para uso interno.

Para obtener más información sobre el VIP de restricted.googleapis.com, consulta Configura el acceso privado a Google.

Conectividad directa a las APIs y los servicios

Algunos servicios y APIs de Google ofrecen conectividad directa desde instancias de máquina virtual (VM) de Compute Engine, sin pasar por Google Front End (GFE). Para permitir este tráfico, debes asegurarte de que tus rutas y reglas de firewall permitan que el tráfico de salida llegue a 34.126.0.0/18 y 2001:4860:8040::/42. No es necesario crear registros DNS para estas direcciones. Varios servicios de Google Cloud admiten conectividad directa para proporcionar un rendimiento mejorado de las APIs de gRPC de Google. Para habilitar este rendimiento mejorado, debes proporcionar acceso a los rangos de direcciones IP especificados.

La conectividad directa solo se admite desde los recursos de Google Cloud. No puedes usar la conectividad directa desde hosts locales.

Los servicios que ofrecen conectividad directa admiten los Controles del servicio de VPC.

Configura rutas a restricted.googleapis.com

Aunque los Controles del servicio de VPC se aplican a los servicios compatibles y configurados, sin importar el dominio que uses, restricted.googleapis.com ofrece una mitigación adicional de riesgos para el robo de datos. restricted.googleapis.com rechaza el acceso a los servicios y a las API de Google que no son compatibles con los Controles del servicio de VPC.

En el Acceso privado a Google y el Acceso privado a Google para hosts locales, la red de VPC debe incluir una ruta para los rangos de direcciones IP de restricted.googleapis.com cuyo siguiente salto sea la puerta de enlace de Internet predeterminada. Aunque el salto siguiente es una puerta de enlace de Internet predeterminada, el tráfico que se envía a restricted.googleapis.com permanece dentro de la red de Google.

Si tu red de VPC no tiene una ruta predeterminada cuyo siguiente salto sea la puerta de enlace de Internet predeterminada, puedes crear una ruta estática personalizada cuyo destino sea el rango de direcciones IP restricted.googleapis.com y cuyo siguiente salto sea la puerta de enlace de Internet predeterminada. Para evitar el acceso a Internet, debes quitar otras rutas cuyo siguiente salto sea la puerta de enlace de Internet predeterminada.

Para obtener más información sobre cómo trabajar con rutas de VPC, consulta Usa rutas en la documentación de VPC.

Configura rutas estáticas personalizadas en una red de VPC

Agrega rutas estáticas personalizadas para habilitar el acceso a los servicios administrados por Google que admiten los Controles del servicio de VPC.

gcloud compute routes create ROUTE_NAME \
  --network=NETWORK_NAME \
  --destination-range=DESTINATION_RANGE \
  --next-hop-gateway=default-internet-gateway

Reemplaza lo siguiente:

  • ROUTE_NAME: Un nombre para la ruta personalizada
  • NETWORK_NAME es el nombre de tu red de VPC.
  • DESTINATION_RANGE: Es el rango de destino de la ruta.
    • Para enrutar el tráfico al VIP restricted.googleapis.com, usa los siguientes rangos:
      • Para el tráfico IPv4: 199.36.153.4/30
      • Para el tráfico IPv6: 2600:2d00:0002:1000::/64
    • Para enrutar el tráfico a las APIs que permiten la conectividad directa, usa los siguientes rangos:
      • Para el tráfico IPv4: 34.126.0.0/18
      • Para el tráfico IPv6: 2001:4860:8040::/42

Anuncia la ruta restringida a los hosts en una red local

Si usas el Acceso privado a Google para hosts locales, configura las rutas a fin de que el tráfico de la API de Google se reenvíe a través de Cloud VPN o de la conexión de Cloud Interconnect. Para anunciar los rangos de direcciones VIP restringidas en tu red local, usa el modo de anuncio personalizado de Cloud Router. Solo los hosts locales que pueden acceder a tu red de VPC a través de direcciones IP privadas pueden acceder a los rangos de direcciones VIP restringidos.

Puedes agregar esta ruta anunciada personalizada a un Cloud Router (para todas las sesiones de BGP en el router) o una sesión de BGP específica (para un solo túnel de Cloud VPN o un adjunto de VLAN).

Las rutas IPv6 solo se anuncian en las sesiones de BGP en las que IPv6 está habilitado.

Para crear una ruta anunciada personalizada del rango restringido para todas las sesiones de BGP en un Cloud Router existente, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Cloud Routers.

    Ir a Cloud Routers

  2. Selecciona el Cloud Router que quieres actualizar.

  3. En la página de detalles de Cloud Router, haz clic en Editar.

  4. Expande la sección Rutas anunciadas.

  5. En Rutas, selecciona Crear rutas personalizadas.

  6. A fin de seguir anunciando las subredes disponibles para Cloud Router, selecciona Anunciar todas las subredes visibles para Cloud Router. Habilitar esta opción imita el comportamiento predeterminado de Cloud Router.

  7. Para agregar una ruta anunciada, selecciona Agregar ruta personalizada .

  8. Configura el anuncio de ruta.

    • Fuente: Selecciona Rango de IP personalizado.
    • Rango de direcciones IP:
      • Para la conectividad IPv4: 199.36.153.4/30
      • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Descripción: Agrega una descripción de Restricted Google APIs IPs.
  9. Después de agregar rutas, selecciona Guardar.

gcloud

Ejecuta el comando update y usa las marcas --set-advertisement-ranges o --add-advertisement-ranges para especificar los rangos de IP personalizados:

  • Para establecer rangos de IP personalizados, usa la marca --set-advertisement-ranges. Se reemplazarán todas las rutas anunciadas personalizadas existentes. En el siguiente ejemplo, se actualiza el Cloud Router my-router para anunciar todas las subredes y los rangos de direcciones IP restricted.googleapis.com.

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Reemplaza RANGES por los rangos que deseas usar:

    • Para la conectividad IPv4: 199.36.153.4/30
    • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Para la conectividad IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Para agregar rangos de IP personalizados a un anuncio existente, usa la marca --add-advertisement-ranges. Ten en cuenta que esta marca requiere que el modo del anuncio del Cloud Router ya esté configurado en custom. En el siguiente ejemplo, se agregan los rangos de direcciones IP restricted.googleapis.com a los anuncios de Cloud Router:

    gcloud compute routers update my-router \
        --add-advertisement-ranges RANGES
    

    Reemplaza RANGES por los rangos que deseas usar:

    • Para la conectividad IPv4: 199.36.153.4/30
    • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Para la conectividad IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

Para crear una ruta anunciada personalizada del rango restringido en una sesión de BGP específica de un Cloud Router existente, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Cloud Routers.

    Ir a Cloud Routers

  2. Selecciona el Cloud Router que contiene la sesión de BGP que quieres actualizar.

  3. En la página de detalles de Cloud Router, selecciona la sesión de BGP que quieres actualizar.

  4. En la página de detalles de la sesión de BGP, selecciona Editar.

  5. En Rutas, selecciona Crear rutas personalizadas.

  6. Selecciona Anunciar todas las subredes visibles para Cloud Router. Esto hará que continúe el anuncio de las subredes disponibles en el Cloud Router. Habilitar esta opción imita el comportamiento predeterminado de Cloud Router.

  7. Selecciona Agregar ruta personalizada para agregar una ruta anunciada.

  8. Configura el anuncio de ruta.

    • Fuente: Selecciona Rango de IP personalizado para especificar un rango de IP personalizado.
    • Rango de direcciones IP:
      • Para la conectividad IPv4: 199.36.153.4/30
      • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Descripción: Agrega una descripción de Restricted Google APIs IPs.
  9. Cuando termines de agregar las rutas, selecciona Guardar.

gcloud

Ejecuta el comando update-bgp-peer mediante las marcas --set-advertisement-ranges o --add-advertisement-ranges para especificar los rangos de IP personalizados.

  • Para establecer rangos de IP personalizados, usa la marca --set-advertisement-ranges. Se reemplazarán todas las rutas anunciadas personalizadas existentes.

    Si agregas rangos personalizados IPv6, y si el tráfico IPv6 está inhabilitado para la sesión de BGP, puedes habilitarlo con la marca --enable-ipv6.

    En el siguiente ejemplo, se actualiza la sesión de BGP my-bgp-session en el Cloud Router my-router para anunciar todas las subredes y el rango de IP personalizado:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges RANGES
    

    Reemplaza RANGES por los rangos que deseas usar:

    • Para la conectividad IPv4: 199.36.153.4/30
    • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Para la conectividad IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

  • Para agregar rangos de IP personalizados a los existentes, usa la marca --add-advertisement-ranges. Ten en cuenta que esta marca requiere que el modo del anuncio del Cloud Router ya esté configurado en custom.

    Si agregas rangos personalizados IPv6, y si el tráfico IPv6 está inhabilitado para la sesión de BGP, puedes habilitarlo con la marca --enable-ipv6.

    En el siguiente ejemplo, se agregan los rangos de direcciones VIP restringidos a los anuncios de Cloud Router:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges RANGES
    

    Reemplaza RANGES por los rangos que deseas usar:

    • Para la conectividad IPv4: 199.36.153.4/30
    • Para la conectividad IPv6: 2600:2d00:0002:1000::/64
    • Para la conectividad IPv4 e IPv6: 199.36.153.4/30,2600:2d00:0002:1000::/64

    Para obtener más información sobre el modo de anuncio personalizado, consulta Rutas anunciadas personalizadas.

Configura reglas de firewall

En el Acceso privado a Google, las instancias de VM usan direcciones IP internas y no requieren direcciones IP externas para alcanzar los recursos protegidos de la API de Google. Sin embargo, es posible que las instancias de VM tengan direcciones IP externas o que cumplan con los requisitos de acceso a Internet. Además de las rutas personalizadas anunciadas, puedes restringir el tráfico de salida desde las instancias de VM en la red de VPC mediante la creación de reglas de firewall para denegar el tráfico de salida.

De forma predeterminada, la regla de firewall de permiso de salida implícita permite que las instancias de VM envíen tráfico a cualquier destino si hay una ruta aplicable. Primero, puedes crear una regla de denegación de salida para bloquear todo el tráfico saliente. Luego, puedes crear reglas de salida de prioridad más alta que permitan el tráfico a los destinos seleccionados en la red de VPC y a los rangos de direcciones IP restricted.googleapis.com. Todas las comunicaciones a restricted.googleapis.com se encuentran en el puerto TCP 443.

Para permitir que el tráfico de Google Cloud llegue a los VIPs de restricted.googleapis.com, agrega reglas de firewall para los siguientes destinos:

  • Para el tráfico IPv4: 199.36.153.4/30
  • Para el tráfico IPv6: 2600:2d00:0002:1000::/64

Para permitir que el tráfico de Google Cloud llegue a las APIs y los servicios que permiten la conectividad directa, agrega reglas de firewall para los siguientes destinos:

  • Para el tráfico IPv4: 34.126.0.0/18
  • Para el tráfico IPv6: 2001:4860:8040::/42

Para obtener más información sobre cómo trabajar con reglas de firewall de VPC, consulta Usa reglas de firewall de VPC en la documentación del firewall de nueva generación de Cloud.

Configura las reglas de firewall locales para permitir que el tráfico de los hosts locales llegue a los rangos de direcciones IP de restricted.googleapis.com.

  • Para el tráfico IPv4: 199.36.153.4/30
  • Para el tráfico IPv6: 2600:2d00:0002:1000::/64

La conectividad directa a los servicios y las APIs de Google no es compatible con las redes locales.

Configura un DNS

Puedes usar zonas privadas administradas para tus redes de VPC. Las zonas de DNS privadas de Cloud DNS te permiten alojar una zona DNS a la que se puede acceder desde redes de VPC autorizadas. Para configurar el reenvío desde ciertos servidores de nombres locales, puedes usar los rangos de direcciones IP de restricted.googleapis.com. Luego, puedes crear una zona privada para googleapis.com con un registro A de DNS que asigne los registros restricted.googleapis.com y CNAME apropiados para cada nombre de *.googleapis.com. Para obtener más información, consulta Administra zonas.

Para el acceso local, puedes configurar una política de reenvío de entrada de Cloud DNS a fin de permitir que los servidores de nombres locales consulten una zona privada administrada de Cloud DNS, o puedes configurar un servidor de nombres local, como uno que use BIND:

Configura DNS con Cloud DNS

Usa Cloud DNS a fin de habilitar la resolución de DNS para instancias de VM en la red de VPC, en hosts en una red local o en ambas opciones. Si usas una VPC compartida, consulta Zonas privadas y VPC compartida en la documentación de Cloud DNS. Además, si usas una VPC compartida, te recomendamos que incluyas el proyecto host de la red de VPC compartida en el mismo perímetro de servicio que los proyectos que se conectan a la red.

Configura Cloud DNS mediante zonas privadas

Puedes usar zonas privadas para configurar Cloud DNS:

  1. Crea una zona privada administrada para tu red de VPC.

    gcloud dns managed-zones create ZONE_NAME \
     --visibility=private \
     --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
     --description=DESCRIPTION \
     --dns-name=googleapis.com

    Reemplaza lo siguiente:

    • ZONE_NAME es un nombre para la zona que estás creando. Por ejemplo, vpc Este nombre se usa en cada uno de los siguientes pasos.
    • PROJECT_ID es el ID del proyecto que contiene tu red de VPC.
    • NETWORK_NAME: El nombre de tu red de VPC
    • DESCRIPTION es una descripción opcional y legible de la zona administrada.
  2. Inicia una transacción.

    gcloud dns record-sets transaction start --zone=ZONE_NAME

    Reemplaza ZONE_NAME por el nombre de la zona que creaste en el primer paso.

  3. Agrega registros DNS.

    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. \
        --zone=ZONE_NAME \
        --ttl=300

    Reemplaza ZONE_NAME por el nombre de la zona que creaste en el primer paso.

    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
        --zone=ZONE_NAME \
        --ttl=300

    Reemplaza ZONE_NAME por el nombre de la zona que creaste en el primer paso.

    Si configuras las direcciones IPv6 para restricted.googleapis.com, también crea el siguiente conjunto de registros:

    gcloud dns record-sets transaction add --name=restricted.googleapis.com. \
        --type=AAAA 2600:2d00:0002:1000:: \
        --zone=ZONE_NAME \
        --ttl=300
  4. Ejecuta la transacción.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME

    Reemplaza ZONE_NAME por el nombre de la zona que creaste en el primer paso.

  5. Opcional. Para permitir que los hosts locales lleguen a la VIP restringida, completa los siguientes pasos:

    1. Crea una política de DNS y habilita el reenvío de DNS entrante a fin de que los servicios de resolución de nombres de la red de VPC estén disponibles de forma externa para los sistemas en redes locales.

      gcloud dns policies create POLICY_NAME \
       --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
       --enable-inbound-forwarding \
       --description=DESCRIPTION

      Reemplaza lo siguiente:

      • POLICY_NAME es un nombre para la política que estás creando. Por ejemplo, apipolicy.
      • PROJECT_ID es el ID del proyecto que contiene tu red de VPC.
      • NETWORK_NAME es el nombre de tu red de VPC.
      • DESCRIPTION es una descripción opcional y legible de la zona administrada.
    2. En la red local, apunta el DNS local hacia la dirección IP de reenvío de Cloud DNS. Para encontrar la dirección IP de reenvío, usa el comando compute addresses list:

      gcloud compute addresses list --filter='name ~ ^dns-forwarding.*' \
       --format='csv[no-heading](address, subnetwork)'

Configura DNS con BIND

Si usas BIND en la resolución de DNS, puedes configurarlo para resolver las solicitudes a la API de Google en las API de Google restringidas. Usa el siguiente ejemplo de configuración de BIND, que usa zonas de política de respuesta (RPZ) para lograr este comportamiento:

  1. Agrega las siguientes líneas a /etc/bind/named.conf:

    include "/etc/bind/named.conf.options";
    include "/etc/bind/named.conf.local";
    
  2. Agrega las siguientes líneas a /etc/bind/named.conf.options:

    options {
      directory "/var/cache/bind";
    
      dnssec-validation no;
    
      auth-nxdomain no;    # conform to RFC 1035
      listen-on-v6 { any; };
      listen-on { any; };
      response-policy { zone "googleapis.zone"; };
      allow-query { any;};
    };
    
  3. Agrega las siguientes líneas a /etc/bind/named.conf.local:

    include "/etc/bind/named.conf.default-zones";

    zone "googleapis.zone" { type master; file "/etc/bind/db.googleapis.zone"; allow-query {none;}; };

  4. Agrega las siguientes líneas a /etc/bind/db.googleapis.zone:

    $TTL 1H
    @                       SOA LOCALHOST. noreply.localhost(1 1h 15m 30d 2h)
                            NS  LOCALHOST.

    *.googleapis.com CNAME restricted.googleapis.com. restricted.googleapis.com CNAME rpz-passthru.

Configura DNS en casos especiales

Cuando necesites configurar el DNS en casos especiales, ten en cuenta lo siguiente:

  • No se admite BIND personalizado cuando se usa Dataflow. Para personalizar la resolución de DNS cuando usas Dataflow con los Controles del servicio de VPC, usa las zonas privadas de Cloud DNS, en lugar de los servidores BIND personalizados. Para usar tu resolución de DNS local, considera usar un método de reenvío de DNS de Google Cloud.
  • Es posible que también debas configurar el DNS para gcr.io si, por ejemplo, usas Google Kubernetes Engine (GKE). Si deseas obtener más información, consulta Configura Container Registry para clústeres privados de GKE.