Esta página explica como preparar sua instância do AlloyDB para PostgreSQL para permitir a autenticação do banco de dados pelo Identity and Access Management (IAM).
A autenticação do IAM complementa a autenticação do banco de dados com usuários padrão do PostgreSQL, que é compatível com todos os clusters do AlloyDB. Se você ativar a autenticação do IAM no cluster, poderá usar papéis de usuário do IAM ou do PostgreSQL para fazer a autenticação com esse cluster.
Por padrão, uma instância do AlloyDB não tem a autenticação do IAM ativada. Para ativar a autenticação do IAM, siga estas etapas:
Ative manualmente a autenticação do IAM em todas as instâncias a que as contas de usuário ou de serviço do IAM precisam se conectar.
Para cada usuário do IAM ou conta de serviço que precisa fazer login como usuário do banco de dados, siga estas etapas:
Usando as ferramentas de administrador do IAM, conceda a essa conta de usuário ou serviço os papéis
alloydb.databaseUser
eserviceusage.serviceUsageConsumer
.Usando a CLI do Google Cloud, crie um usuário do banco de dados correspondente a essa conta de usuário ou serviço no cluster do AlloyDB.
Usando uma conta de administrador do banco de dados, como
postgres
, conceda os novos privilégios de acesso do usuário do banco de dados às tabelas de banco de dados apropriadas.
Repita essas etapas sempre que precisar adicionar mais usuários do IAM ao cluster do AlloyDB.
Ativar ou desativar a autenticação do IAM
Para ativar a autenticação do IAM em uma instância, defina
a flag alloydb.iam_authentication
naquela instância como on
.
Para desativar a autenticação do IAM em uma instância, defina
alloydb.iam_authentication
de volta para o valor padrão, off
.
Para mais informações sobre como definir flags em instâncias do AlloyDB, consulte Configurar flags do banco de dados de uma instância.
Conceder acesso a uma instância a um usuário do IAM ou a uma conta de serviço
Ativar o acesso do IAM a um novo usuário do banco de dados é um processo de duas etapas:
Atualize as configurações do IAM do seu projeto para conceder acesso ao banco de dados do AlloyDB à conta de serviço ou ao usuário do IAM apropriado.
Crie um novo usuário do banco de dados no cluster, definindo o nome de usuário como o endereço de e-mail do usuário ou da conta de serviço do IAM.
Repita a etapa 2 para conceder a uma conta do IAM acesso a outros clusters no seu projeto.
Atualizar uma conta do IAM com o papel apropriado
É possível conceder aos usuários do IAM ou às contas de serviço a capacidade de autenticação com instâncias do AlloyDB concedendo a eles os seguintes papéis do IAM:
alloydb.databaseUser
: permite que o usuário se conecte à sua instância do AlloyDB.serviceusage.serviceUsageConsumer
: fornece ao usuário acesso a uma API que verifica as permissões.
Para fazer isso, siga as instruções em
Conceder acesso a outros usuários. Na
etapa em que você seleciona um papel para conceder ao principal do IAM,
escolha alloydb.databaseUser
.
Adicionar um usuário ou uma conta de serviço do IAM a um cluster
Console
Acesse a página Clusters.
Clique no nome do cluster em que você quer adicionar um usuário.
Clique em Usuários.
Clique em Adicionar conta de usuário.
Selecione Cloud IAM.
No campo Principal, insira o principal do IAM.
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@altostrat.com
Para 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.iam
aqui.Clique em Adicionar.
gcloud
Para criar um usuário do banco de dados PostgreSQL com base em um usuário ou uma conta de serviço do IAM, use o comando gcloud alloydb users create
.
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED
Substitua as seguintes variáveis:
USERNAME
: identificador do usuário do IAM que você quer adicionar como um novo usuário do banco de dados.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@altostrat.com
Para 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.iam
aqui.CLUSTER
: ID do cluster para criar esta conta de usuário do banco de dados.REGION
: ID da região em que o cluster está localizado. Por exemplo,us-central1
.
Conceder as permissões de banco de dados adequadas aos usuários do IAM
Por padrão, quando um usuário do IAM é adicionado a uma instância de banco de dados, esse novo usuário não recebe privilégios em nenhum banco de dados.
Quando um usuário ou conta de serviço se conecta a um banco de dados, ele pode executar consultas em qualquer objeto do banco de dados que tenha o acesso concedido como PUBLIC.
Se forem necessários acesso adicional, mais privilégios poderão ser concedidos usando a
instrução GRANT
do PostgreSQL.
GRANT SELECT ON TABLE_NAME TO "USERNAME";
Substitua as seguintes variáveis:
USERNAME
: o endereço de e-mail do usuário. É necessário incluir aspas duplas em torno do endereço.TABLE_NAME
: o nome da tabela a que você quer conceder acesso ao usuário.
Remover um usuário ou uma conta de serviço do IAM de um cluster
Console
Acesse a página Clusters.
Clique no nome do cluster em que você quer remover o usuário.
Clique em Usuários.
Na linha que representa o usuário que você quer remover, clique em
Abrir ações para esse usuário.Selecione Remover.
Na caixa de diálogo Remover conta de usuário?, clique em Remover.
gcloud
Use
o comando gcloud alloydb users delete
.
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION
Substitua:
USERNAME
: identificador do usuário do IAM que você quer remover do cluster.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@altostrat.com
Para 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.iam
aqui.CLUSTER
: ID do cluster do qual o usuário será removido.REGION
: ID da região em que o cluster está localizado. Por exemplo,us-central1
.