Networking di IP privati 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 sia IP pubblico, puoi configurare la rete per utilizzare determinate funzionalità di Looker (Google Cloud core) o per consentire o limitare la comunicazione con servizi esterni o internet.

Limitazione del recapito delle email a domini esterni

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

Connessione di 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 possono richiedere una configurazione aggiuntiva per connettersi a servizi o risorse al di fuori della rete VPC dell'istanza. Le seguenti sezioni descrivono ulteriori opzioni di configurazione.

Connessione ad altri VPC tramite 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 degli 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 tuo 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, sarà sufficiente una sola connessione privata per tutti i servizi del producer.

Connessione a risorse on-premise o servizi di terze parti

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

Con entrambi i metodi, dovrai fare quanto segue:

  • Configura una route dinamica nel tuo VPC di Looker (Google Cloud core) per ogni risorsa on-premise.
  • Configura un annuncio di route personalizzate della subnet di accesso privato ai servizi Looker (Google Cloud core) su tutti i router Cloud di cui viene 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).
  • Configurare l'inoltro 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 tramite indirizzi IP interni tramite 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 di Looker con IP privato e pubblico (Google Cloud core) e connetterla a un database on-premise utilizzando la VPN ad alta disponibilità e il router Cloud, consulta il codelab su connettere Looker Cloud su networking ibrido.

Connessione a database ospitati da altri provider di servizi cloud

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

Concedi l'accesso alle istanze IP private

Per consentire a parti esterne al 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. La parte restante di questa sezione fornisce un esempio di come configurare un server proxy.

Prima di iniziare

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

Configura 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 in cui è abilitata una connessione di rete IP privato. Sebbene sia possibile creare un'istanza dei server NGINX con configurazioni di IP pubblico o IP privato (con accesso VPN consentito), questo esempio mostra una configurazione di IP pubblico.

Puoi utilizzare qualsiasi server web che possa essere configurato come server proxy inverso. Non è necessario configurare specificamente un server NGINX.

  1. Crea un dominio personalizzato. Il dominio personalizzato verrà mappato all'indirizzo IP esterno del server proxy quando configurerai il record DNS più avanti nella procedura.
  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 l'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 una subnet della 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 esempio, 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 al momento della creazione della rete VPC se hai utilizzato la modalità automatica per creare la rete VPC:

      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 le fasi successive della procedura.

  4. Crea un firewall per consentire il traffico all'istanza sulle porte 80, 443 e 22 (o su altre porte che NGINX è 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 configurato per l'istanza di Looker (Google Cloud core) all'inizio di questo processo e puntando all'indirizzo IP pubblico della VM NGINX generato dopo la creazione della VM.

  6. Crea un certificato di terze parti per accedere all'URL pubblico. In questo esempio viene utilizzato Let's Encrypt di NGINX per generare un certificato Let's Encrypt, ma puoi utilizzare 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 la seguente configurazione del server, per passare il traffico alla tua istanza 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 alla tua 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 è indirizzato all'istanza di Looker (Google Cloud core) e hai configurato il dominio personalizzato, puoi inserire il dominio personalizzato dell'istanza nella sezione URI di reindirizzamento autorizzati del client OAuth. Per visualizzare l'istanza, vai al relativo URL, aggiungi utenti, connetti Looker (Google Cloud core) al tuo database e continua con la configurazione dell'istanza.

    Che cosa succede dopo?