Redes de IP privadas con Looker (Google Cloud Core)

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

Restringir el envío de correos electrónicos a dominios externos

De forma predeterminada, las instancias de Looker (Google Cloud Core) que usan solo IP privadas o tanto privadas como públicas permiten los envíos 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.

Crea un dominio personalizado y accede a él

Cuando usas una instancia de Looker (Google Cloud Core) de solo IP privada, debes configurar un dominio personalizado para acceder a la instancia. Además, debes configurar tu red para proporcionar acceso al dominio personalizado de IP privada. El tipo de configuración depende de los orígenes del tráfico de la instancia. Consulta la página de documentación Opciones de redes de dominio personalizado para instancias de IP privadas de Looker (Google Cloud Core) si quieres obtener un resumen de las opciones de configuración y vínculos a la documentación de cada opción.

Conecta una instancia de Looker con IP privada (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 pública o privada 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 los 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 la instancia de Looker (Google Cloud Core), creaste una conexión de acceso privado a servicios 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.

Sigue estos pasos para configurar una conexión de acceso privado a servicios:

  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 red del productor de servicios con 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 un 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 opciones para conectar instancias de Looker (Google Cloud Core) usando solo una IP privada o ambas con 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
  • Configurar un anuncio de ruta personalizado de la subred de acceso privado a servicios de Looker (Google Cloud Core) en todos los Cloud Routers que se implementan en la VPC de Looker (Google Cloud Core).
  • Actualizar tus firewalls locales para permitir el tráfico con la subred de Looker (Google Cloud Core).
  • Configura 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 Cloud Interconnect y Cloud Router interactúan con el servicio de Looker (Google Cloud Core) para conectarse a una red local:

  1. El acceso privado a 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 programar rutas dinámicas según los anuncios de BGP que recibe de un intercambio de tráfico. Cloud Interconnect se usa para conectarse a la red local.

Cloud VPN y Cloud Router

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

Conectarse a bases de datos alojadas por otros proveedores de servicios en la nube

Para 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 y 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 las partes externas a tu VPC interactúen con una instancia de Looker (Google Cloud Core) que solo tenga habilitada la 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 o actualizar a la versión más reciente de Google Cloud CLI.

Configurar un servidor proxy

En el siguiente ejemplo, se muestra cómo usar la línea de comandos para configurar un servidor proxy NGINX para una instancia existente de Looker (Google Cloud Core) que tiene una conexión de red IP privada habilitada. Aunque se pueden crear instancias de los servidores NGINX con configuraciones de IP pública o IP privada (con acceso a VPN permitido), en este ejemplo, se muestra una configuración de IP pública.

Puedes usar cualquier servidor web que se pueda configurar como servidor proxy inverso. No tienes que configurar un servidor NGINX específicamente.

  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 IP pública habilitada en tu red de VPC:

    • Configura 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 tu 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 tiene que coincidir con el nombre de la 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. Para determinar las zonas disponibles, ejecuta gcloud compute zones list.
      • INSTANCE_NAME: Es el nombre del servidor proxy.
    • Crea la subred (o una subred creada cuando creaste tu red de VPC, si usaste el modo automático para crear tu 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 usarla más adelante en el procedimiento.

  4. Ejecuta los siguientes comandos para crear un firewall que permita el tráfico a tu instancia en los puertos 80, 443 y 22 (o en otros puertos que NGINX escuche):

    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 usando el dominio personalizado que configuraste para tu 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 su creación.

  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 Let's Encrypt, pero puedes 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 para 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;
      }
      

      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. Una vez que se haya validado la configuración y se enrute el tráfico a la instancia de Looker (Google Cloud Core) y hayas configurado tu dominio personalizado, puedes ingresar el dominio personalizado de la instancia en la sección URI de redireccionamiento autorizado del cliente de OAuth. Para ver la instancia, 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