Networking IP privato con Looker (Google Cloud core)

Dopo aver configurato un'istanza di Looker (Google Cloud core) in modo che utilizzi solo IP privato o sia IP privato che IP pubblico, puoi configurare la tua rete in modo da utilizzare determinate funzionalità di Looker (Google Cloud core) o consentire o limitare la comunicazione con servizi esterni o internet.

Limitare la consegna di email a domini esterni

Per impostazione predefinita, le istanze di Looker (Google Cloud core) che utilizzano solo IP privato o IP privato e pubblico consentono il recapito di email ai domini esterni. Per limitare i domini a cui gli utenti di Looker possono inviare consegne via email, puoi configurare una lista consentita di domini email.

Creare e accedere a un dominio personalizzato

Quando utilizzi un'istanza di Looker solo con IP privato (Google Cloud core), devi configurare un dominio personalizzato per accedere all'istanza. Inoltre, devi configurare la rete in modo da fornire l'accesso al dominio personalizzato con IP privato. Il tipo di configurazione dipende dalle origini del traffico dell'istanza. Consulta la pagina della documentazione Opzioni di networking del dominio personalizzate per istanze IP privati di Looker (Google Cloud core) per un riepilogo delle opzioni di configurazione e i link alla documentazione per ogni opzione.

Connetti un'istanza di Looker con IP privato (Google Cloud core) a servizi esterni

Le istanze di Looker (Google Cloud core) che utilizzano solo IP privato o IP sia privato che pubblico potrebbe richiedere una configurazione aggiuntiva per connettersi a servizi o risorse esterni alla rete VPC dell'istanza. Le seguenti sezioni descrivono ulteriori opzioni di configurazione.

Connettiti ad altri VPC utilizzando l'accesso privato ai servizi

Per utilizzare gli IP interni per connetterti a servizi in altri VPC ospitati da Google o da terze parti, puoi utilizzare l'accesso privato ai servizi.

Durante la creazione dell'istanza di Looker (Google Cloud core) hai creato una connessione di accesso privato ai servizi per connettere il tuo VPC al servizio Looker (Google Cloud core). Puoi anche aggiornare l'allocazione IP di una connessione di accesso privato ai servizi esistente senza interrompere il traffico.

Per configurare una connessione di accesso privato ai servizi:

  1. Alloca un intervallo IP interno nella tua rete VPC.
  2. Configura la connessione privata tra la tua rete VPC e la rete del producer di servizi, utilizzando l'intervallo IP allocato. Questa connessione privata stabilisce una connessione di peering di rete VPC tra il VPC e l'altra rete.

Le connessioni private sono una relazione one-to-one tra la tua rete VPC e un producer di servizi. Se un singolo producer di servizi offre più servizi, è necessaria una sola connessione privata per tutti i servizi del producer.

Connettiti a risorse on-premise o a servizi di terze parti

Puoi utilizzare una delle due opzioni seguenti per connettere le istanze di Looker (Google Cloud core) utilizzando solo IP privato oppure IP privato e pubblico a risorse on-premise o servizi di terze parti:

Con entrambi i metodi, dovrai:

  • Configura una route dinamica nel VPC di Looker (Google Cloud core) per ogni risorsa on-premise.
  • Configura una pubblicità di route personalizzata della subnet di accesso ai servizi privati di Looker (Google Cloud core) su tutti i router Cloud di cui è stato eseguito il deployment nel VPC di Looker (Google Cloud core).
  • Aggiorna i firewall on-premise per consentire il traffico con la subnet Looker (Google Cloud core).
  • Configura il forwarding DNS, che consentirà a Looker (Google Cloud core) di connettersi a qualsiasi risorsa on-premise.

Cloud Interconnect e router Cloud

Il seguente diagramma di rete mostra in che modo Cloud Interconnect e il router Cloud interagiscono con il servizio Looker (Google Cloud core) per connettersi a una rete on-premise:

  1. L'accesso privato ai servizi connette il servizio Looker (Google Cloud core) al VPC su indirizzi IP interni utilizzando il peering VPC.
  2. Il router Cloud utilizza il protocollo BGP (Border Gateway Protocol) per pubblicizzare i prefissi IP privati e programmare le route dinamiche in base agli annunci BGP che riceve da un peer. Cloud Interconnect viene utilizzato per connettersi alla rete on-premise.

Cloud VPN e router Cloud

Per una procedura dettagliata su come creare un'istanza Looker con IP pubblico e privato di Looker (Google Cloud core) e connetterla a un database on-premise utilizzando Cloud VPN e il router Cloud, consulta il codelab Collegare Looker Cloud su rete ibrida.

Connettersi a database ospitati da altri provider di servizi cloud

Per impostare una connessione privata a database o servizi ospitati da altri fornitori di servizi cloud, il progetto Google Cloud deve essere configurato in modo da instradare il traffico a questi fornitori di servizi cloud per consentire lo scambio di dati. Scopri di più sulla connessione di ambienti cloud nella pagina della documentazione Pattern per la connessione di altri provider di servizi cloud con Google Cloud.

Concedi l'accesso alle istanze IP private

Per consentire a parti esterne al tuo VPC di interfacciarsi con un'istanza di Looker (Google Cloud core) in cui è abilitato solo l'IP privato, puoi configurare un server proxy e un dominio personalizzato. Il resto di questa sezione fornisce un esempio di come configurare un server proxy.

Prima di iniziare

Per poter configurare un server proxy, devi prima installare o eseguire l'aggiornamento alla versione più recente di Google Cloud CLI.

Configurare un server proxy

L'esempio seguente mostra come utilizzare la riga di comando per configurare un server proxy NGINX per un'istanza di Looker (Google Cloud core) esistente con una connessione di rete IP privato abilitata. Sebbene sia possibile creare un'istanza per i server NGINX utilizzando configurazioni con IP pubblico o IP privato (con accesso VPN consentito), questo esempio mostra una configurazione IP pubblica.

Puoi utilizzare qualsiasi server web che possa essere configurato come server proxy inverso. Non devi configurare un server NGINX specifico.

  1. Crea un dominio personalizzato. Il dominio personalizzato verrà mappato all'IP esterno del server proxy quando configurerai il record DNS in una fase successiva del processo.
  2. Apri Cloud Shell.

    Vai a Cloud Shell

  3. Crea una subnet e una VM NGINX Ubuntu 18 con IP pubblico abilitato nella tua rete VPC eseguendo questi comandi:

    • Imposta le variabili:

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

      Sostituisci quanto segue:

      • PROJECT: l'ID del progetto Google Cloud in cui hai creato la tua istanza di Looker (Google Cloud core).
      • NETWORK: il nome della rete VPC che hai configurato per la tua istanza di Looker (Google Cloud core).
      • SUBNETNAME: può essere una nuova subnet creata in questa procedura o qualsiasi subnet nella tua rete VPC; non deve necessariamente corrispondere al nome della subnet della tua istanza di Looker (Google Cloud core).
      • IP_RANGE: qualsiasi intervallo non in conflitto. Utilizza almeno /22 (ad es. 10.10.0.0/22).
      • REGION: la regione in cui vuoi creare il server proxy.
      • ZONE: la zona in cui vuoi creare il server proxy. Le zone disponibili possono essere determinate eseguendo gcloud compute zones list.
      • INSTANCE_NAME: il nome del server proxy.
    • Crea la subnet. In alternativa, puoi utilizzare una subnet creata durante la creazione della tua rete VPC, se per creare la tua rete VPC hai utilizzato la modalità automatica:

      gcloud compute networks subnets create $SUBNETNAME --network=$NETWORK \
      --range=$IP_RANGE --region=$REGION --project=$PROJECT
      
    • Crea l'istanza proxy:

      INSTANCE_EXTERNAL_IP=$(gcloud compute instances create $INSTANCE_NAME \
      --project=$PROJECT --zone=$ZONE --network=$NETWORK --subnet=$SUBNETNAME \
      --format="json" | jq '.[].networkInterfaces[].accessConfigs[].natIP')
      
    • Dopo aver creato l'istanza proxy, esegui questo comando per generare l'indirizzo IP pubblico dell'istanza proxy:

      echo $INSTANCE_EXTERNAL_IP
      

      Prendi nota dell'IP esterno per una fase successiva della procedura.

  4. Crea un firewall per consentire il traffico verso la tua istanza sulle porte 80, 443 e 22 (o su altre porte su cui NGINX resterà in ascolto) eseguendo questi comandi:

    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 record DNS pubblico utilizzando il dominio personalizzato che hai configurato per l'istanza di Looker (Google Cloud core) all'inizio di questo processo e puntando all'indirizzo IP pubblico della VM NGINX restituito all'output dopo la creazione della VM.

  6. Crea un certificato di terze parti per accedere all'URL pubblico. In questo esempio viene usato NGINX's Let's Encrypt per generare un certificato Let's Encrypt, ma puoi usare qualsiasi certificato di crittografia.

    • Connettiti alla VM NGINX.

    • Installa lo strumento Let's Encrypt:

      sudo apt-get update
      sudo apt-get install certbot python3-certbot-nginx
      
    • Accedi al file nginx.config:

      sudo vi /etc/nginx/sites-available/default
      
    • Nel file nginx.config, sostituisci la configurazione del server esistente per impostare il server e la porta 80 per l'ascolto:

      server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name SERVER_NAME;
      }
      

      Sostituisci SERVER_NAME con il nome del record DNS.

    • Ricarica NGINX:

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

      sudo certbot --nginx -d SERVER_NAME
      

      Sostituisci SERVER_NAME con il nome del record DNS.

  7. Nel file nginx.config, sostituisci la configurazione del server del passaggio precedente con quella seguente per trasmettere il traffico alla tua istanza di 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;
    }
    

    Sostituisci quanto segue:

    • PRIVATE_IP_ADDRESS: l'indirizzo IP privato assegnato all'istanza di Looker (Google Cloud core), che puoi visualizzare nella pagina DETTAGLI dell'istanza nella console Google Cloud.
    • SERVER_NAME: il nome del record DNS.
  8. Convalida il file nginx.config e ricaricalo:

    sudo nginx -t && sudo nginx -s reload
    
  9. Dopo che la configurazione è stata convalidata e il traffico è stato instradato all'istanza di Looker (Google Cloud core) e hai configurato il tuo dominio personalizzato, puoi inserire il dominio personalizzato dell'istanza nella sezione URI di reindirizzamento autorizzati del client OAuth. Quindi puoi visualizzare l'istanza accedendo all'URL dell'istanza, aggiungi utenti, connetti Looker (Google Cloud core) al tuo database e continua la configurazione dell'istanza.

Che cosa succede dopo?