Esta página mostra como configurar e usar o proxy de autenticação do AlloyDB para fazer conexões autorizadas e criptografadas com instâncias do AlloyDB. Para uma visão geral conceitual do proxy de autenticação, consulte Sobre o proxy de autenticação do AlloyDB.
Para usar o proxy de autenticação do AlloyDB, siga várias etapas de configuração única, inicie o cliente do proxy de autenticação e se conecte aos bancos de dados usando ele:
- Etapas de configuração:
- Faça o download do cliente do proxy de autenticação no host do cliente.
- Escolha o principal do Identity and Access Management (IAM) a ser usado para autorização, verifique se ele tem as permissões necessárias e se as credenciais estão disponíveis no host do cliente.
- Reúna os URIs de conexão das instâncias do AlloyDB a que você quer se conectar.
- Inicie o cliente do proxy de autenticação no host do cliente.
- Conecte um aplicativo a um banco de dados abrindo uma conexão local com o cliente do proxy de autenticação.
Antes de começar
-
O host do cliente precisa atender a estes requisitos:
Ela precisa ter visibilidade de rede para a rede de nuvem privada virtual (VPC) em que as instâncias a que você quer se conectar estão localizadas. Os hosts clientes (como instâncias do Compute Engine) nessa rede de nuvem privada virtual (VPC) têm essa visibilidade. Os hosts clientes em redes externas (redes locais ou diferentes redes VPC) têm essa visibilidade 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
5433
nos 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-platform
para poder usar a API AlloyDB Admin. 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 de fora da rede VPC.
Se você quiser se conectar ao cluster usando o acesso privado a serviços, 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 privado a serviços 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.13.4/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
32 bits (AMD)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxy
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
64 bits (ARM)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxy
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
32 bits (ARM)
Faça o download do cliente do proxy de autenticação:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxy
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
macOS
M1
Faça o download do cliente do proxy de autenticação:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.arm64
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
64 bits
Faça o download do cliente do proxy de autenticação:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.amd64
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
32 bits
Faça o download do cliente do proxy de autenticação:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.386
Torne o cliente do proxy de autenticação executável:
chmod +x alloydb-auth-proxy
Windows
64 bits
Clique com o botão direito do mouse em https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/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
.
32 bits
Clique com o botão direito do mouse em https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/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
.
Imagem do 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:latest
Outros SOs
Para outros sistemas operacionais não incluídos aqui, compile o cliente do proxy de autenticação a partir da fonte.
Escolher o principal do IAM e prepará-lo para autorização
O proxy de autenticação do AlloyDB é compatível com 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 gerenciado pelo usuário. É possível criar uma conta de serviço do IAM para seu aplicativo e autorizar conexões usando essa conta.
O Google recomenda usar uma conta de serviço para autorização em ambientes de produção.
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 com uma ferramenta como
psql
e desenvolve o código do aplicativo no mesmo host.A conta de serviço padrão do Compute Engine. Se o host do cliente for uma instância do Compute Engine, use a conta de serviço padrão do Compute Engine para autorizar conexões.
Depois de escolher qual principal do IAM usar, verifique se ele tem as permissões necessárias do IAM e se as credenciais estão disponíveis no host do cliente.
Permissões do IAM obrigatórias
O participante 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
roles/owner
(Proprietário) do IAM no projetoGoogle Cloud ou um papel que conceda estas permissões:resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.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 as credenciais do IAM no host do cliente
A forma de disponibilizar as credenciais do IAM no host do cliente depende do tipo de principal do IAM que você está usando para autorizar conexões:
Conta serviço gerenciado pelo usuário
Para fornecer credenciais do IAM a uma conta serviço gerenciado pelo usuário, crie uma chave de conta de serviço em formato JSON e faça o download dela para o host do cliente. Ao iniciar o cliente do Auth Proxy, especifique o local do arquivo de chave usando a flag
--credentials-file
.Sua conta de usuário
Para fornecer credenciais do IAM à sua conta de usuário, instale a Google Cloud CLI no host do cliente e execute o comando
gcloud init
para inicializá-la usando sua conta de usuário. Ao iniciar o cliente do Auth Proxy, ele descobre e usa automaticamente as credenciais da sua conta de usuário se você não fornecer as credenciais da conta de serviço gerenciado pelo usuário.Conta de serviço padrão do Compute Engine
Se você estiver usando uma instância do Compute Engine como host do cliente, as credenciais da conta de serviço padrão do Compute Engine já estarão no host. Quando você inicia o cliente do Auth Proxy, ele descobre e usa automaticamente essas credenciais se as credenciais da conta de serviço gerenciado pelo usuário e da conta de usuário não estiverem disponíveis.
Reúna URIs de conexão para as instâncias do AlloyDB
Ao iniciar o cliente do proxy de autenticação, identifique a instância ou 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
alloydb instances list
da CLI gcloud.
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 TLS 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
port
ao 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ão5432
ao detectar conexões TCP locais.Opcional:
LOCAL_LISTENER_ADDRESS
: o endereço do listener a ser usado em vez do127.0.0.1
padrão ao detectar conexões TCP locais.
A flag --auto-iam-authn
opcional permite a autenticação automática na
instância. Isso funciona apenas 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
Auth Proxy.
A flag --psc
opcional 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 de DNS.
A flag --public-ip
opcional 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 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. Se você preferir 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_URI
Substitua:
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 padrão do listener local que o cliente do Auth Proxy usa para a instância adicionando o parâmetro de consulta
port
ao 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_URI
Substitua 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 escuta 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 5000
Inicializaçã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 do AlloyDB é, 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 aqui são os mesmos do Cloud SQL para PostgreSQL.
Esses exemplos se baseiam em uma inicialização padrão do cliente proxy Auth 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_USER
Substitua 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.