Para se autenticar em uma instância do AlloyDB para PostgreSQL usando
credenciais do Identity and Access Management (IAM) em vez de senhas de banco de dados integradas,
faça login com um token de acesso do OAuth 2.0 ou configure a autenticação automática
do IAM. Também é possível fazer login
com base no IAM usando o cliente de linha de comando psql.
Para uma visão geral de como se conectar a instâncias do AlloyDB, consulte Visão geral da conexão.
Antes de começar
O projeto, o cluster, as instâncias e as contas de usuário do IAM precisam de preparação antes que você possa fazer login em uma instância do AlloyDB usando credenciais do IAM.
Para mais informações, consulte Gerenciar a autenticação do IAM.
Autenticar com um token do OAuth 2.0
Um usuário ou aplicativo pode se autenticar em um banco de dados do AlloyDB seguindo estas etapas:
Se você ainda não tiver feito isso, autentique-se na Google Cloud CLI usando a mesma conta de usuário ou de serviço que você quer usar para fazer login na instância do AlloyDB.
Solicite um token do OAuth 2.0 de Google Cloud usando o comando
gcloud auth print-access-token:gcloud auth print-access-tokenGoogle Cloud imprime um token do OAuth 2.0 como a saída desse comando.
Para aumentar a segurança, é possível restringir o token para uso apenas com a autenticação do AlloyDB seguindo estas etapas alternativas:
Adicione o escopo
alloydb.loginàs credenciais de acesso do ambiente atual usando o comandogcloud auth application-default login, se ainda não tiver feito isso: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,openidImprima um token restrito do OAuth 2.0 usando o comando
gcloud auth application-default print-access-token, definindo o escopo do token apenas para a 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 que você ou qualquer pessoa faça solicitações autenticadas para o Google Cloud em seu nome. Trate o token com o mesmo nível de segurança de uma senha. Armazene o token com segurança ou evite armazená-lo. O exemplo de uso de
psqlmais adiante nesta página demonstra uma maneira de solicitar, usar e descartar um token do OAuth 2.0 em uma única ação.Faça login em uma instância do AlloyDB com técnicas padrão do PostgreSQL usando estas credenciais:
Apresente o token de acesso que você adquiriu na etapa anterior como sua senha.
Para uma conta de usuário do IAM, o nome de usuário do banco de dados é o endereço de e-mail completo da conta.
Para uma conta de serviço do IAM, o nome de usuário do banco de dados é o endereço de e-mail da conta sem o sufixo
.gserviceaccount.com.
O comando psql a seguir demonstra uma maneira de fazer login em um
usuário do IAM na linha de comando. Ele atribui a saída de gcloud
auth print-access-token à variável de ambiente PGPASSWORD, que o psql
usa como senha de login do banco de dados.
PGPASSWORD=$(gcloud auth print-access-token) psql \
-h INSTANCE_ADDRESS \
-U USERNAME \
-d DATABASESubstitua:
INSTANCE_ADDRESS: o endereço IP da instância do AlloyDB à qual se conectar.USERNAME: um identificador para o usuário do IAM se autenticar com a instância.Para uma conta de usuário do IAM, forneça o endereço de e-mail completo da conta de usuário. Por exemplo,
kai@example.comPara uma conta de serviço do IAM, forneça 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, use o valormy-service@my-project.iamaqui.DATABASE: o nome do banco de dados a ser conectado.
O psql trunca senhas inseridas na linha de comando que têm mais de 100 caracteres. Para usar psql com um token OAuth 2.0 como senha de login,
defina a variável de ambiente PGPASSWORD, conforme demonstrado neste
exemplo, em vez de colá-la manualmente quando solicitado.
Autenticar automaticamente
Para autenticar automaticamente um usuário do AlloyDB com base no IAM sem precisar de um token do OAuth 2.0, você tem duas opções: o proxy de autenticação do AlloyDB e os conectores de linguagem do AlloyDB.
A conta do IAM usada para executar o
cliente proxy ou os conectores de linguagem precisa ser a mesma
que você adicionou como usuário do banco de dados. Por exemplo, se você executar a carga de trabalho
usando a conta de usuário do IAM kai@example.com, poderá usar
o cliente proxy ou os conectores de linguagem para
autenticar automaticamente o usuário do banco de dados kai@example.com sem
especificar um token do OAuth 2.0. Neste exemplo, a autenticação automática não
funciona com nenhum outro usuário do banco de dados, exceto kai@example.com.
Proxy de autenticação
Para usar o proxy de autenticação, é necessário executar o cliente do proxy de autenticação com a
flag --auto-iam-authn ativada.
Para mais informações sobre como executar o proxy de autenticação, consulte Conectar-se usando o proxy de autenticação do AlloyDB.
Conectores de linguagem
Para usar os conectores de linguagem, é necessário ativar a autenticação do IAM de maneira programática. Para o conector do Python do AlloyDB, a autenticação automática do IAM (enable_iam_auth=True) é compatível com os drivers pg8000 e asyncpg. Há uma opção correspondente para cada
linguagem em
Configurar os conectores de linguagem do AlloyDB.