Conectividade de rede em serviços gerenciados do Google Cloud

Esta página descreve como configurar a conectividade particular dos Integration Connectors ao seu serviço de back-end, como o CloudSQL para MySQL, o CloudSQL para PostgreSQL e o CloudSQL para SQL Server. Nesta página, consideramos que você esteja familiarizado com os seguintes conceitos:

Considerações

Ao criar um anexo de serviço do PSC, considere os seguintes pontos principais:

  • O anexo de serviço do PSC e o balanceador de carga são criados em sub-redes diferentes na mesma VPC. E, especificamente, o anexo de serviço é sempre criado em uma sub-rede NAT.
  • Os servidores proxy SOCKS5 precisam estar vinculados ao endereço IP 0.0.0.0:<port>, porque isso é necessário para o tráfego de entrada do balanceador de carga e das sondagens de verificação de integridade. Para mais informações, consulte Verificação de integridade.
  • O tráfego do balanceador de carga e da sondagem de verificação de integridade precisa ser enviado para a mesma porta.
  • Configure as regras de firewall para facilitar o fluxo de tráfego.

    Regras de entrada

    • O tráfego da sub-rede do anexo do serviço PSC precisa chegar ao seu serviço de back-end.
    • Na sub-rede do ILB, ele precisa enviar tráfego para os servidores proxy SOCKS5.
    • A sondagem de verificação de integridade precisa acessar os servidores proxy SOCKS5. As sondagens de verificação de integridade do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Portanto, esses IPs podem ser permitidos para enviar tráfego aos servidores proxy SOCKS.

    Regras de saída

    O tráfego de saída é ativado por padrão em um projeto do Google Cloud, a menos que regras de negação específicas sejam configuradas.

  • Todos os componentes do Google Cloud, como o anexo do serviço do PSC e o balanceador de carga, precisam estar na mesma região.
  • Verifique se os servidores proxy SOCKS5 aceitam tráfego nos seguintes cenários:
    • Balanceadores de carga de passagem (ILB TCP/UDP L4) : as solicitações dos IPs NAT do anexo do serviço PSC precisam alcançar os servidores proxy SOCKS5. Portanto, é necessário permitir todo o intervalo de IP da sub-rede NAT para o anexo de serviço. Para mais informações, consulte Sub-redes do Private Service Connect.
    • Balanceadores de carga baseados em proxy/HTTP(s) (ILB de proxy L4, ILB L7) : todas as novas solicitações são originadas do balanceador de carga. Portanto, seus servidores de proxy SOCKS5 precisam aceitar solicitações da sub-rede de proxy da sua rede VPC. Para mais informações, consulte Sub-redes somente proxy para balanceadores de carga baseados no Envoy.

Configurar a conectividade particular

Alguns dos serviços gerenciados do Google Cloud, como o CloudSQL MySQL, expõem um anexo de serviço do PSC para conectividade particular. Nesses casos, você pode pular esta etapa para criar um anexo de serviço do PSC, e o anexo de serviço do PSC fornecido pelo serviço gerenciado pode ser usado para criar o anexo de endpoint Integration Connectors.

Crie um novo anexo de serviço do PSC nos seguintes cenários:

  • O serviço gerenciado do Google Cloud não expõe um anexo de serviço, mas um endereço IP usando o acesso a serviços privados.
  • O serviço gerenciado do Google Cloud expõe um anexo de serviço, mas não permite a inclusão do projeto Integration Connectors na lista de permissões para consumir o anexo de serviço.

As etapas para criar o anexo de serviço para esses dois cenários são descritas em detalhes nas seções a seguir. Depois de criar o anexo de serviço, crie um anexo de endpoint e configure uma conexão para usar o anexo de endpoint.

Criar um anexo de serviço para um serviço gerenciado que restringe o acesso

O serviço gerenciado pode não permitir que o projeto de Integration Connectors seja incluído na lista de permissões para consumir o anexo de serviço que ele expõe. Nesse caso, é necessário criar um balanceador de carga que consuma o anexo de serviço e o exponha aos Integration Connectors. Para isso, crie outro anexo de serviço no seu projeto.

A imagem a seguir mostra um serviço gerenciado que expõe um anexo de serviço:

Para conferir um exemplo de serviço gerenciado que expõe um anexo de serviço, consulte Conectividade privada para um cluster do MongoDB Atlas.

Criar um balanceador de carga com o PSC NEG como back-end

  1. Crie um NEG para se conectar a um serviço publicado.
  2. Adicione um back-end a um balanceador de carga de rede de proxy interno regional.

Para mais informações, consulte Criar uma NEG do Private Service Connect.

Criar um anexo de serviço

  1. Crie uma sub-rede para a NAT PSC.
  2. Crie uma regra de firewall para permitir a solicitação do PSC NAT ao balanceador de carga
  3. Crie um anexo de serviço.

Para mais informações, consulte Criar um anexo de serviço do PSC.

Permitir a conexão do Private Service Connect no projeto de Integration Connectors

Para informações sobre como adicionar a conexão do Private Service Connect à lista de permissões do projeto Integration Connectors, consulte Adicionar os Integration Connectors à lista de permissões.

Criar um anexo de serviço para um serviço gerenciado que expõe o endereço IP

Se o serviço gerenciado não expor um anexo de serviço, o tráfego dos Integration Connectors precisará ser encapsulado pelo seu projeto.

A imagem a seguir mostra um serviço gerenciado que não expõe um anexo de serviço:

Para configurar a conectividade privada, siga estas etapas:

  1. Crie um anexo de serviço do PSC.
    1. Crie instâncias de VM do Compute Engine para executar servidores proxy SOCKS5.
      1. Crie a instância de proxy 1.
        gcloud compute instances create PROXY_INSTANCE_1 \
                    --project=PROJECT_ID \
                    --network-interface=network-tier=PREMIUM,subnet=SUBNET_NAME_2,no-address
                  

      Com base no requisito, é possível criar quantas instâncias de VM forem necessárias.

    2. Crie uma regra de firewall para permitir o SSH nas instâncias de VM.
      gcloud compute firewall-rules create FIREWALL_RULE_NAME_SSH \
                  --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:22
                  
    3. A instância de VM será usada para servir como proxy do tráfego dos Integration Connectors para o serviço gerenciado. Instale um proxy SOCKS5 na instância de VM. O proxy de autenticação do Cloud SQL oferece suporte à vinculação por um proxy SOCKS5, que permite encaminhar o tráfego criptografado do proxy de autenticação do Cloud SQL para a instância de destino do Cloud SQL. Portanto, você precisa de servidores proxy SOCKS5 para se conectar a uma instância privada do Cloud SQL.

      As etapas detalhadas para instalar e configurar um servidor proxy SOCKS5 estão fora do escopo deste documento. Você pode instalar qualquer proxy SOCKS5 de sua preferência. As etapas a seguir mostram como instalar e configurar o servidor de proxy SOCKS5 do Dante.

      1. Acesse a instância de VM usando SSH.
        gcloud compute ssh \
                    --tunnel-through-iap \
                    PROXY_INSTANCE_1
                
      2. Instale o servidor proxy SOCKS5 Dante.
        sudo apt update
                sudo apt install dante-server
      3. Verifique a interface do servidor.
        sudo ip a
      4. Crie um backup da configuração do Dante.
        sudo mv /etc/danted.conf /etc/danted.conf.bak
      5. Crie um novo arquivo de configuração do Dante.
        sudo nano /etc/danted.conf
      6. Copie a seguinte configuração para o arquivo de configuração:
        logoutput: /var/log/socks.log
                # Bind the server to the 0.0.0.0 IP address to allow traffic
                # traffic from the load balancer and the health check probes.
                internal: 0.0.0.0 port = 1080
                external: ens4
                clientmethod: none
                socksmethod: none
                user.privileged: root
                user.notprivileged: nobody
                client pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                client block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
                socks pass {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: error connect disconnect
                }
                socks block {
                        from: 0.0.0.0/0 to: 0.0.0.0/0
                        log: connect error
                }
      7. Reinicie o servidor Dante e verifique o status.
        sudo systemctl restart danted
                sudo systemctl status danted
      8. Saia da instância da VM.
        exit
    4. Crie um balanceador de carga com a instância de VM como back-end.
      1. Crie um grupo de instâncias não gerenciadas.
        gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME
      2. Adicione as instâncias de VM criadas na etapa 3 ao grupo.
        gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
                    --instances=PROXY_INSTANCE_1
      3. Crie uma verificação de integridade e permita o tráfego dela.
        1. Crie a sondagem de verificação de integridade.
          gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
                      --port BACKEND_SERVER_PORT --region=REGION

          Nesse comando, defina BACKEND_SERVER_PORT como 1080, que é a porta padrão em que os servidores proxy SOCKS5 são executados.

        2. Crie uma regra de firewall para permitir o tráfego da sonda.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_HEALTHCHECK \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT \
                      --source-ranges=35.191.0.0/16,130.211.0.0/22
      4. Crie um balanceador de carga interno L4 e permita o tráfego dele.
        1. Crie um serviço de back-end.
          gcloud compute backend-services create BACKEND_SERVICE \
                      --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME \
                      --health-checks-region=REGION 
        2. Adicione o grupo de instâncias ao serviço de back-end.
          gcloud compute backend-services add-backend BACKEND_SERVICE \
                      --instance-group=INSTANCE_GROUP_NAME \
                      --instance-group-zone=ZONE
        3. Crie uma regra de encaminhamento.
          gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
                      --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
                      --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
                      --backend-service-region=REGION
        4. Crie uma regra de firewall para permitir o tráfego interno do balanceador de carga para o grupo de instâncias.
          gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
                      --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
                      --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2

      Criar um anexo de endpoint

      Depois de criar um anexo de serviço para um serviço gerenciado, você precisa criar um anexo de endpoint e usá-lo na conexão.

      Anexo de endpoint como um endereço IP

      Para instruções sobre como criar um anexo de endpoint como um endereço IP, consulte Criar um anexo de endpoint como um endereço IP.

      Anexo de endpoint como um nome de host

      Em alguns casos, como back-ends com TLS ativado, o destino exige o uso de nomes de host em vez de IPs particulares para realizar a validação de TLS. Nos casos em que um DNS particular é usado em vez de um endereço IP para o destino do host, além de criar um anexo de endpoint como um endereço IP, também é necessário configurar zonas gerenciadas. Para instruções sobre como criar um anexo de endpoint como um nome de host, consulte Criar um anexo de endpoint como um nome de host.

      Depois, quando você configurar a conexão para usar o anexo de endpoint, poderá selecionar esse anexo.

      Configurar uma conexão para usar o anexo do endpoint

      Agora que você criou um anexo de endpoint, use-o na sua conexão. Ao criar ou atualizar uma conexão, na seção "Destinos", selecione Anexo de endpoint como Tipo de destino e selecione o anexo de endpoint criado na lista Anexo de endpoint.

      Se você criou uma zona gerenciada, selecione Endereço do host como Tipo de destino e use o registro A criado ao criar a zona gerenciada.

      Dicas de solução de problemas

      Se você tiver problemas com a conectividade particular, siga as diretrizes listadas nesta seção para evitar problemas comuns.

      • Verifique se o projeto do locatário do conector está na lista de permissões do anexo de serviço.
      • Verifique se as regras de firewall estão configuradas da seguinte forma:
        • O tráfego da sub-rede do anexo do serviço do PSC precisa ser permitido para chegar ao serviço de back-end.
        • A sondagem de verificação de integridade precisa acessar seu sistema de back-end. As sondagens de verificação de integridade do Google Cloud têm um intervalo de IP fixo (35.191.0.0/16, 130.211.0.0/22). Portanto, esses endereços IP precisam ter permissão para enviar tráfego ao servidor de back-end.
      • O teste de conectividade do Google Cloud pode ser usado para identificar lacunas na configuração da rede. Para mais informações, consulte Criar e executar testes de conectividade.