Esta página resume o proxy Auth do Cloud SQL e descreve como o usar para estabelecer ligações autorizadas, encriptadas e seguras às suas instâncias.
Para ver instruções passo a passo sobre como usar o proxy Auth do Cloud SQL, siga o link para o seu ambiente:
- Início rápido para usar o proxy Auth do Cloud SQL
- Como estabelecer ligação através do proxy Auth do Cloud SQL
- Como estabelecer ligação através do proxy Auth do Cloud SQL a partir do GKE
Não precisa de usar o proxy Auth do Cloud SQL nem configurar o SSL para estabelecer ligação ao Cloud SQL a partir do ambiente padrão do App Engine ou do ambiente flexível do App Engine.
Experimente
Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho do Cloud SQL em cenários reais. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.
Experimente o Cloud SQL gratuitamenteVantagens do proxy Auth do Cloud SQL
O proxy Auth do Cloud SQL é um conetor do Cloud SQL que oferece acesso seguro às suas instâncias sem necessidade de redes autorizadas ou de configurar SSL.
O proxy Auth do Cloud SQL e outros conetores do Cloud SQL têm as seguintes vantagens:
- Ligações seguras: o proxy Auth do Cloud SQL encripta automaticamente o tráfego de e para a base de dados através do TLS 1.3 com a seleção de cifragem determinada pelas regras do Go. Os certificados SSL são usados para validar as identidades de clientes e servidores, e são independentes dos protocolos de base de dados. Não tem de gerir certificados SSL.
- Autorização de ligação mais fácil: o proxy Auth do Cloud SQL usa autorizações da IAM para controlar quem e o que pode ligar-se às suas instâncias do Cloud SQL. Assim, o proxy Auth do Cloud SQL processa a autenticação com o Cloud SQL, eliminando a necessidade de fornecer endereços IP estáticos.
- Autenticação da base de dados de IAM. Opcionalmente, o proxy Auth do Cloud SQL suporta uma atualização automática dos tokens de acesso OAuth 2.0. Para obter informações sobre esta funcionalidade, consulte o artigo Autenticação de base de dados do IAM do Cloud SQL.
O proxy Auth do Cloud SQL não fornece um novo caminho de conetividade; baseia-se na conetividade de IP existente. Para ligar a uma instância do Cloud SQL através de um IP privado, o proxy Auth do Cloud SQL tem de estar num recurso com acesso à mesma rede de VPC que a instância.
Limitações
Não pode usar o proxy Auth do Cloud SQL se estiver a usar o acesso sensível ao contexto e a autenticação de base de dados do IAM. Quando tenta iniciar sessão na instância, a autenticação do IAM falha.
Como funciona o proxy Auth do Cloud SQL
O proxy Auth do Cloud SQL funciona com um cliente local em execução no ambiente local. A sua aplicação comunica com o proxy Auth do Cloud SQL com o protocolo de base de dados padrão usado pela sua base de dados.
O proxy Auth do Cloud SQL usa um túnel seguro para comunicar com o respetivo processo associado em execução no servidor. Cada ligação estabelecida através do proxy Auth do Cloud SQL cria uma ligação à instância do Cloud SQL.
Quando uma aplicação se liga ao proxy Auth do Cloud SQL, verifica se existe uma ligação entre esta e a instância do Cloud SQL de destino. Se não existir uma ligação, chama as APIs Cloud SQL Admin para obter um certificado SSL efémero e usá-lo para estabelecer ligação ao Cloud SQL. Os certificados SSL efémeros expiram aproximadamente dentro de uma hora. O proxy Auth do Cloud SQL atualiza estes certificados antes de expirarem.
O proxy Auth do Cloud SQL não fornece agrupamento de ligações, mas pode ser sincronizado com outro agrupamento de ligações para aumentar a eficiência.
O diagrama seguinte mostra como o proxy Auth do Cloud SQL se liga ao Cloud SQL:
Requisitos para usar o proxy Auth do Cloud SQL
Para usar o proxy Auth do Cloud SQL, tem de cumprir os seguintes requisitos:
- A API Admin do Cloud SQL tem de estar ativada.
- Tem de fornecer ao proxy Auth do Cloud SQL Google Cloud credenciais de autenticação.
- Tem de fornecer ao proxy Auth do Cloud SQL uma palavra-passe e uma conta de utilizador da base de dados válidas.
A instância tem de ter um endereço IPv4 público ou estar configurada para usar um IP privado.
O endereço IP público não tem de estar acessível a nenhum endereço externo (não tem de ser adicionado como um endereço de rede autorizado).
Se a instância do Cloud SQL à qual se está a ligar estiver a usar a
autoridade de certificação (CA) partilhada
para a respetiva definição serverCaMode
,
no lado do cliente, tem de usar a versão 2.13.0 ou posterior do proxy Auth do Cloud SQL.
Se a instância do Cloud SQL à qual está a estabelecer ligação estiver a usar a
AC gerida pelo cliente
para a respetiva definição serverCaMode
,
no lado do cliente, tem de usar a versão 2.14.3 ou posterior do proxy Auth do Cloud SQL.
Quando uma instância usa a AC gerida pelo cliente como o respetivo modo de AC do servidor, pode configurar a instância com um nome DNS personalizado. Indica o nome DNS personalizado no campo de nome alternativo de entidade (SAN) personalizado do certificado do servidor.
Depois de configurar um nome DNS personalizado para a instância, pode estabelecer ligação à instância a partir dos conectores de linguagem do Cloud SQL através do nome DNS.
Transfira e instale o proxy Auth do Cloud SQL
Linux (64 bits)
- Transfira o proxy Auth do Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.amd64
- Torne o proxy Auth do Cloud SQL executável:
chmod +x cloud-sql-proxy
Linux (32 bits)
- Transfira o proxy Auth do Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.linux.386
- Se o comando
curl
não for encontrado, executesudo apt install curl
e repita o comando de transferência. - Torne o proxy Auth do Cloud SQL executável:
chmod +x cloud-sql-proxy
macOS de 64 bits
- Transfira o proxy Auth do Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.darwin.amd64
- Torne o proxy Auth do Cloud SQL executável:
chmod +x cloud-sql-proxy
Mac M1
- Transfira o proxy Auth do Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.darwin.arm64
- Torne o proxy Auth do Cloud SQL executável:
chmod +x cloud-sql-proxy
Windows (64 bits)
Clique com o botão direito do rato em https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x64.exe e selecione Guardar link como para transferir o proxy Auth do Cloud SQL. Mude o nome do ficheiro paracloud-sql-proxy.exe
.
Windows (32 bits)
Clique com o botão direito do rato em https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.2/cloud-sql-proxy.x86.exe e selecione Guardar link como para transferir o proxy Auth do Cloud SQL. Mude o nome do ficheiro paracloud-sql-proxy.exe
.
Imagem do Docker do proxy Auth do Cloud SQL
O proxy Auth do Cloud SQL tem diferentes imagens de contentores, como distroless
, alpine
e buster
. A imagem do contentor do proxy Auth do Cloud SQL predefinida usa o
distroless
, que
não contém nenhuma shell. Se precisar de um shell ou de ferramentas relacionadas, transfira uma imagem com base no
alpine
ou no buster
.
Para mais informações, consulte o artigo
Imagens de contentores do proxy Auth do Cloud SQL.
Pode transferir a imagem mais recente para a sua máquina local através do Docker com o seguinte comando:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2
Outro SO
Para outros sistemas operativos não incluídos aqui, pode compilar o proxy Auth do Cloud SQL a partir da origem.Opções de arranque do proxy Auth do Cloud SQL
Quando inicia o proxy Auth do Cloud SQL, faculta-lhe as seguintes informações:
- A que instâncias do Cloud SQL estabelecer ligações
- Onde vai ouvir os dados provenientes da sua aplicação para serem enviados para o Cloud SQL
- Onde vai encontrar as credenciais que vai usar para autenticar a sua aplicação no Cloud SQL
- Se necessário, que tipo de endereço IP usar.
As opções de arranque do Proxy Auth do Cloud SQL que fornece determinam se vai ouvir numa porta TCP ou num socket Unix. Se estiver a ouvir numa porta Unix, cria a porta na localização que escolher; normalmente, o diretório /cloudsql/.
Para TCP, o proxy Auth do Cloud SQL ouve por predefinição em localhost
.
Execute o ficheiro executável cloud-sql-proxy
com o argumento --help
para ver a lista completa de opções de arranque.
Pode instalar o proxy Auth do Cloud SQL em qualquer lugar no seu ambiente local. A localização dos binários do Proxy Auth do Cloud SQL não afeta o local onde este escuta os dados da sua aplicação.
Para mais informações sobre como iniciar o proxy Auth do Cloud SQL, consulte o artigo Inicie o proxy Auth do Cloud SQL.
Use uma conta de serviço para autenticação
O proxy Auth do Cloud SQL requer a autenticação como uma identidade do IAM do Cloud SQL para autorizar as suas ligações a uma instância do Cloud SQL.
A vantagem de usar uma conta de serviço para este fim é que pode criar um ficheiro de credenciais especificamente para o proxy Auth do Cloud SQL, e este fica explícita e permanentemente associado ao proxy Auth do Cloud SQL enquanto estiver em execução. Por este motivo, a utilização de uma conta de serviço é o método recomendado para instâncias de produção que não são executadas numa instância do Compute Engine.
O ficheiro de credenciais pode ser duplicado numa imagem do sistema se precisar de invocar o Proxy Auth do Cloud SQL a partir de vários computadores.
Para usar este método, tem de criar e gerir o ficheiro de credenciais. Apenas os utilizadores
com a autorização resourcemanager.projects.setIamPolicy
(como os proprietários do projeto) podem criar a conta de serviço. Se o seu utilizador não tiver esta autorização, tem de pedir a outra pessoa que crie a conta de serviço por si ou usar outro método para autenticar o Cloud SQL Auth Proxy.Google Cloud
Saiba como criar uma conta de serviço.
Autorizações necessárias para contas de serviço
Quando usa uma conta de serviço para fornecer as credenciais para o proxy Auth do Cloud SQL, tem de
criá-la com autorizações suficientes. Se estiver a usar as funções de
gestão de identidade e de acesso (IAM) mais detalhadas para gerir as suas
autorizações do Cloud SQL, tem de atribuir à conta de serviço uma função que
inclua a autorização cloudsql.instances.connect
. As funções predefinidas do Cloud SQL que incluem esta autorização são:
- Cliente do Cloud SQL
- Editor do Cloud SQL
- Administrador do Cloud SQL
Se estiver a usar as funções do projeto antigas (Leitor, Editor, Proprietário), a conta de serviço tem de ter, pelo menos, a função de Editor.
Mantenha o proxy Auth do Cloud SQL atualizado
A Google lança ocasionalmente novas versões do proxy Auth do Cloud SQL. Pode ver qual é a versão atual consultando a página de lançamentos do GitHub do proxy Auth do Cloud SQL. Os lançamentos futuros de proxies também vão ser indicados no fórum de anúncios do Google Groups Cloud SQL.
Utilização da API
O proxy Auth do Cloud SQL envia pedidos para a API Admin do Cloud SQL. Estes pedidos contam para a quota da API do seu projeto.
A utilização mais elevada da API ocorre quando inicia o proxy Auth do Cloud SQL. Enquanto o proxy Auth do Cloud SQL está em execução, emite 2 chamadas de API por hora por instância ligada.
Acerca da criação de uma conta de utilizador especial para o proxy Auth do Cloud SQL
Quando se liga à sua instância através do proxy Auth do Cloud SQL, fornece uma conta de utilizador que é usada para iniciar sessão na instância. Pode usar qualquer conta de utilizador da base de dados para este fim. No entanto, uma vez que o proxy Auth do Cloud SQL se liga sempre a partir de um nome de anfitrião ao qual só o proxy Auth do Cloud SQL pode aceder, pode criar uma conta de utilizador que só pode ser usada pelo proxy Auth do Cloud SQL. A vantagem de o fazer é que pode especificar esta conta sem uma palavra-passe sem comprometer a segurança da sua instância ou dos seus dados.
Para criar uma conta de utilizador para ligações do proxy Auth do Cloud SQL, especifique o nome do anfitrião como
'cloudsqlproxy~[IP_ADDRESS]'
. Também pode usar o caráter universal do endereço IP, o que resultaria em 'cloudsqlproxy~%'
. O nome completo da conta de utilizador
seria:
'[USER_NAME]'@'cloudsqlproxy~%'
ou
'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
Para obter ajuda na criação de um utilizador, consulte o artigo Criar e gerir utilizadores. Para obter informações sobre como o Cloud SQL funciona com contas de utilizador, consulte Utilizadores. Para obter informações sobre as contas de utilizador do MySQL, consulte o artigo Proteger as contas iniciais do MySQL na documentação do MySQL.
Parâmetros e flags do proxy Auth do Cloud SQL
O Proxy Auth do Cloud SQL aceita várias flags e parâmetros quando é iniciado. Estas opções determinam onde e como o proxy Auth do Cloud SQL cria os soquetes que usa para comunicar com o Cloud SQL e como faz a autenticação.
Para obter ajuda com as opções do proxy Auth do Cloud SQL, consulte as seguintes informações:
- Opções para autenticar o proxy Auth do Cloud SQL
- Exemplos de invocações do proxy Auth do Cloud SQL
- Página do GitHub do proxy Auth do Cloud SQL
- A ajuda do proxy Auth do Cloud SQL, apresentada com
./cloud-sql-proxy --help
Como o FUSE é usado com o proxy Auth do Cloud SQL
FUSE significa ;"Filesystem in User Space". Consoante a forma como o proxy Auth do Cloud SQL é invocado, pode usar opcionalmente o FUSE para criar os soquetes que usa para estabelecer ligação ao Cloud SQL.
Quando se liga a partir do Compute Engine ou de ambientes de desenvolvimento locais, o proxy Auth do Cloud SQL usa o FUSE para aceder às instâncias do Cloud SQL da seguinte forma:
O diretório "/cloudsql" é montado como um sistema de ficheiros no espaço do utilizador ou FUSE pelo proxy Auth do Cloud SQL.
Um processo (por exemplo,
mysql
) tenta procurar um ficheiro denominado $INSTANCE.O proxy Auth do Cloud SQL interceta o pedido e devolve que
/cloudsql/$INSTANCE
é um link simbólico que aponta para um soquete Unix localizado noutro local no sistema de ficheiros.O processo (por exemplo,
mysql
) segue o link, abre o socket Unix para o qual direciona e estabelece ligação.
Instale o FUSE
Para Linux:
O FUSE requer o programa fusermount
e um módulo do kernel para funcionar. Pode verificar se este programa está instalado procurando o ficheiro /dev/fuse/
. Se fusermount
não estiver no seu sistema, pode instalá-lo
através do gestor de pacotes ou compilá-lo a partir da origem.
Para macOS:
Instale o FUSE para macOS.
Use o proxy Auth do Cloud SQL num ambiente de produção
Quando usa o proxy Auth do Cloud SQL num ambiente de produção, existem alguns passos que pode seguir para garantir que o proxy Auth do Cloud SQL oferece a disponibilidade necessária para a sua aplicação.
Certifique-se de que o proxy Auth do Cloud SQL é executado como um serviço persistente
Se o processo do proxy Auth do Cloud SQL for interrompido, todas as ligações existentes através do mesmo são
eliminadas e a sua aplicação não pode criar mais ligações à
instância do Cloud SQL com o proxy Auth do Cloud SQL. Para evitar este cenário, certifique-se de que
executa o proxy Auth do Cloud SQL como um serviço persistente. Deste modo, se o proxy Auth do Cloud SQL for terminado por qualquer
motivo, é reiniciado automaticamente. Pode fazê-lo através de um serviço como systemd
, upstart
ou supervisor
. Para o sistema operativo Windows, execute o proxy Auth do Cloud SQL como um serviço do Windows. Em geral, certifique-se de que o proxy Auth do Cloud SQL tem os mesmos requisitos de tempo de atividade que o processo da sua aplicação.
Quantas cópias do proxy Auth do Cloud SQL a sua aplicação precisa
Não é necessário criar um processo de proxy para cada processo de aplicação. Muitos processos de aplicação podem partilhar um único processo de proxy Auth do Cloud SQL. Execute um processo de cliente do proxy Auth do Cloud SQL por estação de trabalho ou máquina virtual.
Se estiver a usar o dimensionamento automático para máquinas virtuais, certifique-se de que o proxy Auth do Cloud SQL está incluído na configuração da máquina virtual. Deste modo, sempre que uma nova máquina virtual for iniciada, tem o seu próprio processo do proxy Auth do Cloud SQL.
É da sua responsabilidade gerir o número de ligações que a sua aplicação requer, quer limitando ou agrupando as ligações. O proxy Auth do Cloud SQL não impõe limitações às novas taxas de ligação nem à quantidade de ligações persistentes.
Reduza o resultado do proxy Auth do Cloud SQL
Se precisar de reduzir o tamanho do registo do proxy Auth do Cloud SQL, pode fazê-lo definindo --quiet
quando iniciar o proxy Auth do Cloud SQL. No entanto, tenha em atenção que, ao fazê-lo, reduz a eficácia do resultado do proxy Auth do Cloud SQL no diagnóstico de problemas de ligação.
Como a comutação por falha afeta o proxy Auth do Cloud SQL
Se estiver a executar o proxy Auth do Cloud SQL numa instância configurada para alta disponibilidade e ocorrer uma comutação por falha, as ligações através do proxy Auth do Cloud SQL são afetadas da mesma forma que as ligações através de IP: todas as ligações existentes são perdidas e a aplicação tem de estabelecer novas ligações. No entanto, não é necessária nenhuma intervenção manual. A aplicação pode continuar a usar as mesmas strings de ligação que usava antes.
Mantenha a imagem do Docker do proxy Auth do Cloud SQL atualizada
A imagem Docker do proxy Auth do Cloud SQL baseia-se numa versão específica do proxy Auth do Cloud SQL. Quando estiver disponível uma nova versão do proxy Auth do Cloud SQL, transfira a nova versão da imagem do Docker do proxy Auth do Cloud SQL para manter o seu ambiente atualizado. Pode ver a versão atual do proxy Auth do Cloud SQL consultando a página de lançamentos do proxy Auth do Cloud SQL no GitHub.
Como aplicar a utilização do proxy Auth do Cloud SQL
Pode aplicar a utilização do proxy Auth do Cloud SQL em ligações de instâncias do Cloud SQL através de ConnectorEnforcement. Com a aplicação de conetores, as ligações diretas à base de dados são rejeitadas.
Para usar a aplicação da associação, use o campo ConnectorEnforcement
na API instances
.
Se estiver a usar uma instância ativada com o Private Service Connect, existe uma limitação. Se a instância tiver a aplicação de conetores ativada, não pode criar réplicas de leitura para a instância. Da mesma forma, se a instância tiver réplicas de leitura, não pode ativar a aplicação do conector para a instância.
Para mais informações sobre como aplicar a utilização apenas do proxy Auth do Cloud SQL ou dos conetores de linguagem do Cloud SQL para estabelecer ligação a uma instância, consulte o artigo Aplique a utilização do proxy Auth do Cloud SQL.
Acerca do operador do proxy Cloud SQL
O operador do proxy do Cloud SQL é um operador do Kubernetes de código aberto que automatiza a ligação de cargas de trabalho num cluster do GKE a bases de dados do Cloud SQL. O operador do proxy Auth do Cloud SQL usa um recurso personalizado AuthProxyWorkload que especifica a configuração do proxy Auth do Cloud SQL para uma carga de trabalho específica. O operador do proxy Auth do Cloud SQL lê este recurso e adiciona um contentor do proxy Auth do Cloud SQL com a configuração necessária aos carregamentos de trabalho adequados.
Quando instala o operador no cluster do GKE e configura as cargas de trabalho e as instâncias do Cloud SQL, o operador do proxy Auth do Cloud SQL configura automaticamente o proxy Auth do Cloud SQL e liga as cargas de trabalho do GKE às suas instâncias do Cloud SQL.
O operador do proxy Auth do Cloud SQL também verifica o estado do proxy Auth do Cloud SQL. Se o proxy Auth do Cloud SQL não conseguir estabelecer ligação, o operador do proxy Auth do Cloud SQL produz informações de depuração e fornece orientações para resolver problemas e reparar problemas de configuração comuns.
Para mais informações, consulte o artigo Estabeleça ligação através do operador do proxy do Cloud SQL.