Herramientas de redes de IP privada con Looker (Google Cloud Core)

Una vez que hayas configurado una instancia de Looker (Google Cloud Core) para que use solo una IP privada o una IP pública y privada, te recomendamos que configures tu red para usar ciertas funciones de Looker (Google Cloud Core), o bien permitir o restringir la comunicación con servicios externos o Internet.

Restricción de entregas de correo electrónico a dominios externos

De forma predeterminada, las instancias de Looker (Google Cloud Core) que usan solo una IP privada o una IP pública y 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 de correo electrónico, puedes configurar una lista de dominios de correo electrónico permitidos.

Conecta una instancia de IP privada de Looker (Google Cloud Core) a servicios externos

Es posible que las instancias de Looker (Google Cloud Core) que usan solo una IP privada o una IP privada y pública requieran una configuración adicional para conectarse a servicios o recursos fuera de la red de VPC de la instancia. En las siguientes secciones, se describen opciones de configuración adicionales.

Conéctate a otras VPC mediante el acceso privado a servicios

Si quieres usar IP internas para conectarte a servicios en otras VPC alojadas por Google o por terceros, puedes usar el acceso privado a servicios.

Durante la creación de instancias de Looker (Google Cloud Core), creaste una conexión de acceso a servicios privados para conectar tu VPC al servicio de Looker (Google Cloud Core). También puedes actualizar la asignación de IP de una conexión de acceso a servicios privados existente sin interrumpir el tráfico.

Para configurar una conexión de acceso privado a servicios, haz lo siguiente:

  1. Asigna un rango de IP internas en tu red de VPC.
  2. Configura la conexión privada entre tu red de VPC y la del productor de servicios mediante el rango de IP asignado. Esta conexión privada establece una conexión de intercambio de tráfico entre redes de VPC entre tu VPC y la otra red.

Las conexiones privadas constituyen una relación uno a uno entre tu red de VPC y el productor de servicios. Si un solo productor de servicios ofrece varios servicios, solo necesitas una conexión privada para todos ellos.

Conéctate a recursos locales o servicios de terceros

Puedes usar cualquiera de las siguientes dos opciones para conectar instancias de Looker (Google Cloud Core) solo con una IP privada o una IP pública y privada a recursos locales o servicios de terceros:

Con cualquiera de los dos métodos, deberás hacer lo siguiente:

  • Configurar una ruta dinámica en tu VPC de Looker (Google Cloud Core) para cada recurso local
  • Configura un anuncio de ruta personalizado de la subred de acceso a servicios privados de Looker (Google Cloud Core) en todos los Cloud Routers que se implementan en la VPC de Looker (Google Cloud Core).
  • Actualiza tus firewalls locales para permitir el tráfico con la subred de Looker (Google Cloud Core).
  • Configurar el reenvío de DNS, que permitirá que Looker (Google Cloud Core) se conecte a cualquier recurso local

Cloud Interconnect y Cloud Router

En el siguiente diagrama de red, se muestra cómo interactúan Cloud Interconnect y Cloud Router con el servicio de Looker (Google Cloud Core) para conectarse a una red local:

  1. El acceso privado a los servicios conecta el servicio de Looker (Google Cloud Core) con la VPC a través de direcciones IP internas con el intercambio de tráfico de VPC.
  2. Cloud Router usa el Protocolo de puerta de enlace de frontera (BGP) para anunciar los prefijos de IP privadas y las rutas dinámicas del programa en función de los anuncios de BGP que recibe de un par. Cloud Interconnect se usa para conectarse a la red local.

Cloud VPN y Cloud Router

Para ver una explicación sobre cómo crear una instancia de IP pública y privada de Looker (Google Cloud Core) y conectarla a una base de datos local con VPN con alta disponibilidad y Cloud Router, consulta el codelab Cómo conectar Looker Cloud a través de redes híbridas.

Conexión a bases de datos alojadas por otros proveedores de servicios en la nube

Para configurar una conexión privada a bases de datos o servicios alojados por otros proveedores de servicios en la nube, se debe configurar tu proyecto de Google Cloud de modo que dirija el tráfico a esos proveedores de servicios en la nube para permitir el intercambio de datos. Obtén más información para conectar entornos de nube en la página de documentación Patrones para conectar otros proveedores de servicios en la nube con Google Cloud.

Otorga acceso a instancias de IP privadas

Para permitir que terceros externos a tu VPC interactúen con una instancia de Looker (Google Cloud Core) que solo tenga habilitada una IP privada, puedes configurar un servidor proxy y un dominio personalizado. En el resto de esta sección, se proporciona un ejemplo de cómo configurar un servidor proxy.

Antes de comenzar

Antes de configurar un servidor proxy, debes instalar Google Cloud CLI o actualizarlo a su versión más reciente.

Configurar 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 de IP privada. Aunque se pueden crear instancias de los servidores NGINX con configuraciones de IP pública o 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 es necesario que configures un servidor NGINX de manera específica.

  1. Crea un dominio personalizado. El dominio personalizado se asignará a la IP externa del servidor proxy cuando configures el registro DNS más adelante en este proceso.
  2. Abre Cloud Shell.

    Ir a Cloud Shell

  3. Ejecuta los siguientes comandos para crear una subred y una VM de NGINX de Ubuntu 18 con una IP pública habilitada en tu red de VPC:

    • Establece tus variables:

      PROJECT="PROJECT"
      NETWORK="NETWORK"
      SUBNETNAME="SUBNETNAME"
      IP_RANGE=IP_RANGE
      REGION="REGION"
      ZONE="ZONE"
      INSTANCE_NAME="INSTANCE_NAME"
      

      Reemplaza lo siguiente:

      • PROJECT: Es el ID 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 la instancia de Looker (Google Cloud Core).
      • SUBNETNAME: Puede ser una subred nueva que crees en este procedimiento o cualquier subred en tu red de VPC. No es necesario que coincida con el nombre de subred de tu instancia de Looker (Google Cloud Core).
      • IP_RANGE: Cualquier rango sin conflictos. Usa al menos /22 (por ejemplo, 10.10.0.0/22).
      • REGION: Es la región en la que deseas crear el servidor proxy.
      • ZONE: Es la zona en la que deseas crear el servidor proxy. Las zonas disponibles se pueden determinar ejecutando gcloud compute zones list.
      • INSTANCE_NAME: Es el nombre del servidor proxy.
    • Crea la subred (o bien, puedes usar una subred que se creó cuando creaste la red de VPC si usaste el modo automático para crear la red de VPC):

      gcloud compute networks subnets create $SUBNETNAME --network=$NETWORK \
      --range=$IP_RANGE --region=$REGION --project=$PROJECT
      
    • Crea la instancia de proxy:

      INSTANCE_EXTERNAL_IP=$(gcloud compute instances create $INSTANCE_NAME \
      --project=$PROJECT --zone=$ZONE --network=$NETWORK --subnet=$SUBNETNAME \
      --format="json" | jq '.[].networkInterfaces[].accessConfigs[].natIP')
      
    • Después de crear la instancia de proxy, ejecuta este comando para generar la dirección IP pública de tu instancia de proxy:

      echo $INSTANCE_EXTERNAL_IP
      

      Toma nota de la IP externa para más adelante en el procedimiento.

  4. Crea un firewall para permitir el tráfico a tu instancia en los puertos 80, 443 y 22 (o en otros puertos que NGINX escuche) ejecutando estos comandos:

    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
    
  5. Crea un registro DNS público con el dominio personalizado que configuraste para la instancia de Looker (Google Cloud Core) al comienzo de este proceso y que apunte a la dirección IP pública de la VM de NGINX que se generó después de la creación de la VM.

  6. Crea un certificado de terceros para acceder a la URL pública. En este ejemplo, se usa NGINX's Let's Encrypt para generar un certificado de Let's Encrypt, pero puede usar cualquier certificado de encriptación.

    • Conéctate 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 configurar 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;
      }
      

      Reemplaza SERVER_NAME por el nombre del registro DNS.

    • Vuelve a cargar NGINX:

      sudo nginx -t && sudo nginx -s reload
      
    • Genera un certificado:

      sudo certbot --nginx -d SERVER_NAME
      

      Reemplaza SERVER_NAME por el nombre del registro DNS.

  7. En el archivo nginx.config, reemplaza la configuración del servidor del paso anterior 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;
    }
    

    Reemplaza lo siguiente:

    • PRIVATE_IP_ADDRESS: 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 la consola de Google Cloud
    • SERVER_NAME: Es el nombre del registro DNS.
  8. Valida el archivo nginx.config y vuelve a cargarlo:

    sudo nginx -t && sudo nginx -s reload
    
  9. Después de validar la configuración y de enrutar el tráfico a la instancia de Looker (Google Cloud Core) y de haber configurado tu dominio personalizado, puedes ingresar el dominio personalizado de la instancia en la sección URI de redireccionamiento autorizados del cliente de OAuth. Para verla, navega a su URL, agrega usuarios, conecta Looker (Google Cloud Core) a tu base de datos y continúa con la configuración de la instancia.

    Próximos pasos