Configurar uma instância de IP privado do Looker (Google Cloud Core)

Depois de configurar uma instância do Looker (Google Cloud Core) com uma conexão IP privada, configure a instância ou o projeto do Google Cloud para usar determinados Looker (Google Cloud Core) Looker ou para permitir ou restringir a comunicação com serviços externos ou com a Internet.

Como restringir entregas de e-mail para domínios externos

Por padrão, as instâncias do Looker (Google Cloud Core) que usam uma configuração de IP particular permitem a entrega de e-mails para domínios externos. Para restringir os domínios aos quais os usuários do Looker podem enviar entregas de e-mail, configure uma lista de permissões de domínio de e-mail.

Como conectar uma instância privada de Looker IP (Google Cloud Core) a serviços externos

As instâncias do Looker (Google Cloud Core) que usam uma rede IP particular podem exigir configuração adicional do projeto do Google Cloud para se conectar a serviços ou recursos fora de um perímetro do VPC Service Controls. As opções de configuração são descritas nas seções a seguir.

Como se conectar a um recurso ou serviço do Google Cloud

Para se conectar a outro recurso ou serviço do Google Cloud, talvez seja necessário configurar regras de entrada e saída se o projeto em que o recurso está estiver localizado fora do perímetro do VPC Service Controls. Para informações sobre como configurar uma conexão privada a fontes de dados hospedadas por outro provedor de serviços de nuvem, consulte esta página.

Como se conectar a bancos de dados hospedados por outros provedores de serviços em nuvem

Para que você possa configurar uma conexão particular com bancos de dados ou serviços hospedados por outros provedores de serviços em nuvem, seu projeto do Google Cloud precisa estar configurado para rotear o tráfego para esses provedores de serviços de nuvem a fim de permitir a troca de dados. Saiba mais sobre como conectar ambientes de nuvem na página de documentação Padrões para conectar outros provedores de serviços de nuvem ao Google Cloud.

Como se conectar a recursos locais

Para configurar uma conexão particular com bancos de dados locais, use o Cloud VPN. Você precisará configurar uma rota dinâmica na sua VPC para cada banco de dados local. Se você tiver configurado o encaminhamento de DNS para o projeto em que a instância do Looker (Google Cloud Core) reside, o Looker poderá se conectar a todos os recursos locais.

Como se conectar a outros serviços da Internet

Para se conectar a serviços baseados na Internet, você precisa configurar uma rota dinâmica na VPC para cada serviço. Também é possível usar o Cloud NAT para criar conexões de saída.

Conceder acesso público a instâncias de IP privadas

Para controlar melhor como as partes externas interagem com sua instância do Looker (Google Cloud Core), é possível configurar um servidor proxy para conceder acesso à Internet pública a uma instância que tenha apenas IP privado ativado.

Antes de começar

Antes de configurar um servidor proxy, instale ou atualize para a versão mais recente da Google Cloud CLI.

Configurar um servidor proxy

O exemplo a seguir mostra como usar a linha de comando para configurar um servidor proxy NGINX para uma instância existente do Looker (Google Cloud Core) que tem uma conexão de rede IP privado ativada. Embora os servidores NGINX possam ser instanciados com configurações de IP público ou IP privado (com acesso à VPN permitido), este exemplo demonstra uma configuração de IP público.

Você pode usar qualquer servidor da Web que possa ser configurado como um servidor proxy reverso. Você não precisa configurar um servidor NGINX especificamente.

  1. Usando a linha de comando, crie uma sub-rede e uma VM NGINX do Ubuntu 18 com IP público ativado na sua rede VPC. Basta executar estes 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 é o nome do projeto do Google Cloud em que você criou a instância do Looker (Google Cloud Core).
    • NETWORK é o nome da rede VPC que você configurou para a instância do Looker (Google Cloud Core).
    • Defina IP_RANGE como pelo menos /22 (por exemplo, 10.10.0.0/22).
    • SUBNETNAME pode ser qualquer nome. Não precisa corresponder ao nome da sub-rede da sua instância do Looker (Google Cloud Core).
    • ZONE pode ser determinado executando gcloud compute zones list.
    • INSTANCE_NAME pode ser chamado de qualquer coisa. Isso se refere ao nome da sua instância de VM.

    Depois de executar os dois comandos gcloud, execute este comando:

    echo $INSTANCE_EXTERNAL_IP
    

    Isso gera o endereço IP público da sua instância de VM.

  2. Crie um firewall para permitir o tráfego para sua instância nas portas 80, 443 e 22 (ou outras portas que o NGINX detectará) executando estes 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
    
  3. Crie um certificado de terceiros para acessar o URL público. Este exemplo usa Let's Encrypt do NGINX para gerar um certificado Let's Encrypt, mas você pode usar qualquer certificado de criptografia.

    Faça login na VM do NGINX.

    Instale a ferramenta Let's Encrypt:

    sudo apt-get update
    sudo apt-get install certbot python3-certbot-nginx
    

    Acesse o arquivo nginx.config:

    sudo vi /etc/nginx/sites-available/default
    

    No arquivo nginx.config, substitua a configuração do servidor atual para definir o servidor e a porta 80 para escutar:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name SERVER_NAME>;
    }
    
    • SERVER_NAME é o nome do registro DNS do domínio personalizado para sua instância do Looker (Google Cloud Core).

    Atualize o NGINX:

    sudo nginx -t && sudo nginx -s reload
    

    Gere um certificado:

    sudo certbot --nginx -d SERVER_NAME
    
    • SERVER_NAME é o nome do registro DNS do domínio personalizado para sua instância do Looker (Google Cloud Core).
  4. No arquivo nginx.config, substitua a configuração do servidor da Etapa 3 pela seguinte configuração do servidor para transmitir tráfego à sua instância do 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 é o endereço IP particular atribuído à sua instância do Looker (Google Cloud Core), que você pode ver na página DETALHES da instância no Console do Google Cloud.
    • SERVER_NAMEé o nome do registro DNS do domínio personalizado da sua instância do Looker (Google Cloud Core).
  5. Valide o arquivo nginx.config e atualize-o:

    sudo nginx -t && sudo nginx -s reload
    

    A seguir