Conectividade de rede nos serviços gerenciados do Google Cloud

Nesta página, descrevemos como configurar a conectividade particular dos Integration Connectors ao seu serviço de back-end, como CloudSQL para MySQL, CloudSQL para PostgreSQL e 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. Especificamente, o anexo de serviço é sempre criado em uma sub-rede NAT.
  • Os servidores proxy SOCKS5 precisam ser 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 de serviço do PSC precisa chegar ao serviço de back-end.
    • Na sub-rede do ILB, ele precisa conseguir 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 autorizados a enviar tráfego para os servidores proxy SOCKS.

    Regras de saída

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

  • Todos os componentes do Google Cloud, como o anexo de 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 de serviço do PSC precisam alcançar os servidores proxy SOCKS5. Portanto, permita todo o intervalo de IPs 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 se originam do balanceador de carga. Portanto, os servidores proxy SOCKS5 precisam aceitar solicitações da sub-rede de proxy da 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 privada. Nesses casos, é possível pular esta etapa para criar um anexo de serviço do PSC. O anexo de serviço do PSC fornecido pelo serviço gerenciado pode ser usado para criar o anexo de endpoint do Integration Connectors.

É necessário criar um 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 particulares.
  • O serviço gerenciado do Google Cloud expõe um anexo de serviço, mas não permite adicionar o projeto do Integration Connectors à lista de permissões para consumir o anexo de serviço.

As etapas para criar o encadeamento de serviço nesses dois cenários estão descritas em detalhes nas seções a seguir. Depois de criar o anexo de serviço, é necessário criar um anexo de endpoint e configurar uma conexão para usar o anexo de endpoint.

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

Talvez o serviço gerenciado não permita que o projeto do Integration Connectors seja incluído na lista de permissões para consumir o anexo de serviço que ele expõe. Nesse caso, crie um balanceador de carga que consuma o anexo de serviço e exponha o balanceador de carga aos Integration Connectors criando 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 um exemplo de serviço gerenciado que expõe um anexo de serviço, consulte Conectividade particular para um cluster do MongoDB Atlas.

Criar um balanceador de carga com NEG do PSC 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 o NAT do PSC.
  2. Crie uma regra de firewall para permitir solicitações do NAT do PSC 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 conexão do Private Service Connect com o projeto do Integration Connectors

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

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 expuser um anexo de serviço, o tráfego dos Integration Connectors precisará ser encaminhado por proxy 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 na sua necessidade, é possível criar quantas instâncias de VM forem necessárias.

    2. Crie uma regra de firewall para permitir o SSH nas suas 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 encaminhar o 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 ao encadeamento 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.

      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 escolha. As etapas a seguir mostram como instalar e configurar o servidor proxy SOCKS5 Dante.

      1. Conecte-se à 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 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 de 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 sondagem de 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 sondagem.
          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, crie um anexo de endpoint e use-o na sua 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 habilitados para TLS, o destino exige que você use 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 uma vinculação de endpoint como um nome de host, consulte Criar uma vinculação de endpoint como um nome de host.

      Mais tarde, ao configurar sua conexão para usar o anexo de endpoint, você poderá selecionar esse anexo.

      Configurar uma conexão para usar o anexo de 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 o Tipo de destino e escolha o anexo de endpoint criado na lista Anexo de endpoint.

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

      Dicas de solução de problemas

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

      • Verifique se o projeto de locatário do conector está autorizado no anexo de serviço.
      • Verifique se as regras de firewall têm a seguinte configuração:
        • O tráfego da sub-rede do anexo de serviço do PSC precisa ter permissão 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 falhas na configuração da rede. Para mais informações, consulte Criar e executar testes de conectividade.