Configura el acceso privado a Google de los hosts locales

El acceso privado a Google permite que los hosts locales alcancen servicios y API de Google mediante una dirección IP interna y privada en lugar de una dirección IP pública externa en una conexión Cloud VPN o Cloud Interconnect.

Los servicios y las API de Cloud y para desarrolladores a los que pueden acceder los hosts locales mediante el acceso privado a Google son los siguientes.

Se accede mediante el acceso privado a Google y se protegen mediante los Controles del servicio de VPC:

  • BigQuery
  • Dataflow (solo para Cloud Storage)
  • Dataproc (solo llamada de creación de instancia)
  • Cloud Deployment Manager
  • API de JSON de Cloud Storage

Se accede mediante el acceso privado a Google, pero no se protegen con los Controles del servicio de VPC:

  • Cloud DNS
  • Logging
  • Monitoring
  • Pub/Sub
  • Informes de errores de Resource Manager
  • Error Reporting
  • API de Cloud Runtime Configuration

En este documento, se describe cómo habilitar el acceso privado a Google para hosts locales.

Requisitos

A continuación, se enumeran los requisitos para el acceso privado a Google:

  • Debes habilitar las API a las que deseas acceder a través de la página de API y servicios en Google Cloud Console.
  • Debes configurar las rutas para que el tráfico de la API de Google se reenvíe a través de tu conexión de Cloud VPN o Cloud Interconnect, las reglas de firewall en los firewall locales para permitir el tráfico saliente, y el DNS a fin de que el tráfico en las API de Google se resuelva al rango de IP que agregaste a las rutas. En el resto de este documento, se describe ese proceso.

Configura rutas

Puedes usar un anuncio de ruta personalizado de Cloud Router para anunciar las direcciones IP de las API de Google restringidas a través de Cloud Router a tu red local. El rango de IP de las API de Google restringido es 199.36.153.4/30. Si bien, técnicamente, es un rango de IP público, Google no lo anuncia de forma pública. Solo los hosts que pueden llegar a tus proyectos de Google Cloud a través de rangos de IP internos pueden acceder a este rango de IP, por ejemplo, a través de una conexión de Cloud VPN o Cloud Interconnect.

Para especificar anuncios en un Cloud Router, haz lo siguiente:

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 el Cloud Router a fin de que continúe el anuncio de las subredes disponibles en Cloud Router. Si habilitas esta opción, imitas 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: Especifica 199.36.153.4/30.
    • 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 con 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. El siguiente ejemplo actualiza el Cloud Router my-router para anunciar todas las subredes y el rango 199.36.153.4/30 de las IP 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
        

    La marca --set-advertisement-groups acepta grupos definidos por Google que Cloud Router anuncia de forma dinámica. Puedes quitar la marca --set-advertisement-groups para excluir los anuncios de la subred. Para obtener una lista de todos los grupos de anuncios, consulta la marca advertisement-groups en la documentación del SDK de Google.

  • 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 de anuncio del Cloud Router ya esté configurado en custom. En el siguiente ejemplo, se agrega la IP personalizada Restricted Google APIs IPs a los anuncios de Cloud Router:

        gcloud beta compute routers update my-router \
            --add-advertisement-ranges Restricted Google APIs IPs
        

Para especificar anuncios en una sesión de BGP existente, haz lo siguiente:

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, haz clic en Editar.
  5. En Rutas, selecciona Crear rutas personalizadas.
  6. Selecciona Anunciar todas las subredes visibles para el Cloud Router a fin de que continúe el anuncio de las subredes disponibles en Cloud Router. Si habilitas esta opción, imitas 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: Especifica 199.36.153.4/30.
    • 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 con 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 beta 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
        

    La marca --set-advertisement-groups acepta todos los grupos definidos por Google que la sesión BGP anuncie de manera dinámica. Puedes quitar la marca --set-advertisement-groups para excluir los anuncios de la subred. Para obtener una lista de todos los grupos de anuncios, consulta la marca advertisement-groups en la documentación del SDK de Google.

  • 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 de 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 beta compute routers update-bgp-peer my-router \
            --peer-name my-bgp-session \
            --add-advertisement-ranges 199.36.153.4/30
        

Configura las reglas de firewall

Debes configurar tu firewall local para permitir que el tráfico de tus hosts locales llegue a 199.36.153.4/30.

Configura DNS

Para usar las direcciones IP de las API de Google restringidas, configura tu propio servidor DNS para resolver *.googleapis.com como CNAME a restricted.googleapis.com. Existen dos maneras de hacerlo, cada una con sus propias limitaciones durante la versión Beta. Estas dos maneras son las zonas DNS privadas de Cloud DNS y el BIND personalizado.

Configura DNS con Cloud DNS

Si estás en la versión Beta privada del DNS privado de Cloud DNS, puedes usar Cloud DNS a fin de habilitar la resolución de DNS para el acceso privado a Google.

gcloud


    gcloud alpha dns managed-zones create apis \
        --visibility private \
        --networks https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/[NETWORK] \
        --dns-name googleapis.com
    
    gcloud dns record-sets transaction start -z apis
    
    gcloud dns record-sets transaction add --name=*.googleapis.com. \
        --type=CNAME restricted.googleapis.com. --zone apis --ttl 300
    
    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 apis --ttl 300
    
    gcloud dns record-sets transaction execute --zone apis
    

Configura DNS con BIND

Si usas BIND en tu resolución de DNS local, puedes configurarla para que use zonas de política de respuesta (RPZ). Aquí puedes ver un ejemplo de configuración de BIND:

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

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

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

    allow-query { any;};

    response-policy { zone "googleapis.zone"; };

    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.

Caso práctico: Configuración de la conectividad y la política de la API de Cloud Storage en una situación de nube híbrida

Considera la siguiente situación en el diagrama a continuación, en la que quieres tener el siguiente comportamiento:

  • Los hosts locales pueden acceder a las API de Cloud Storage de forma privada, pero solo pueden acceder a los depósitos de almacenamiento en el proyecto determinado.
  • Solo se puede acceder al proyecto “sensitive-buckets” desde las VM de red de VPC y las aplicaciones locales conectadas de forma privada.
Caso práctico del acceso privado a Google en la nube híbrida (haz clic para agrandar la imagen)

Estos son los pasos necesarios para crear esta configuración:

  1. Anuncia las IP de las API de Google restringidas a través de Cloud Router.

    Si tienes un Cloud Router existente en el que actualizas el anuncio a fin de acceder a las API de Google, puedes configurar el acceso para un solo intercambio de tráfico o todos los intercambios de tráfico de un Cloud Router existente.

    Si quieres configurar solo para un intercambio de tráfico específico de un Cloud Router existente, haz lo siguiente:

        gcloud compute routers update-bgp-peer [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --peer-name=[BGP_PEER] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    Si quieres configurarlo para todos los intercambios de tráfico de un Cloud Router existente, haz lo siguiente:

        gcloud compute routers update [CLOUD_ROUTER] \
        --region=[CLOUD_ROUTER_REGION] \
        --add-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        

    Si no tienes un Cloud Router existente y necesitas configurar el acceso a las API de Google privadas, haz lo siguiente:

        gcloud compute routers create [CLOUD_ROUTER] \
            --region=[CLOUD_ROUTER_REGION] \
            --advertisement-mode=custom \
            --set-advertisement-groups=all_subnets \
            --set-advertisement-ranges=199.36.153.4/30=access-to-secure-gcp-apis
        
  2. Configura tu DNS y tu aplicación local de manera que las solicitudes de almacenamiento de la API de Google se realicen y resuelvan para storage.restricted.gooogleapis.com.

  3. Configura los Controles del servicio de VPC de acuerdo con la guía del usuario. En el caso de los Controles del servicio de VPC, debes comunicarte con el Ingeniero de Atención al cliente y brindarle información sobre los proyectos que deseas proteger.

Próximos pasos