Para fazer conexões criptografadas e autorizadas com instâncias do AlloyDB, use o proxy de autenticação do AlloyDB. Para mais informações, consulte Sobre o proxy de autenticação do AlloyDB.
Para usar o proxy de autenticação do AlloyDB, siga algumas etapas de configuração únicas, inicie o cliente do proxy de autenticação e use-o para se conectar a um banco de dados.
Antes de começar
O host do cliente precisa atender a estes requisitos:
O cliente precisa ter visibilidade da rede de nuvem privada virtual (VPC) em que as instâncias a serem conectadas estão localizadas. Os hosts clientes (como instâncias do Compute Engine) nessa rede de nuvem privada virtual (VPC) têm essa visibilidade de rede.
Os hosts clientes em redes externas (redes locais ou diferentes redes VPC) têm essa visibilidade de rede se a rede VPC da instância do AlloyDB estiver conectada à rede externa usando um túnel do Cloud VPN ou um anexo da VLAN para Interconexão dedicada ou Interconexão por parceiro.
Se o host do cliente tiver uma política de firewall de saída, ela precisará permitir conexões de saída com a porta
5433nos endereços IP das instâncias do AlloyDB e conexões de saída com a porta443(a porta HTTPS padrão) para todos os endereços IP.Se você estiver usando uma instância do Compute Engine como host do cliente, ela precisará ter o escopo de acesso
https://www.googleapis.com/auth/cloud-platformpara usar a API AlloyDB. Se necessário, mude o escopo de acesso para incluir esse escopo.
Baixar o cliente do proxy de autenticação
A máquina em que você faz o download do cliente do proxy de autenticação depende de se você quer se conectar às instâncias do AlloyDB de dentro ou fora da rede VPC.
Se você quiser se conectar ao cluster usando o acesso a serviços particulares, baixe o cliente do proxy de autenticação em uma instância de máquina virtual (VM) do Compute Engine em execução na rede VPC que tem acesso a serviços particulares ao cluster.
Se você pretende se conectar ao cluster de fora da VPC, a máquina em que ele será instalado depende da estratégia de conexão externa usada. Por exemplo, é possível instalar o cliente do proxy de autenticação em um computador macOS ou Windows local para seu aplicativo e usar um servidor SOCKS em execução na rede VPC do AlloyDB como um intermediário de conexão. Para mais informações, consulte Conectar-se a um cluster de fora da VPC.
Linux
64 bits (AMD)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxyTorne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
32 bits (AMD)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxyTorne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
64 bits (ARM)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxyTorne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
32 bits (ARM)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxyTorne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
macOS
ARM64
Faça o download do cliente do proxy de autenticação:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.darwin.arm64Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
AMD64
Faça o download do cliente do proxy de autenticação:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy.darwin.amd64Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxyAdicione o cliente do proxy de autenticação ao seu PATH:
mkdir -p ~/.local/bin mv alloydb-auth-proxy ~/.local/bin/ export PATH="$HOME/.local/bin:$PATH"Para manter essas mudanças entre as sessões, adicione
export PATH="$HOME/.local/bin:$PATH"ao arquivo~/.bashrcou~/.zshrc.
Windows
64 bits
Clique com o botão direito do mouse em https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy-x64.exe e selecione Salvar link como para fazer o download do cliente do proxy de autenticação. Renomeie o arquivo para
alloydb-auth-proxy.exe.Adicione o cliente do proxy de autenticação ao seu PATH:
New-Item -ItemType Directory -Force -Path "$HOME\bin" Move-Item -Path .\alloydb-auth-proxy.exe -Destination "$HOME\bin" $userPath = [Environment]::GetEnvironmentVariable("Path", "User") [Environment]::SetEnvironmentVariable("Path", "$userPath;$HOME\bin", "User")
32 bits
Clique com o botão direito do mouse em https://storage.googleapis.com/alloydb-auth-proxy/v1.17.0/alloydb-auth-proxy-x86.exe e selecione Salvar link como para baixar o cliente do proxy de autenticação. Renomeie o arquivo para
alloydb-auth-proxy.exe.Adicione o cliente do proxy de autenticação ao seu PATH:
New-Item -ItemType Directory -Force -Path "$HOME\bin" Move-Item -Path .\alloydb-auth-proxy.exe -Destination "$HOME\bin" $userPath = [Environment]::GetEnvironmentVariable("Path", "User") [Environment]::SetEnvironmentVariable("Path", "$userPath;$HOME\bin", "User")
imagem Docker
Por conveniência, várias imagens de contêiner que contêm o cliente do proxy de autenticação estão disponíveis no Artifact Registry.
É possível extrair a imagem mais recente na sua máquina local usando o Docker com o seguinte comando:
docker pull gcr.io/alloydb-connectors/alloydb-auth-proxy:latestOutros SOs
Para outros sistemas operacionais não incluídos aqui, compile o cliente do proxy de autenticação a partir da fonte.
Escolher e preparar o principal do IAM para autorização
O proxy de autenticação do AlloyDB aceita o uso destes tipos de principais do IAM para autorizar conexões entre seu cliente e uma instância do AlloyDB:
Uma conta de serviço anexada. Se o host do cliente for executado em Google Cloud, por exemplo, em uma instância do Compute Engine, será possível autorizar conexões usando a conta de serviço anexada a esse recurso.
Recomendamos usar uma conta de serviço para autorização em ambientes de produção. Uma conta de serviço anexada é a opção mais segura porque não exige uma chave baixada.
Sua conta de usuário. Você pode usar sua própria conta de usuário do IAM para autorizar conexões.
Usar sua própria conta de usuário é conveniente em ambientes de desenvolvimento em que você gerencia recursos do AlloyDB usando a CLI gcloud, desenvolve o banco de dados usando uma ferramenta como
psqle desenvolve o código do aplicativo no mesmo host.Uma conta de serviço gerenciado pelo usuário. Você pode criar uma conta de serviço do IAM para seu aplicativo e autorizar conexões usando essa conta.
Use uma conta de serviço gerenciado pelo usuário quando o host do cliente for executado fora de Google Cloud e não puder usar uma conta de serviço anexada.
Depois de escolher qual principal do IAM usar, verifique se ele tem as permissões do IAM necessárias e se as credenciais estão disponíveis no host do cliente.
Permissões do IAM obrigatórias
O principal do IAM usado para autorizar conexões precisa ter as permissões
fornecidas pelas funções predefinidas roles/alloydb.client (cliente do AlloyDB no Cloud) e
roles/serviceusage.serviceUsageConsumer (consumidor do Service Usage).
Para atribuir a função de cliente do Cloud AlloyDB a um principal do IAM:
A API Cloud Resource Manager precisa estar ativada no projeto Google Cloud .
Você precisa ter o papel básico de
roles/owner(proprietário) do IAM no projetoGoogle Cloud ou um papel que conceda estas permissões:resourcemanager.projects.getresourcemanager.projects.getIamPolicyresourcemanager.projects.setIamPolicy
Para receber essas permissões seguindo o princípio do menor privilégio, peça ao administrador para conceder a você o papel de
roles/resourcemanager.projectIamAdmin(administrador do IAM do projeto).
Disponibilizar credenciais do IAM no host do cliente
O cliente do proxy de autenticação usa Application Default Credentials (ADC) para localizar credenciais do IAM no host do cliente. Na maioria dos ambientes, essas credenciais já estão presentes, então não é necessário configurar nada. O cliente do proxy de autenticação procura as seguintes fontes de credenciais, em ordem:
Sua conta de usuário. Ao desenvolver localmente, autentique-se com sua própria conta de usuário executando o seguinte comando da CLI gcloud:
gcloud auth application-default loginO cliente do proxy de autenticação detecta e usa essas credenciais. Não é necessário fazer o download de uma chave de conta de serviço.
Uma conta de serviço anexada. Quando o host do cliente é executado em Google Cloud, por exemplo, em uma instância do Compute Engine, o servidor de metadados do ambiente fornece credenciais da conta de serviço anexada. O cliente do proxy de autenticação descobre e usa essas credenciais sem configuração extra.
Outras fontes de credenciais
Use os métodos a seguir somente quando as Application Default Credentials não estiverem disponíveis, por exemplo, quando você executa o cliente de proxy de autenticação fora do Google Cloudou quando precisa substituir as credenciais no ambiente.
Uma chave de conta de serviço. Use uma chave de conta de serviço quando o host do cliente for executado fora do Google Cloud, por exemplo, em um data center local ou em outro provedor de nuvem, e não for possível usar a federação de identidade da carga de trabalho.
Crie uma chave de conta de serviço no formato JSON e faça o download dela para o host do cliente. Em seguida, defina a variável de ambiente
GOOGLE_APPLICATION_CREDENTIALScomo o caminho do arquivo de chave:export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"Se quiser, especifique o caminho com a flag
--credentials-fileao iniciar o cliente do proxy de autenticação:alloydb-auth-proxy --credentials-file /path/to/service-account-key.json INSTANCE_URIUm token de acesso do OAuth 2.0. Use um token de acesso quando outro sistema já emitir tokens de curta duração para você, por exemplo, um pipeline de integração contínua que recebe um token antes de iniciar o cliente do Auth Proxy.
Se você já tiver um token de acesso do OAuth 2.0 válido, transmita-o diretamente ao iniciar o cliente do Auth Proxy:
alloydb-auth-proxy --token "ACCESS_TOKEN" INSTANCE_URICredenciais da CLI gcloud. Use a flag
--gcloud-authsomente quando for necessário reutilizar uma sessãogcloud auth logine não for possível executargcloud auth application-default login.A flag
--gcloud-authfaz com que o cliente do Auth Proxy use a conta com que você fez a autenticação comgcloud auth loginem vez de usar as Application Default Credentials. Não recomendamos essa flag. Executegcloud auth application-default login.
Reúna os URIs de conexão das instâncias do AlloyDB
Ao iniciar o cliente do proxy de autenticação, identifique as instâncias do AlloyDB a que você quer se conectar usando este formato de URI de conexão:
projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Para conferir uma lista de todos os URIs de conexão das suas instâncias, use o comando
CLI gcloud
alloydb instances list:
gcloud alloydb instances list \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_IDSubstitua:
REGION_ID: a região em que as instâncias estão localizadasCLUSTER_ID: o ID do cluster em que as instâncias estão localizadasPROJECT_ID: o ID do projeto em que o cluster está localizado
Reúna o URI de conexão de cada instância a que você quer se conectar.
Iniciar o cliente do proxy de autenticação
Ao iniciar o cliente do proxy de autenticação, você fornece informações sobre a quais instâncias do AlloyDB se conectar e, se necessário, informações de credenciais para usar ao autorizar essas conexões.
Quando ele é iniciado, o cliente do proxy de autenticação:
- Autoriza conexões com instâncias do AlloyDB usando as credenciais e permissões do IAM do principal do IAM que você configurou. Ele procura credenciais seguindo uma sequência específica de etapas.
- Autoriza automaticamente as conexões de IP público à rede de origem se a instância tiver o IP público ativado.
- Configura uma conexão particular mTLS 1.3 com o servidor proxy de autenticação de cada instância.
- Começa a detectar solicitações de conexão de clientes locais.
Por padrão, o cliente do proxy de autenticação detecta conexões TCP no endereço IP 127.0.0.1, começando na porta 5432 e incrementando em um número de porta para cada instância do AlloyDB além da primeira. É possível especificar um endereço de listener e portas diferentes ao iniciar o cliente do proxy de autenticação.
Linha de comando
alloydb-auth-proxy INSTANCE_URI... \
[ --credentials-file PATH_TO_KEY_FILE \ ]
[ --token OAUTH_ACCESS_TOKEN \ ]
[ --port INITIAL_PORT_NUMBER \ ]
[ --address LOCAL_LISTENER_ADDRESS \ ]
[ --auto-iam-authn \ ]
[ --psc \ ]
[ --public-ip \ ]
[ --disable-built-in-telemetry ]Substitua:
INSTANCE_URI: o URI de conexão da instância de uma instância do AlloyDB a ser conectada, especificado usando este formato:projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_IDÉ possível substituir a porta do listener local padrão que o cliente do Auth Proxy vai usar para a instância adicionando o parâmetro de consulta
portao URI:"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"Opcional:
PATH_TO_KEY_FILE: o caminho para o arquivo de chave JSON da conta de serviço gerenciado pelo usuário a ser usada para autorização de conexão.Opcional:
OAUTH_ACCESS_TOKEN: um valor de token OAuth2 a ser usado para autorização de conexão.Opcional:
INITIAL_PORT_NUMBER: o número da porta inicial a ser usada em vez da porta padrão5432ao detectar conexões TCP locais.Opcional:
LOCAL_LISTENER_ADDRESS: o endereço do listener a ser usado em vez do127.0.0.1padrão ao detectar conexões TCP locais.
A flag --auto-iam-authn opcional permite que você se autentique automaticamente na
instância. Isso só funciona para o usuário do banco de dados associado à
conta do IAM que está executando o cliente do proxy de autenticação. Para
mais informações, consulte Autenticar automaticamente usando o
proxy de autenticação.
A flag opcional --psc permite que o proxy de autenticação se conecte a uma instância
com o Private Service Connect ativado. Para mais informações
sobre como configurar o DNS com o Private Service Connect, consulte
Configurar uma zona gerenciada e um registro DNS.
A flag opcional --public-ip permite que o proxy de autenticação se conecte a uma instância com IP público ativado usando o endereço IP público da instância. Para mais informações sobre o IP público, consulte Conectar usando o IP público.
A flag --disable-built-in-telemetry opcional desativa o reporter de métricas interno que o proxy de autenticação usa para gerar relatórios sobre a integridade da conexão e da rede. Por padrão, o proxy de autenticação gera relatórios sobre as operações internas
para o prefixo de métrica do sistema alloydb.googleapis.com. Essas métricas ajudam o AlloyDB a melhorar a performance e identificar problemas de conectividade do cliente. Essa opção é útil para aplicativos que operam em
ambientes em que a exportação de métricas de saída é restrita. Para desativar
essa telemetria, use esta flag.
Contêiner do Docker
Inicie o cliente do proxy de autenticação usando o comando docker run.
Se você estiver usando as credenciais fornecidas pela instância do Compute Engine, use um comando semelhante a este:
docker run \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
INSTANCE_URISubstitua:
PORT: a porta a ser usada para conexões locais com o cliente do proxy de autenticação. O padrão é5432.INSTANCE_URI: o URI de conexão da instância de uma instância do AlloyDB a ser conectada, especificado usando o seguinte formato:projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_IDÉ possível substituir a porta do listener local padrão que o cliente do Auth Proxy usa para a instância adicionando o parâmetro de consulta
portao URI:"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Sempre especifique o prefixo 127.0.0.1 na flag --publish para que o
cliente do proxy de autenticação não seja exposto fora do host local.
O valor 0.0.0.0 na flag --address é necessário para tornar o listener acessível de fora do contêiner do Docker.
Para fornecer credenciais armazenadas em um arquivo JSON local, inclua as flags --volume e --credentials-file ao executar o comando docker run:
docker run \
--volume PATH_TO_KEY_FILE:/key.json \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
--credentials-file=/key.json \
INSTANCE_URISubstitua PATH_TO_KEY_FILE pelo caminho do arquivo de chave JSON da
conta de serviço gerenciado pelo usuário a ser usada para autorização de conexão.
Exemplos de startups
Os exemplos a seguir mostram várias maneiras de iniciar o cliente do Auth Proxy. Eles usam estes URIs de conexão de instância de exemplo:
projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary
projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool
Inicialização básica
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary"Neste exemplo, o cliente do proxy de autenticação autoriza a conexão
seguindo a
sequência normal de etapas de autorização
e começa a detectar conexões locais com a instância myprimary em
127.0.0.1:5432.
Inicialização usando uma conta serviço gerenciado pelo usuário
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--credentials-file "myappaccount/key.json"Neste exemplo, o cliente do proxy de autenticação autoriza a conexão usando a
chave JSON da conta de serviço gerenciado pelo usuário armazenada em myappaccount/key.json
e começa a detectar conexões locais com a instância myprimary em
127.0.0.1:5432.
Inicialização conectada a várias instâncias
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool"Neste exemplo, o cliente do proxy de autenticação autoriza a conexão
seguindo a
sequência normal de etapas de autorização
e começa a detectar conexões locais com a instância myprimary em
127.0.0.1:5432 e com a instância myreadpool em 127.0.0.1:5433.
Inicialização da detecção em portas personalizadas
Usar portas personalizadas para o cliente do proxy de autenticação pode ser útil quando você
precisa reservar a porta 5432 para outras conexões do PostgreSQL.
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary?port=5000" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool?port=5001"Neste exemplo, o cliente do proxy de autenticação autoriza a conexão
seguindo a
sequência normal de etapas de autorização
e começa a detectar conexões locais com a instância myprimary em
127.0.0.1:5000 e com a instância myreadpool em 127.0.0.1:5001.
Como essas portas personalizadas são sequenciais, o mesmo efeito pode ser alcançado usando este comando de inicialização:
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool" \
--port 5000Inicialização da escuta em um endereço IP personalizado
alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--address "0.0.0.0"Neste exemplo, o cliente do proxy de autenticação autoriza a conexão seguindo a sequência normal de etapas de autorização e começa a detectar conexões locais com a instância myprimary em 0.0.0.0:5432.
Conectar um aplicativo a um banco de dados usando o proxy de autenticação do AlloyDB
Os exemplos a seguir mostram como conectar um aplicativo a um banco de dados usando o proxy de autenticação do AlloyDB.
O exemplo psql mostra como conectar uma ferramenta de linha de comando.
A conexão com uma instância do AlloyDB usando o proxy de autenticação é, para várias linguagens de programação, idêntica à conexão com um Cloud SQL para PostgreSQL usando o proxy de autenticação do Cloud SQL. Portanto, os exemplos de linguagem são os mesmos do Cloud SQL para PostgreSQL.
Esses exemplos se baseiam em uma inicialização padrão do cliente do proxy de autenticação para
que ele detecte conexões TCP locais em 127.0.0.1:5432.
psql
psql -h 127.0.0.1 -p 5432 -U DB_USERSubstitua DB_USER pelo usuário do banco de dados que você quer usar para se conectar, por exemplo, postgres.
Isso vai pedir que você digite a senha do usuário DB_USER.
Python
Java
Node.js
Go
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
C#
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
Ruby
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.
PHP
Para conferir esse snippet no contexto de um aplicativo da Web, consulte o README no GitHub.