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 sobre las 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 de las API de Google restringidas. 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 de las API de Google restringidas. 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 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 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
Reemplaza lo siguiente:
ROUTE_NAME
: Un nombre para la ruta personalizadaNETWORK_NAME
: El nombre de tu 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
- Ve a la página de Cloud Router en Google Cloud Console.
Lista de Cloud Router - Selecciona el Cloud Router que quieres actualizar.
- En la página de detalles de Cloud Router, haz clic en Editar.
- Expande la sección Rutas anunciadas.
- En Rutas, selecciona Crear rutas personalizadas.
- 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.
- Selecciona Agregar ruta personalizada para agregar una ruta anunciada.
- 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
.
- 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 Routermy-router
para anunciar todas las subredes y el rango de IP199.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 encustom
. En el siguiente ejemplo, se agrega la IP personalizada de lasRestricted 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
- Ve a la página de Cloud Router en Google Cloud Console.
Lista de Cloud Router - Selecciona el Cloud Router que contiene la sesión de BGP que quieres actualizar.
- En la página de detalles de Cloud Router, selecciona la sesión de BGP que quieres actualizar.
- En la página de detalles de la sesión de BGP, selecciona Editar.
- En Rutas, selecciona Crear rutas personalizadas.
- 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.
- Selecciona Agregar ruta personalizada para agregar una ruta anunciada.
- 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
.
- 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 BGPmy-bgp-session
en el Cloud Routermy-router
para anunciar todas las subredes y el rango de IP personalizado199.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 encustom
. En el siguiente ejemplo, se agregan las IP de las API de Google restringidas,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
Para el uso general de los Controles del servicio de VPC, te recomendamos que uses las políticas de respuesta de Cloud DNS a fin de configurar el DNS para tus redes de VPC. Esto te permite configurar DNS sin tener que crear una zona privada administrada.
Una política de respuesta usa el comportamiento passthru
para permitir que los nombres, como www.googleapis.com
, se permitan después del nombre comodín en el ejemplo *.googleapis.com
. Para obtener más información, consulta Administra políticas y reglas de respuesta.
También puedes usar zonas privadas administradas para tus redes de VPC.
Las zonas DNS privadas de Cloud DNS te permiten alojar una zona DNS accesible desde redes de VPC autorizadas.
Para usar las direcciones IP restringidas de las API de Google, si configuras el reenvío desde ciertos servidores de nombres locales, puedes crear una zona privada de googleapis.com
con un registro A para restricted.googleapis.com
y registros CNAME apropiados para cada nombre *.googleapis.com
. Para obtener más información, consulta Administra zonas.
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:
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.
Puedes configurar DNS con Cloud DNS mediante políticas de respuesta o zonas privadas.
Usa políticas de respuesta para configurar Cloud DNS
Dirige nombres específicos a direcciones VIP restringidas
Puedes configurar una política de respuesta que tenga datos CNAME locales para cada zona a fin de traducir las solicitudes a las API de Google a las API restringidas de Google. Los nombres que no se especifican se resuelven mediante un DNS normal.
Por ejemplo, puedes crear una política de respuesta para pubsub.googleapis.com
, que tiene datos CNAME locales para una zona, a fin de traducir las solicitudes a la API de Google a restricted.googleapis.com
. Mientras tanto, www.googleapis.com
, que no se especifica, continúa resolviendo mediante DNS normal.
En la siguiente configuración de ejemplo, crearás una política y la aplicarás a una red de VPC específica.
Crea una política de respuesta por URL:
{ kind: "dns#responsePolicy", response_policy_name: RESPONSE_POLICY_NAME, description: RESPONSE_POLICY_DESCRIPTION, networks: [ { network_url: URL_TO_NETWORK; } ] }
Reemplaza lo siguiente:
RESPONSE_POLICY_NAME
: Un nombre para la política de respuestaRESPONSE_POLICY_DESCRIPTION
: Una descripción de la política de respuestaURL_TO_NETWORK
: La URL para la que estás creando la política de respuesta
Agrega una regla a la política:
{ kind: "dns#responsePolicyRules", rule_name: RULE_NAME, dns_name: DNS_NAME, local_data: [ { name: "pubsub.googleapis.com.", type: "A", ttl: 300, rrdata: ["199.36.153.4", "199.36.153.5", "199.36.153.6", "199.36.153.7"] } ] }
Reemplaza lo siguiente:
RULE_NAME
: Un nombre para la regla que estás creando, comopubsub
DNS_NAME
: Es el nombre de DNS para el que creas la regla, comopubsub.googleapis.com.
; fíjate en el punto final
Dirección a todos los nombres, excepto algunos de los espectadores de VIP restringidos
Puedes configurar reglas para eximir algunas respuestas de DNS de una regla de política que abarca un dominio completo o un bloque de direcciones IP grande. Este concepto se denomina comportamiento de traspaso. Si usas el comportamiento de traspaso, puedes permitir que los nombres que no son compatibles con los Controles de servicio estén permitidos después del nombre del comodín.
Por ejemplo, puedes permitir que www.googleapis.com
esté permitido después del nombre del comodín en el ejemplo *.googleapis.com
. La coincidencia exacta de www
tiene prioridad sobre el comodín *
.
En la siguiente configuración de ejemplo, crearás una política con un nombre específico y la aplicas a una red de VPC específica. La regla permite que www.googleapis.com
omita el comodín *.googleapis.com
.
Crea una política de respuesta:
{ kind: "dns#responsePolicy", response_policy_name: RESPONSE_POLICY_NAME, description: RESPONSE_POLICY_DESCRIPTION, networks: [ { network_url: URL_TO_NETWORK; } ] }
Reemplaza lo siguiente:
RESPONSE_POLICY_NAME
: Un nombre para la política de respuesta, comomy-response-policy
RESPONSE_POLICY_DESCRIPTION
: Una descripción de la política de respuesta, comomy response policy
URL_TO_NETWORK
: La URL para la que estás creando la política de respuesta
Agrega una regla a la política:
{ kind: "dns#responsePolicyRules", rule_name: RULE_NAME, dns_name: DNS_NAME, local_data: [ { name: "*.googleapis.com.", type: "A", ttl: 300, rrdata: ["restricted.googleapis.com."] } ] } { kind: "dns#responsePolicyRules", rule_name: "www-passthru", dns_name: "www.googleapis.com.", behavior: BYPASS_RESPONSE_POLICY }
Reemplaza lo siguiente:
RULE_NAME
: Un nombre para la regla que estás creando, comogoogleapis
DNS_NAME
: Es el nombre del comodín DNS para el que creas la regla, como*.googleapis.com.
; fíjate en el punto final
Usa zonas privadas para configurar Cloud DNS
Usa zonas privadas para configurar Cloud DNS cuando no puedes usar políticas de respuesta.
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
Reemplaza lo siguiente:
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 contiene tu red de VPC.NETWORK_NAME
: El nombre de tu red de VPCDESCRIPTION
es una descripción opcional y legible de la zona administrada.
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.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.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.Opcional. Para permitir que los hosts locales lleguen a la VIP restringida, completa los siguientes pasos:
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
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.
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:
Agrega las siguientes líneas a
/etc/bind/named.conf
:include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local";
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;}; };
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;}; };
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 un DNS para 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.