Sobre o Cloud SQL Proxy

Esta página fornece uma introdução básica ao Cloud SQL Proxy e descreve as opções de proxy.

Para instruções passo a passo sobre como usar o Cloud SQL Proxy, clique no link de acordo com seu ambiente:

Não é necessário usar o proxy nem configurar o SSL para se conectar ao Cloud SQL a partir do ambiente padrão do App Engine ou ao Cloud SQL a partir do ambiente flexível do App Engine.

O que o proxy fornece

O Cloud SQL Proxy fornece acesso seguro às instâncias sem a necessidade de redes autorizadas ou de configuração de SSL.

O acesso à instância do Cloud SQL usando o Cloud SQL Proxy oferece as seguintes vantagens:

  • Conexões protegidas: o proxy criptografa automaticamente o tráfego de entrada e saída do banco de dados usando TLS 1.2 com uma criptografia AES de 128 bits. Os certificados SSL são usados para verificar as identidades do cliente e do servidor.
  • Gerenciamento de conexões mais fácil: o proxy processa a autenticação com o Cloud SQL, eliminando a necessidade de fornecer endereços IP estáticos.

O proxy não fornece um novo caminho de conectividade. Ele depende da conectividade IP atual. Para se conectar a uma instância do Cloud SQL usando o IP particular, o proxy precisa estar em um recurso com acesso à mesma rede VPC que a instância.

Como o Cloud SQL Proxy funciona

O Cloud SQL Proxy funciona com um cliente local, chamado proxy, executado no ambiente local. O aplicativo se comunica com o proxy com o protocolo de banco de dados padrão usado por seu banco de dados. O proxy usa um túnel seguro para se comunicar com o processo complementar dele, em execução no servidor.

Embora o proxy possa detectar em qualquer porta, ele só cria conexões de saída com a instância do Cloud SQL na porta 3307. Se você tiver uma política de firewall de saída, verifique se ela permite conexões com a porta 3307 no IP da instância do Cloud SQL.

O diagrama a seguir mostra como o proxy se conecta ao Cloud SQL:

Diagrama do proxy de conexão do software cliente com a instância do SQL

Requisitos para usar o Cloud SQL Proxy

Para usar o proxy, você precisa atender aos seguintes requisitos:

  • A API Cloud SQL precisa estar ativada.
  • É preciso fornecer ao proxy credenciais de autenticação do Google Cloud.
  • Você precisa fornecer ao proxy uma conta de usuário e uma senha válidas para o banco de dados.
  • A instância precisa ter um endereço IPv4 público ou ser configurada para usar IP particular.

    O endereço IP público não precisa estar acessível para nenhum endereço externo (ele não precisa ser adicionado como um endereço de rede autorizado).

Opções de inicialização de proxy

Ao iniciar o proxy, você fornece as seguintes informações a ele:

  • Com que instâncias do Cloud SQL as conexões serão feitas.
  • Onde o proxy detectará os dados provenientes do aplicativo para serem enviados ao Cloud SQL.
  • Onde serão encontradas as credenciais que serão usadas para autenticar o aplicativo no Cloud SQL.
  • Se necessário, qual tipo de endereço IP usar.

As opções de inicialização de proxy que você fornece determinam se ele vai detectar em uma porta TCP ou em um soquete Unix. Se estiver detectando em um soquete Unix, ele criará o soquete no local escolhido. Geralmente, o diretório /cloudsql/. Para o TCP, o proxy detecta localhost por padrão.

Execute o executável cloud_sql_proxy com o argumento --help para ver a lista completa de opções de inicialização.

Você pode instalar o proxy em qualquer lugar do ambiente local. O local dos binários do proxy não afeta o local onde ele detecta dados do aplicativo.

Como usar uma conta de serviço para autenticação

O proxy requer autenticação. A vantagem de usar uma conta de serviço para esse fim é que você pode criar um arquivo de credencial especificamente para o proxy. Esse arquivo fica vinculado de forma explícita e permanente enquanto o proxy estiver em execução. Por esse motivo, o uso de uma conta de serviço é o método recomendado para instâncias de produção não executadas em uma instância do Compute Engine.

O arquivo de credenciais poderá ser duplicado em uma imagem do sistema, se for necessário invocar o Cloud SQL Proxy de várias máquinas.

Para usar esse método, o arquivo de credenciais precisa ser criado e gerenciado. Somente usuários com a permissão resourcemanager.projects.setIamPolicy, como proprietários do projeto, podem criar a conta de serviço. Se o usuário do Google Cloud não tiver essa permissão, é necessário que outra pessoa crie a conta de serviço para você ou use outro método para autenticar o proxy.

Consulte Como criar uma conta de serviço se precisar de ajuda para criar um arquivo de credenciais.

Permissões necessárias para contas de serviço

Ao usar uma conta de serviço para fornecer as credenciais para o proxy, crie-a com permissões suficientes. Se estiver usando papéis de Identity Access and Management (IAM) mais refinados para gerenciar permissões do Cloud SQL, atribua à conta de serviço um papel que inclua a permissão cloudsql.instances.connect. Os papéis predefinidos do Cloud SQL que incluem essa permissão são os seguintes:

  • Cliente do Cloud SQL
  • Editor do Cloud SQL
  • administrador do Cloud SQL

Se você estiver usando os papéis legados (leitor, editor e proprietário), a conta de serviço precisará ter pelo menos o papel de editor.

Opções para especificar instâncias do Cloud SQL

Há várias maneiras de informar ao proxy a quais instâncias você quer se conectar. Algumas são explícitas e outras, implícitas. Em algumas configurações, não é necessário informar o proxy a quais instâncias você quer se conectar, porque ele se conecta com base nas solicitações de conexão.

Suas opções de especificação de instância dependem do sistema operacional e do ambiente:

Opção Benefícios Restrições e requisitos Linux/macOS
(soquetes Unix)
Java Windows Observações
Descoberta automática da instância Não é necessário especificar instâncias, e os soquetes são criados para todas as instâncias no projeto padrão. O uso da API Proxy aumenta. É preciso ter o Cloud SDK instalado e autenticado com um projeto padrão definido. É necessário reiniciar o proxy para adicionar a nova instância. Compatível Não Não Não recomendado para instâncias de produção.
Descoberta do projeto Não é necessário especificar instâncias, e os soquetes são criados para todas as instâncias em projetos especificados. O uso da API Proxy aumenta. É preciso ter o Cloud SDK instalado e autenticado. É necessário reiniciar o proxy para adicionar a nova instância. Compatível Não Não Use o parâmetro -projects. Não recomendado para instâncias de produção.
Instâncias especificadas na invocação do proxy Lista de instâncias conhecida e estática. É necessário reiniciar o proxy para adicionar a nova instância. Compatível Compatível com soquetes TCP Compatível com soquetes TCP Use o parâmetro -instances. Para várias instâncias, use uma lista separada por vírgulas, sem espaços. Saiba mais
Instâncias especificadas com metadados do Compute Engine A lista de instâncias pode ser atualizada ao alterar o valor dos metadados, sem reiniciar o proxy. Disponível somente no Compute Engine. Compatível Compatível com soquetes TCP Compatível com soquetes TCP Use a sinalização -instances_metadata. Saiba mais

Consulte amostras de invocações e strings de conexão.

Como manter o Cloud SQL Proxy atualizado

De vez em quando, o Google libera novas versões do proxy. Você pode ver qual é a versão atual na página de versões do Cloud SQL Proxy no GitHub. As futuras versões de proxy também serão divulgadas no fórum de anúncios do Cloud SQL nos Grupos dos Google.

Uso da API

O Cloud SQL Proxy emite solicitações à API Cloud SQL Admin. Essas solicitações são deduzidas da cota de API do projeto.

O uso mais alto da API ocorre ao iniciar o proxy. Isso se aplica especialmente ao usar a descoberta automática de instância ou o parâmetro -projects. Enquanto o proxy está em execução, ele emite duas chamadas à API por hora por instância conectada.

Parâmetros e sinalizações do Cloud SQL Proxy

O Cloud SQL Proxy aceita diversos parâmetros e sinalizadores quando iniciado. Essas opções determinam onde e como o Cloud SQL Proxy cria os soquetes usados na comunicação com o Cloud SQL, e como ele se autentica.

Para saber mais sobre as opções de proxy, consulte as seguintes informações:

Como usar o Cloud SQL Proxy em um ambiente de produção

Quando você está usando o Cloud SQL Proxy em um ambiente de produção, pode seguir algumas etapas para garantir que o proxy forneça a disponibilidade necessária para o aplicativo.

Garanta que o Cloud SQL Proxy seja executado como um serviço persistente

Se o processo do proxy for interrompido, todas as conexões existentes por meio dele serão descartadas, e o aplicativo não poderá criar mais nenhuma conexão com a instância do Cloud SQL usando o proxy. Para evitar esse cenário, execute o proxy como um serviço persistente, de modo que, se o proxy sair por qualquer motivo, ele será reiniciado automaticamente. Isso pode ser realizado usando um serviço como systemd, upstart ou supervisor. No Windows, execute o proxy como um serviço desse sistema operacional. Em geral, verifique se o proxy tem os mesmos requisitos de tempo de atividade do processo do aplicativo.

Quantas cópias do Cloud SQL Proxy são necessárias ao aplicativo

Não é necessário criar um processo de proxy para cada processo de aplicativo, já que muitos processos desse tipo podem compartilhar um único processo de proxy. Execute um processo do cliente de proxy por estação de trabalho ou máquina virtual.

Se você estiver usando o escalonamento automático para máquinas virtuais, verifique se o proxy está incluído na configuração da máquina virtual. Assim, sempre que uma nova máquina virtual for iniciada, ela terá o próprio processo de proxy.

Depende de você gerenciar o número de conexões necessárias ao aplicativo, seja por limitação ou uso de pool de conexões. O proxy não coloca nenhuma limitação em novas taxas de conexão ou contagem de conexão persistente.

Como reduzir a saída do Cloud SQL Proxy

Caso seja necessário reduzir o tamanho do registro do proxy, defina -verbose=false quando iniciar o proxy. No entanto, lembre-se de que isso reduz a eficácia da saída do proxy no diagnóstico de problemas de conexão.

Como o failover afeta o Cloud SQL Proxy

Se você estiver executando o proxy em uma instância configurada para alta disponibilidade e ocorrer um failover, as conexões por meio do proxy serão afetadas da mesma forma que as conexões por IP: todas as conexões existentes serão perdidas e o aplicativo precisará estabelecer novas conexões. Porém, nenhuma intervenção manual é necessária: o aplicativo pode continuar usando as mesmas strings de conexão de antes.

Como manter a imagem do Proxy Docker atualizada

A imagem do Proxy Docker é baseada em uma versão específica do Cloud SQL Proxy. Quando uma nova versão do Cloud SQL Proxy estiver disponível, extraia a nova versão da imagem do Proxy Docker para manter seu ambiente atualizado. Você pode ver qual é a versão atual na página de versões do Cloud SQL Proxy no GitHub.

A seguir