Rede IP privada com o Looker (Google Cloud Core)

Depois de configurar uma instância do Looker (Google Cloud Core) para usar apenas IP privado ou IP privado e público, configure sua rede para usar determinados recursos do Looker (Google Cloud Core) ou para permitir ou restringir a comunicação com serviços externos ou a Internet.

Limite a entrega de e-mails a domínios externos

Por padrão, as instâncias do Looker (Google Cloud Core) que usam apenas IP privado ou IP privado e público permitem a entrega de e-mails para domínios externos. Para restringir os domínios a que os usuários do Looker podem enviar e-mails, configure uma lista de permissões de domínios de e-mail.

Criar e acessar um domínio personalizado

Ao usar uma instância do Looker (Google Cloud Core) somente com IP privado, configure um domínio personalizado para acessar a instância. Além disso, você precisa configurar sua rede para fornecer acesso ao domínio personalizado de IP particular. O tipo de configuração depende das origens do tráfego da instância. Consulte a página de documentação Opções de rede de domínios personalizados para instâncias de IP particulares do Looker (Google Cloud Core) para conferir um resumo das opções de configuração e links para a documentação de cada opção.

Conectar uma instância de IP privado do Looker (Google Cloud Core) a serviços externos

As instâncias do Looker (Google Cloud Core) que usam apenas IPs privados ou IPs públicos e privados podem precisar de mais configurações para se conectar a serviços ou recursos fora da rede VPC da instância. As seções a seguir descrevem outras opções de configuração.

Conectar-se a outras VPCs usando o acesso a serviços particulares

Para usar IPs internos e se conectar a serviços em outras VPCs hospedadas pelo Google ou por terceiros, use o acesso a serviços particulares.

Durante a criação da instância do Looker (Google Cloud Core), você estabeleceu uma conexão de acesso a serviços particulares para conectar sua VPC ao serviço Looker (Google Cloud Core). Também é possível atualizar a alocação de IP de uma conexão atual de acesso a serviços particulares sem interromper o tráfego.

Para configurar uma conexão de acesso a serviços particulares:

  1. Aloque um intervalo de IP interno na sua rede VPC.
  2. Configure a conexão particular entre sua rede VPC e a rede do produtor de serviços usando o intervalo de IP alocado. Essa conexão particular estabelece uma conexão de peering de rede VPC entre sua VPC e a outra rede.

Conexões particulares são um relacionamento um para um entre sua rede VPC e um produtor de serviços. Se um único produtor de serviços oferecer vários serviços, você precisará apenas de uma conexão particular para todos eles.

Conectar-se a recursos no local ou serviços de terceiros

É possível usar uma das duas opções a seguir para conectar instâncias do Looker (Google Cloud Core) usando apenas IP privado ou IP privado e público a recursos locais ou serviços de terceiros:

Com qualquer um dos métodos, você precisará fazer o seguinte:

Cloud Interconnect e Cloud Router

O diagrama de rede a seguir mostra como o Cloud Interconnect e o Cloud Router interagem com o serviço Looker (Google Cloud Core) para se conectar a uma rede no local:

  1. O acesso a serviços particulares conecta o serviço Looker (Google Cloud Core) à VPC por endereços IP internos usando peering de VPC.
  2. O Cloud Router usa o protocolo de gateway de borda (BGP, na sigla em inglês) para divulgar os prefixos IP privados e programar as rotas dinâmicas com base nas divulgações do BGP que recebe de um peer. O Cloud Interconnect é usado para se conectar à rede no local.

Cloud VPN e Cloud Router

Para conferir um tutorial sobre como criar uma instância de IP privado e público do Looker (Google Cloud Core) e conectá-la a um banco de dados local usando o Cloud VPN e o Cloud Router, consulte o codelab Conectar o Looker Cloud usando uma rede híbrida.

Conectar-se a bancos de dados hospedados por outros provedores de serviços de nuvem

Para configurar uma conexão particular com bancos de dados ou serviços hospedados por outros provedores de serviços de nuvem, seu projeto do Google Cloud precisa ser configurado para rotear o tráfego para esses provedores e 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 com o Google Cloud.

Conceder acesso a instâncias de IP particulares

Para permitir que partes externas à VPC interajam com uma instância do Looker (Google Cloud Core) que tenha apenas IP privado ativado, configure um servidor proxy e um domínio personalizado. O restante desta seção fornece um exemplo de como configurar um servidor proxy.

Antes de começar

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

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 atual do Looker (Google Cloud Core) que tenha uma conexão de rede de 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. Não é necessário configurar um servidor NGINX especificamente.

  1. Criar um domínio personalizado. O domínio personalizado será mapeado para o IP externo do servidor proxy quando você configurar o registro DNS mais adiante neste processo.
  2. Abra o Cloud Shell.

    Acessar o Cloud Shell

  3. Execute os comandos a seguir para criar uma sub-rede e uma VM NGINX Ubuntu 18 com IP público ativado na rede VPC:

    • Defina as variáveis:

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

      Substitua:

      • PROJECT: o ID 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 sua instância do Looker (Google Cloud Core).
      • SUBNETNAME: pode ser uma nova sub-rede criada neste procedimento ou qualquer sub-rede na sua rede VPC. Ele não precisa corresponder ao nome de sub-rede da sua instância do Looker (Google Cloud Core).
      • IP_RANGE: qualquer intervalo não conflitante. Use pelo menos /22 (por exemplo, 10.10.0.0/22).
      • REGION: a região onde você quer criar o servidor proxy.
      • ZONE: a zona em que você quer criar o servidor proxy. As zonas disponíveis podem ser determinadas executando gcloud compute zones list.
      • INSTANCE_NAME: o nome do servidor proxy.
    • Crie a sub-rede. Como alternativa, você pode usar uma sub-rede criada quando criou a rede VPC, se tiver usado o modo automático para isso:

      gcloud compute networks subnets create $SUBNETNAME --network=$NETWORK \
      --range=$IP_RANGE --region=$REGION --project=$PROJECT
      
    • Crie a instância do proxy:

      INSTANCE_EXTERNAL_IP=$(gcloud compute instances create $INSTANCE_NAME \
      --project=$PROJECT --zone=$ZONE --network=$NETWORK --subnet=$SUBNETNAME \
      --format="json" | jq '.[].networkInterfaces[].accessConfigs[].natIP')
      
    • Depois de criar a instância do proxy, execute este comando para gerar o endereço IP público dela:

      echo $INSTANCE_EXTERNAL_IP
      

      Anote o IP externo para uso posterior no procedimento.

  4. Execute estes comandos para criar um firewall para permitir o tráfego para sua instância nas portas 80, 443 e 22 (ou outras portas que o NGINX vai ouvir):

    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. Crie um registro DNS público usando o domínio personalizado configurado para sua instância do Looker (Google Cloud Core) no início deste processo e apontando para o endereço IP público da VM do NGINX gerado após a criação da VM.

  6. Crie um certificado de terceiros para acessar o URL público. Este exemplo usa o Let's Encrypt do NGINX para gerar um certificado Let's Encrypt, mas você pode usar qualquer certificado de criptografia.

    • Conecte-se à 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 configurar o servidor e a porta 80 para detectar:

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

      Substitua SERVER_NAME pelo nome do registro DNS.

    • Atualize o NGINX:

      sudo nginx -t && sudo nginx -s reload
      
    • Gere um certificado:

      sudo certbot --nginx -d SERVER_NAME
      

      Substitua SERVER_NAME pelo nome do registro DNS.

  7. No arquivo nginx.config, substitua a configuração do servidor da etapa anterior pela seguinte, para transmitir o 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;
    }
    

    Substitua:

    • PRIVATE_IP_ADDRESS: o endereço IP particular atribuído à sua instância do Looker (Google Cloud Core), que pode ser visualizado na página DETALHES da instância no console do Google Cloud
    • SERVER_NAME: o nome do registro DNS.
  8. Valide o arquivo nginx.config e atualize-o:

    sudo nginx -t && sudo nginx -s reload
    
  9. Após a validação da configuração, o roteamento do tráfego para a instância do Looker (Google Cloud Core) e a configuração do domínio personalizado, insira o domínio personalizado da instância na seção URIs de redirecionamento autorizados do cliente OAuth. Em seguida, para conferir a instância, acesse o URL dela, adicione usuários, conecte o Looker (Google Cloud Core) ao seu banco de dados e continue a configuração da instância.

A seguir