1. Introducción
Las listas de direcciones IP con nombre de Google Cloud Armor te permiten hacer referencia a listas de direcciones IP y rangos de IP que mantienen los proveedores externos. Puedes configurar listas de direcciones IP con nombre dentro de una política de seguridad. No es necesario que especifiques de forma manual cada dirección IP o rango de IP de forma individual.
Qué aprenderás
- Beneficios de la lista de direcciones IP con nombre de Cloud Armor
- Crea una política de seguridad de Cloud Armor
- Implementa la lista de direcciones IP con nombre de Cloud Armor
- Crear un balanceador de cargas global
- Crear un grupo de instancias administrado con una aplicación de prueba de muestra
Requisitos
- Experiencia con políticas de seguridad y balanceadores de cargas
2. Permite solo el tráfico proveniente de los proveedores externos permitidos
Un caso de uso típico es crear una lista de entidades permitidas que contenga las direcciones IP de un socio externo permitido para garantizar que solo el tráfico procedente de este socio pueda acceder al balanceador de cargas y a los backends.
Por ejemplo, los proveedores de CDN necesitan extraer contenido de los servidores de origen en intervalos regulares para distribuirlo en sus propias cachés. La asociación con Google proporciona una conexión directa entre los proveedores de CDN y la red perimetral de Google. Los usuarios de CDN en Google Cloud pueden usar esta conexión directa durante las extracciones del origen. En este caso, es posible que el usuario de CDN quiera crear una política de seguridad que solo permita el tráfico proveniente de ese proveedor de CDN en particular.
En este ejemplo, un proveedor de CDN publica su lista de direcciones IP 23.235.32.0/20, 43.249.72.0/22, ⋯,. Un usuario de CDN configura una regla de seguridad que solo permite el tráfico proveniente de estas direcciones IP. Como resultado, se permiten dos puntos de acceso de proveedor de CDN (23.235.32.10 y 43.249.72.10), por lo que se permite su tráfico. El tráfico del punto de acceso no autorizado 198.51.100.1 está bloqueado.
Dirección IP con nombre de Google Cloud Armor
3. Simplifica la configuración y la administración con reglas configuradas previamente
Los proveedores de CDN suelen usar direcciones IP que son conocidas y que muchos usuarios de CDN necesitan usar. Estas listas cambian con el tiempo, a medida que los proveedores agregan, quitan y actualizan las direcciones IP.
Usar una lista de direcciones IP con nombre en una regla de política de seguridad simplifica el proceso de configuración y administración de direcciones IP, ya que Google Cloud Armor sincroniza automáticamente la información de los proveedores de CDN a diario. Esto elimina el proceso lento y propenso a errores de mantener manualmente una gran lista de direcciones IP.
Proveedores de listas de direcciones IP
Los proveedores de listas de direcciones IP de la siguiente tabla son compatibles con Google Cloud Armor. Estos son proveedores de CDN que se asociaron con Google. Sus listas de direcciones IP se publican a través de URL públicas individuales.
Estos socios proporcionan distintas listas de direcciones IPv4 y direcciones IPv6. Google Cloud Armor usa las URLs proporcionadas para recuperar listas y, luego, las convierte en listas de direcciones IP con nombre. Para hacer referencia a las listas, utiliza los nombres que aparecen en la tabla.
Como alternativa, puedes usar Cloud Shell para obtener una lista de listas de direcciones IP con nombre preconfiguradas
Accede a Cloud Shell y establece el ID de tu proyecto.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Desde Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
El resultado es el siguiente:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Topología de codelabs
5. Configuración y requisitos
Configuración del entorno de autoaprendizaje
- Accede a la consola de Cloud y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.
Recuerde el ID de proyecto, un nombre único en todos los proyectos de Google Cloud (el nombre anterior ya se encuentra en uso y no lo podrá usar). Se mencionará más adelante en este codelab como PROJECT_ID
.
- A continuación, deberás habilitar la facturación en la consola de Cloud para usar los recursos de Google Cloud recursos.
Ejecutar este codelab no debería costar mucho, tal vez nada. Asegúrate de seguir las instrucciones de la sección “Realiza una limpieza” en la que se aconseja cómo cerrar recursos para no incurrir en facturación más allá de este instructivo. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de$300.
Inicia Cloud Shell
Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.
En GCP Console, haga clic en el ícono de Cloud Shell en la barra de herramientas superior derecha:
El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:
Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Puedes realizar todo tu trabajo en este lab usando simplemente un navegador.
6. Crear red de VPC
Red de VPC
Desde Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Crear subred
Desde Cloud Shell
gcloud compute networks subnets create named-ip-subnet \ --network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Crea reglas de firewall
Desde Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Crea el balanceador de cargas
Crea la plantilla de instancias.
Desde Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Crea el grupo de instancias administrado
Desde Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Verifica los backends
Verificar que las instancias de VM se creen en ambas regiones y acceder a sus sitios HTTP
- En Compute Engine, haz clic en Instancias de VM, en el menú de la izquierda.
- Observa las instancias que comienzan con us-east1-mig. Estas instancias son parte de los grupos de instancias administrados.
- Haz clic en la IP externa de una instancia de us-east1-mig. Deberías ver la IP de cliente (tu dirección IP) y el nombre de host (comienza con us-east1-mig).
Configura el balanceador de cargas HTTP
- En la consola de Cloud, haz clic en el menú de navegación ( ) > haz clic en Servicios de red > Balanceo de cargas y, luego, haz clic en Crear balanceador de cargas.
- En Balanceo de cargas HTTP(S), haz clic en Iniciar configuración.
- Selecciona De Internet a mis VMs y haz clic en Continuar.
- Configura el nombre como http-lb.
Configure el backend
Los servicios de backend dirigen el tráfico entrante a uno o más backends adjuntos. Cada backend está compuesto por un grupo de instancias y metadatos con capacidad de entrega adicional.
- Haz clic en Configuración de backend.
- Para servicios de backend y de backend, haz clic en Crear o seleccionar servicios de backend, en buckets de backend, luego en Servicios de backend y, luego, en Crear un servicio de backend.
- El tipo de backend es un grupo de instancias
- Establece los siguientes valores y deja el resto con la configuración predeterminada:
- Haga clic en Listo.
- En Verificación de estado, selecciona Crear una verificación de estado.
- Establece los siguientes valores y deja el resto con la configuración predeterminada:
- Haz clic en Guardar y continuar.
- Haz clic en Crear para generar el servicio de backend.
Configura el frontend
Las reglas de host y ruta de acceso determinan cómo se dirigirá tu tráfico. Por ejemplo, puedes dirigir el tráfico de video a un backend y el tráfico estático a otro. Sin embargo, no configuraremos dichas reglas en este lab.
- Haz clic en Configuración de frontend.
- http-front-end
- Especifica lo siguiente y deja el resto con sus predeterminados.
- Haga clic en Listo.
8. Revisa y crea el balanceador de cargas HTTP
- Haz clic en Revisar y finalizar.
- Revisa los servicios de backend y el frontend.
- Haz clic en Crear.
- Espera varios minutos para que se cree el balanceador de cargas.
- Haz clic en el nombre del balanceador de cargas (http-lb).
- Toma nota de la dirección IPv4 del balanceador de cargas para la próxima tarea, conocida como http-lb.
9. Valida el acceso no autorizado exitoso
Antes de implementar la política de direcciones IP con nombre, valide el acceso no autorizado exitoso al balanceador de labs y la aplicación web posterior. Nota: Una vez que se implementa la política de direcciones IP con nombre, el acceso a la aplicación web se limita al conjunto de expresiones aprovisionadas.
- Identifica la dirección IP del balanceador de cargas que creaste en el paso anterior (http-lb) y pégala en tu navegador web. El resultado será similar según la siguiente captura de pantalla.
NOTA: Este paso tardará varios minutos. Una vez que se genere la página web, la IP del cliente será de Google Front End, no de la IP de la estación de trabajo.
Desde tu estación de trabajo, realiza una validación similar a la que se indica a continuación
bash-3.2$ curl <load-balancer-IP>
10. Resultado de ejemplo
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Configurar la lista de IP con nombre
Crea una nueva política de Cloud Amour para la lista de IP con nombre
Desde Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Desde Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Identificar las direcciones disponibles de las listas de IP con nombre de CDN
Desde Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
El resultado es el siguiente:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Desde Cloud Shell, configura la lista de direcciones IP con nombre según el conjunto de expresiones disponibles de CDN
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Ejemplo con Cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. Aplica la política de seguridad de AC
Aplica la política de seguridad de la AC y espera varios minutos para que se propague la política global.
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Validación de la dirección IP con nombre
- Dado que se implementó la política de seguridad, el acceso al balanceador de cargas desde tu estación de trabajo no está autorizado.
- Para validarlo, abre una ventana de la terminal desde tu estación de trabajo y realiza un curl a la dirección IP del balanceador de cargas. La salida de curl mostrará el error “403” Se produjo un error prohibido porque la estación de trabajo ahora no está autorizada.
Desde tu estación de trabajo
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Pasos de limpieza
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. ¡Felicitaciones!
Felicitaciones por completar el codelab.
Temas abordados
- Beneficios de la lista de direcciones IP con nombre de Cloud Armor
- Crear un balanceador de cargas global
- Crear un grupo de instancias administrado con una aplicación de prueba de muestra
- Crea una política de seguridad de Cloud Armor
- Implementa la lista de direcciones IP con nombre de Cloud Armor
- Validar política de IP con nombre de Cloud Armor