Esta página explica o processo de início de sessão numa instância do AlloyDB for PostgreSQL através de uma conta preparada com a gestão de identidade e de acesso (IAM). Ilustra o processo mostrando como fazer um início de sessão baseado na IAM através do cliente de linha de comandos.psql
Para uma vista geral da ligação a instâncias do AlloyDB, consulte a Vista geral da ligação.
Antes de começar
O seu projeto, cluster, instâncias e contas de utilizador do IAM requerem preparação antes de poder iniciar sessão numa instância do AlloyDB com credenciais do IAM.
Para mais informações, consulte o artigo Faça a gestão da autenticação do IAM.
Autentique com um token OAuth 2.0
Um utilizador ou uma aplicação pode autenticar-se numa base de dados do AlloyDB seguindo estes passos:
Se ainda não o fez, autorize a CLI Google Cloud com o mesmo utilizador ou conta de serviço com que quer iniciar sessão na sua instância do AlloyDB.
Peça um token OAuth 2.0 a Google Cloud usando o comando
gcloud auth print-access-token
:gcloud auth print-access-token
O comando Google Cloud imprime um token OAuth 2.0 como resultado deste comando.
Para maior segurança, pode restringir o token para utilização apenas com a autenticação do AlloyDB seguindo estes passos alternativos:
Adicione o âmbito
alloydb.login
às credenciais de acesso do seu ambiente atual através do comandogcloud auth application-default login
se ainda não o tiver feito:gcloud auth application-default login --scopes=https://www.googleapis.com/auth/alloydb.login,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/userinfo.email,openid
Imprima um token OAuth 2.0 restrito com o comando
gcloud auth application-default print-access-token
, restringindo o token apenas à autenticação do AlloyDB:gcloud auth application-default print-access-token –-scopes=https://www.googleapis.com/auth/alloydb.login
O token OAuth 2.0 permite-lhe, ou a qualquer pessoa, fazer pedidos autenticados à API Google Ads em seu nome. Google Cloud Tratar o token com o mesmo nível de segurança que uma palavra-passe. Armazene o token de forma segura ou evite armazená-lo. O exemplo de utilização de
psql
mais adiante nesta página demonstra uma forma de pedir, usar e rejeitar um token OAuth 2.0 numa única ação.Inicie sessão numa instância do AlloyDB com técnicas padrão do PostgreSQL, usando estas credenciais:
Apresente o token de acesso que adquiriu no passo anterior como a sua palavra-passe.
Para uma conta de utilizador do IAM, o nome de utilizador da base de dados é o endereço de email completo da conta.
Para uma conta de serviço do IAM, o nome de utilizador da base de dados é o endereço de email da conta sem o sufixo
.gserviceaccount.com
.
O comando psql
seguinte demonstra uma forma de iniciar sessão num utilizador do IAM na linha de comandos. Atribui a saída de gcloud
auth print-access-token
à variável de ambiente PGPASSWORD
, que psql
é posteriormente usada como palavra-passe de início de sessão na base de dados.
PGPASSWORD=$(gcloud auth print-access-token) psql \
-h INSTANCE_ADDRESS \
-U USERNAME \
-d DATABASE
Substitua o seguinte:
INSTANCE_ADDRESS
: o endereço IP da instância do AlloyDB à qual estabelecer ligação.USERNAME
: Um identificador para o utilizador do IAM para autenticar com a instância.Para uma conta de utilizador do IAM, indique o endereço de email completo da conta de utilizador. Por exemplo,
kai@altostrat.com
.Para uma conta de serviço da IAM, indique o endereço da conta de serviço sem o sufixo
.gserviceaccount.com
. Por exemplo, para especificar a conta de serviçomy-service@my-project.iam.gserviceaccount.com
, usaria o valormy-service@my-project.iam
aqui.DATABASE
: o nome da base de dados à qual estabelecer ligação.
Tenha em atenção que o psql
trunca as palavras-passe introduzidas na linha de comandos com mais de 100 carateres. Para usar psql
com um token OAuth 2.0 como palavra-passe de início de sessão,
tem de definir a variável de ambiente PGPASSWORD
, conforme demonstrado neste
exemplo, em vez de a colar manualmente quando lhe for pedido.
Autentique automaticamente
Para autenticar automaticamente um utilizador do AlloyDB baseado na IAM sem precisar de um token OAuth 2.0, tem duas opções: AlloyDB Auth Proxy e AlloyDB Language Connectors.
A conta do IAM que usa para executar o cliente proxy ou os Language Connectors tem de ser a mesma conta que adicionou como utilizador da base de dados. Por exemplo, se executar a sua carga de trabalho
com a conta de utilizador do IAM kai@altostrat.com
, pode usar
o cliente proxy ou os Language Connectors para
autenticar automaticamente o utilizador da base de dados kai@altostrat.com
sem
especificar um token OAuth 2.0. Neste exemplo, a autenticação automática não funciona com nenhum outro utilizador da base de dados, exceto kai@altostrat.com
.
Proxy Auth
A utilização do proxy de autenticação requer a execução do cliente do proxy de autenticação do AlloyDB com o sinalizador --auto-iam-authn
ativado.
Para mais informações sobre a execução do proxy Auth, consulte o artigo Estabeleça ligação através do proxy Auth do AlloyDB.
Conetores de idiomas
A utilização de conectores de idiomas requer a ativação da autenticação do IAM por programação. Existe uma opção correspondente para cada idioma em Configurar os conetores de idiomas do AlloyDB.
Resolva problemas de autenticação da IAM
Para determinar a causa de uma tentativa de autenticação baseada na IAM com falha, siga estes passos:
Na Google Cloud consola, aceda à página Explorador de registos:
Em Tipo de recurso, clique em Instância do AlloyDB.
Em Gravidade, clique em Alerta.
Se Alerta não for uma opção, significa que não existem falhas de autenticação registadas no período selecionado. Pode ter de ajustar a janela através dos controlos do Explorador de registos.
Em Resultados da consulta, verifique as entradas do registo para uma das seguintes mensagens:
Request had invalid authentication credentials.
- O token de acesso é inválido.
Caller does not have required permission to use project.
- O principal do IAM não tem as funções do IAM necessárias nem as autorizações. A mensagem de erro completa especifica as funções ou as autorizações em falta.
IAM principal does not match database user.
O principal da IAM autenticado especificado pelo token de acesso não corresponde ao utilizador da base de dados ao qual quer estabelecer ligação.
Para ver o principal especificado pelo token, execute o seguinte comando:
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=ACCESS_TOKEN" https://www.googleapis.com/oauth2/v1/tokeninfo
Substitua
ACCESS_TOKEN
pela chave de acesso OAuth 2.0.Request had insufficient scopes.
- O token de acesso não contém o âmbito
alloydb.login
nem o âmbitocloud-platform
. É necessário, pelo menos, um destes âmbitos.