Configura una instancia de IP privada de Looker (Google Cloud Core)

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.

  1. 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, ejecuta gcloud 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.

  2. 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
    
  3. 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).
  4. 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).
  5. Valida el archivo nginx.config y vuelve a cargarlo:

    sudo nginx -t && sudo nginx -s reload
    

    Próximos pasos