Gerenciar a autenticação do IAM

Nesta página, explicamos como preparar sua instância do AlloyDB para PostgreSQL para permitir a autenticação de banco de dados pelo Identity and Access Management (IAM).

A autenticação do IAM complementa a autenticação de banco de dados por usuários padrão do PostgreSQL, que todos os clusters do AlloyDB oferecem suporte. Se você ativar a autenticação do IAM no cluster, poderá usar papéis de usuário do IAM ou do PostgreSQL para autenticar 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:

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 nessa instância como on.

Para desativar a autenticação do IAM em uma instância, defina alloydb.iam_authentication de volta ao valor padrão, off.

Para mais informações sobre como definir flags em instâncias do AlloyDB, consulte Configurar flags de banco de dados de uma instância.

Conceder acesso a uma instância a um usuário do IAM ou conta de serviço

A ativação do acesso do IAM a um novo usuário do banco de dados é um processo de duas etapas:

  1. Atualize as configurações do IAM do projeto para conceder acesso ao banco de dados do AlloyDB ao usuário ou conta de serviço do IAM apropriado.

  2. 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 do IAM ou da conta de serviço.

Repita a segunda etapa para conceder acesso a uma conta do IAM a outros clusters no 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 autenticar com instâncias do AlloyDB concedendo a eles os seguintes papéis do IAM:

  • alloydb.databaseUser: permite que o usuário se conecte à instância do AlloyDB.
  • serviceusage.serviceUsageConsumer: concede ao usuário acesso a uma API que verifica 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 do IAM ou uma conta de serviço a um cluster

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster ao qual você quer adicionar um usuário.

  3. Clique em Usuários.

  4. Clique em Adicionar conta de usuário.

  5. Selecione Cloud IAM.

  6. 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ço my-service@my-project.iam.gserviceaccount.com, você usaria o valor my-service@my-project.iam aqui.

  7. Para atribuir papéis diferentes do alloydbsuperuser padrão ao usuário, siga estas etapas:

    1. Insira o nome do papel em Papéis.
    2. Para adicionar o papel, pressione Enter ou Tab.
    3. Selecione x para qualquer papel que você queira remover para esse usuário.

      Para mais informações, consulte Papéis predefinidos.

  8. Clique em Adicionar.

gcloud

Para criar um usuário do banco de dados do PostgreSQL com base em um usuário do IAM ou conta de serviço, 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ço my-service@my-project.iam.gserviceaccount.com, você usaria o valor my-service@my-project.iam aqui.

  • CLUSTER: ID do cluster em que essa conta de usuário do banco de dados será criada.

  • REGION: ID da região em que o cluster está localizado. Por exemplo, us-central1.

Conceder permissões de banco de dados apropriadas 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 GRANT instrução do PostgreSQL.

GRANT SELECT ON TABLE_NAME TO "USERNAME";

Substitua as seguintes variáveis:

  • USERNAME: endereço de e-mail do usuário. É necessário incluir aspas duplas ao redor do endereço.

  • TABLE_NAME: nome da tabela à qual você quer conceder acesso ao usuário.

Remover um usuário do IAM ou uma conta de serviço de um cluster

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster do qual você quer remover o usuário.

  3. Clique em Usuários.

  4. Na linha que representa o usuário que você quer remover, clique em Abrir ações para este usuário.

  5. Selecione Remover.

  6. 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ço my-service@my-project.iam.gserviceaccount.com, você usaria o valor my-service@my-project.iam aqui.

  • CLUSTER: ID do cluster do qual você quer remover esse usuário.

  • REGION: ID da região em que o cluster está localizado. Por exemplo, us-central1.

A seguir