Una vez que hayas configurado una instancia de Looker (Google Cloud Core) con una conexión de IP privada, puedes configurar la instancia o el proyecto de Google Cloud para usar ciertas funciones de Looker (Google Cloud Core) o permitir o restringir la comunicación con servicios externos o Internet.
Restringe la entrega de correos electrónicos a dominios externos
De forma predeterminada, las instancias de Looker (Google Cloud Core) que usan una configuración de IP privada permiten la entrega de correos electrónicos a dominios externos. Para restringir los dominios a los que los usuarios de Looker pueden enviar entregas por correo electrónico, puedes configurar una lista de dominios permitidos de correo electrónico.
Conecta una instancia privada de Looker para IP (Google Cloud Core) a servicios externos
Las instancias de Looker (Google Cloud Core) que usan una red de IP privada pueden requerir una configuración adicional del proyecto de Google Cloud para conectarse a servicios o recursos fuera del perímetro de los Controles del servicio de VPC. Las opciones de configuración se describen en las siguientes secciones.
Conéctate a un recurso o servicio de Google Cloud
Para conectarse a otro recurso o servicio de Google Cloud, es posible que deba configurar reglas de entrada y salida si el proyecto en el que se encuentra el recurso está ubicado fuera del perímetro de los Controles del servicio de VPC. Para obtener información sobre cómo configurar una conexión privada a fuentes de datos alojadas por otro proveedor de servicios en la nube, consulta Cómo conectarse a bases de datos alojadas por otros proveedores de servicios en la nube en esta página.
Conectarse a bases de datos alojadas por otros proveedores de servicios en la nube
Para poder establecer una conexión privada a bases de datos o servicios alojados por otros proveedores de servicios en la nube, tu proyecto de Google Cloud debe estar configurado para enrutar el tráfico a esos proveedores a fin de permitir el intercambio de datos. Obtén más información sobre la conexión de entornos de nube en la página de documentación de Patrones para conectar otros proveedores de servicios en la nube con Google Cloud.
Conéctate a recursos locales
Para configurar una conexión privada a bases de datos locales, usa Cloud VPN. Deberá configurar una ruta dinámica en su VPC para cada base de datos local. Si configuraste el reenvío de DNS para el proyecto en el que reside la instancia de Looker (Google Cloud Core), Looker podrá conectarse a cualquier recurso local.
Conexión a otros servicios de Internet
Para conectarse a servicios basados en Internet, deberá configurar una ruta dinámica en su VPC para cada servicio. Además, puedes usar Cloud NAT para crear conexiones salientes.
Otorga acceso público a instancias de IP privadas
Para controlar aún más el modo en que las partes externas interactúan con tu instancia de Looker (Google Cloud Core), puedes configurar un servidor proxy para otorgar acceso a Internet público a una instancia que solo tenga habilitada la IP privada.
Antes de comenzar
Antes de configurar un servidor proxy, debes instalar la versión más reciente de Google Cloud CLI o actualizarla.
Configura un servidor proxy
En el siguiente ejemplo, se muestra cómo usar la línea de comandos a fin de configurar un servidor proxy NGINX para una instancia existente de Looker (Google Cloud Core) que tenga habilitada una conexión de red IP privada. Aunque se pueden crear instancias de servidores NGINX con configuraciones de IP pública o IP privada (con acceso de VPN permitido), en este ejemplo se demuestra una configuración de IP pública.
Puedes usar cualquier servidor web que se pueda configurar como un servidor proxy inverso. No tiene que configurar un servidor NGINX específicamente.
Con la línea de comandos, cree una subred y una VM de NGINX de Ubuntu 18 con IP pública habilitada en su red de VPC. Para ello, ejecute los siguientes comandos:
PROJECT="NAME_OF_CLOUD_PROJECT_THAT_CREATES_LOOKER" NETWORK="VPC_PEERED_WITH_SERVICE_NETWORKING" SUBNETNAME="NAME_SUBNET_WHEN_CREATED_INSTANCE" IP_RANGE=ANY_NONCONFLICTING_RANGE REGION="REGION gcloud compute networks subnets create $SUBNETNAME --network=$NETWORK \ --range=$IP_RANGE --region=$REGION --project=$PROJECT
ZONE="ZONE_THE_INSTANCE_NEEDS_TO_BE_CREATED_IN" INSTANCE_NAME="THE_NAME_FOR_THE_VM_INSTANCE" INSTANCE_EXTERNAL_IP=$(gcloud compute instances create $INSTANCE_NAME \ --project=$PROJECT --zone=$ZONE --network=$NETWORK --subnet=$SUBNETNAME \ --format="json" | jq '.[].networkInterfaces[].accessConfigs[].natIP')
PROJECT
es el nombre del proyecto de Google Cloud en el que creaste tu instancia de Looker (Google Cloud Core).NETWORK
es el nombre de la red de VPC que configuraste para tu instancia de Looker (Google Cloud Core).- Establece
IP_RANGE
en al menos/22
(por ejemplo,10.10.0.0/22
). SUBNETNAME
puede ser cualquier nombre. No es necesario que coincida con el nombre de subred de tu instancia de Looker (Google Cloud Core).- Para determinar
ZONE
, ejecutagcloud compute zones list
. INSTANCE_NAME
puede llamarse a cualquier nombre. Esto se refiere al nombre de tu instancia de VM.
Después de ejecutar ambos comandos, ejecuta este comando:
echo $INSTANCE_EXTERNAL_IP
Esto generará la dirección IP pública de su instancia de VM.
Ejecute el siguiente comando para crear un firewall que permita el tráfico a su instancia en los puertos 80, 443 y 22 (o en otros puertos que NGINX detecte):
gcloud compute firewall-rules create managementnet-allow-http-https-ssh \ --direction=INGRESS --priority=1000 --network=$NETWORK --action=ALLOW \ --rules=tcp:80,tcp:443,tcp:22 --source-ranges=0.0.0.0/0 --project=$PROJECT
Crea un certificado de terceros para acceder a la URL pública. En este ejemplo, se usa el let's Encrypt de NGINX para generar un certificado de Let's Encrypt, pero puede usar cualquier certificado de encriptación.
Accede a la VM de NGINX.
Instala la herramienta Let's Encrypt:
sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
Accede al archivo
nginx.config
:sudo vi /etc/nginx/sites-available/default
En el archivo
nginx.config
, reemplaza la configuración del servidor existente a fin de establecer el servidor y el puerto 80 para escuchar:server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name SERVER_NAME>; }
SERVER_NAME
es el nombre del registro DNS del dominio personalizado de tu instancia de Looker (Google Cloud Core).
Vuelva a cargar NGINX:
sudo nginx -t && sudo nginx -s reload
Genera un certificado:
sudo certbot --nginx -d SERVER_NAME
SERVER_NAME
es el nombre del registro DNS del dominio personalizado de tu instancia de Looker (Google Cloud Core).
En el archivo
nginx.config
, reemplaza la configuración del servidor del paso 3 por la siguiente configuración del servidor para pasar el tráfico a tu instancia de Looker (Google Cloud Core):server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name SERVER_NAME ssl_certificate /etc/letsencrypt/live/SERVER_NAME/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/SERVER_NAME/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; location / { set $priv_dns "private.lookerapp"; proxy_pass https://PRIVATE_IP_ADDRESS/$request_uri; proxy_set_header Host $server_name; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_ssl_protocols TLSv1.3; proxy_ssl_verify off; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header X-Real-IP $remote_addr; proxy_redirect https://$priv_dns/ https://SERVER_NAME/; } } server { if ($host = SERVER_NAME) { return 301 https://$host$request_uri; } listen 80 default_server; listen [::]:80 default_server; server_name SERVER_NAME; return 404; }
PRIVATE_IP_ADDRESS
es la dirección IP privada asignada a tu instancia de Looker (Google Cloud Core), que puedes ver en la página DETALLES de la instancia en Google Cloud Console.SERVER_NAME
es el nombre del registro DNS del dominio personalizado de tu instancia de Looker (Google Cloud Core).
Valida el archivo
nginx.config
y vuelve a cargarlo:sudo nginx -t && sudo nginx -s reload
Próximos pasos