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

Puedes usar los Controles del servicio de VPC para controlar el acceso a los servicios y las API de Google desde hosts que usan direcciones IP privadas. Estos hosts pueden ser instancias de VM en una red de VPC o clientes en una red local.

Para restringir el Acceso privado a Google dentro de un perímetro de servicio solo a los servicios y las API de Google compatibles con los Controles del servicio de VPC, los hosts deben enviar sus solicitudes al nombre de dominio restricted.googleapis.com en lugar de *.googleapis.com. El dominio restricted.googleapis.com se resuelve en un rango de VIP (dirección IP virtual) 199.36.153.4/30. Este rango de direcciones IP no se anuncia a Internet.

En las siguientes secciones, se describe cómo configurar la conectividad privada para hosts en una red de VPC o una red local. Para obtener una descripción general y diagramas de topología de ejemplo, consulta Acceso privado a Google con los Controles del servicio de VPC.

Antes de comenzar

  • Debes habilitar las API a las que deseas acceder a través de la página de API y servicios en Google Cloud Console.
  • Los propietarios del proyecto, los editores y los miembros 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 Funciones de IAM.
  • El Acceso privado a Google y el Acceso privado a Google para los hosts locales requieren una red de VPC. Se admiten las redes de VPC en modo automático y personalizado. No se admiten las redes heredadas.
  • Para las instancias de VM en una red de VPC, estas deben tener solo una dirección IP privada (sin dirección IP pública) y estar en la subred con el Acceso privado a Google habilitado.
  • Para los hosts locales, debes tener un túnel de Cloud VPN existente o una conexión de Cloud Interconnect a la red de VPC.

Descripción general del procedimiento

Para configurar la conectividad privada, completa las siguientes tareas:

  • Configura las rutas para el destino 199.36.153.4/30. Para obtener más información, consulta Configura las rutas.
  • Configura las reglas de firewall para permitir el tráfico adecuado al rango de direcciones IP restringidas de las API de Google. Para obtener más información, consulta Configura las reglas de firewall.
  • Configura un DNS para que el tráfico hacia las API de Google se resuelva en el rango de direcciones IP restringidas de las API de Google. Para obtener más información, consulta Configura un DNS.

Configura una ruta a restricted.googleapis.com

En el Acceso privado a Google y el Acceso privado a Google para hosts locales, la red de VPC debe incluir una ruta con un destino a 199.36.153.4/30 cuyo salto siguiente 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 199.36.153.4/30 permanece dentro de la red de Google. Es posible que la red de VPC ya tenga una ruta predeterminada cuyo salto siguiente sea la puerta de enlace de Internet predeterminada. Si no es así, puedes crear una ruta estática personalizada cuyo destino sea 199.36.153.4/30 y cuyo salto siguiente sea la puerta de enlace de Internet predeterminada.

Además de la ruta estática personalizada, el Acceso privado a Google para hosts locales requiere un anuncio de ruta personalizado a fin de que los hosts en la red local puedan obtener información sobre la VIP restringida. Puedes crear una ruta dinámica personalizada mediante Cloud Router para anunciar la VIP restringida.

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

Configura una ruta estática personalizada en una red de VPC

Agrega una ruta estática personalizada para habilitar el acceso a los servicios administrados de Google compatibles con los Controles del servicio de VPC.

  • Agrega una ruta personalizada que permita el acceso solo a los servicios administrados de Google protegidos por los Controles del servicio de VPC.

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

    En el ejemplo anterior, se ilustra lo siguiente:

    • ROUTE_NAME es un nombre para la ruta personalizada.

    • NETWORK_NAME es el nombre de la red de VPC.

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 la VIP restringida (199.36.153.4/30) en la red local, usa el anuncio de ruta personalizado de Cloud Router. Este rango de direcciones IP está disponible solo para hosts locales que pueden acceder a la red de VPC a través de direcciones IP privadas.

Puedes agregar este anuncio de ruta personalizado 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).

Realiza los siguientes pasos y crea un anuncio de ruta personalizado del rango restringido para todas las sesiones de BGP en un Cloud Router existente:

Console


  1. Ve a la página de Cloud Router en Google Cloud Console.
    Lista de Cloud Router
  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. 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.
  9. Fuente: Selecciona Rango de IP personalizado para especificar un rango de IP personalizado.
  10. Rango de direcciones IP: Especifica 199.36.153.4/30.
  11. Descripción: Agrega una descripción de Restricted Google APIs IPs.
  12. Cuando termines de agregar las 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á cualquier anuncio personalizado existente. En el siguiente ejemplo, se actualiza el Cloud Router my-router para anunciar todas las subredes y el rango de IP 199.36.153.4/30 de las API de Google restringidas:

    gcloud compute routers update my-router \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • 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 agrega la IP personalizada de las Restricted Google APIs IPs a los anuncios de Cloud Router:

    gcloud compute routers update my-router \
        --add-advertisement-ranges 199.36.153.4/30
    

Realiza los siguientes pasos para crear un anuncio de ruta personalizado del rango restringido de una sesión de BGP específica en un Cloud Router existente:

Console


  1. Ve a la página de Cloud Router en Google Cloud Console.
    Lista de Cloud Router
  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.
  9. Fuente: Selecciona Rango de IP personalizado para especificar un rango de IP personalizado.
  10. Rango de direcciones IP: Especifica 199.36.153.4/30.
  11. Descripción: Agrega una descripción de Restricted Google APIs IPs.
  12. 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á cualquier anuncio personalizado existente. Con el siguiente ejemplo, puedes actualizar 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 199.36.153.4/30:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --advertisement-mode CUSTOM \
        --set-advertisement-groups ALL_SUBNETS \
        --set-advertisement-ranges 199.36.153.4/30
    
  • 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. En el siguiente ejemplo, se agregan las IP restringidas de las API de Google, 199.36.153.4/30, a los anuncios de Cloud Router:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --add-advertisement-ranges 199.36.153.4/30
    

    Para obtener más información sobre los anuncios personalizados, consulta Anuncios de ruta personalizados.

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, 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. Puedes crear una regla de denegación de salida a fin de bloquear todo el tráfico saliente y, luego, crear reglas de salida con mayor prioridad para permitir el tráfico a los destinos seleccionados en la red de VPC y a rango de direcciones IP 199.36.153.4/30 (restricted.googleapis.com). Todas las comunicaciones a restricted.googleapis.com se encuentran en el puerto TCP 443.

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

Reglas de firewall en redes locales

Debes configurar las reglas de firewall locales para permitir que el tráfico desde los hosts locales alcance 199.36.153.4/30.

Configura DNS

A fin de usar las direcciones IP de las API de Google restringidas, configura el servidor DNS para resolver *.googleapis.com como un CNAME a restricted.googleapis.com y configura un registro A para restricted.googleapis.com. Para el uso general de los Controles del servicio de VPC, te recomendamos que uses las zonas privadas administradas de Cloud DNS para las redes de VPC.

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

  • Las zonas de DNS privadas de Cloud DNS te permiten alojar una zona DNS accesible desde redes de VPC autorizadas y, si configuras el reenvío, desde ciertos servidores de nombres locales. Puedes crear una zona privada para googleapis.com con un registro A para restricted.googleapis.com y los registros CNAME apropiados para cada nombre de *.googleapis.com. Las zonas privadas de Cloud DNS no admiten anulaciones parciales, lo que significa que solo puedes optar por redireccionar todas las solicitudes a *.googleapis.com hacia restricted.googleapis.com. Como resultado, no podrás usar ningún servicio o API de Google que no admita el uso de la VIP restricted.googleapis.com. Para obtener más información, consulta Administra zonas.
  • 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.

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 ambas. 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, asegúrate de que el proyecto host de la red de VPC compartida esté incluido en el mismo perímetro de servicio que los proyectos que se conectan a la red.

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

    gcloud beta 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
    
    • ZONE_NAME es un nombre para la zona que estás creando. Por ejemplo, vpc. Este nombre se usará en cada uno de los siguientes pasos.

    • PROJECT_ID es el ID del proyecto que aloja la red de VPC.

    • NETWORK_NAME es el nombre de la 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
    
    • ZONE_NAME es 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
    
    • ZONE_NAME es 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
    
    • ZONE_NAME es el nombre de la zona que creaste en el primer paso.
  4. Ejecuta la transacción.

    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    
    • ZONE_NAME es 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 beta dns policies create POLICY_NAME \
       --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \
       --enable-inbound-forwarding \
       --description=DESCRIPTION
      
      • POLICY_NAME es un nombre para la política que estás creando. Por ejemplo, apipolicy.

      • PROJECT_ID es el ID del proyecto que aloja la red de VPC.

      • NETWORK_NAME es el nombre de la 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.