Gerenciar funções de usuário do AlloyDB

Esta página descreve como o AlloyDB para PostgreSQL funciona com as funções de usuário do PostgreSQL.

Sobre as funções do usuário no AlloyDB

Um banco de dados do AlloyDB usa o conceito padrão do PostgreSQL de funções. Um papel pode atuar como um usuário do banco de dados, um grupo de usuários ou ambos.

Uma função de usuário tem o privilégio LOGIN, que permite que os usuários façam login no sistema. Uma função de grupo tem funções de participante com vários privilégios, que podem ser concedidos ou revogados de todos os participantes de uma só vez.

Funções predefinidas do PostgreSQL do AlloyDB

O PostgreSQL tem um conjunto de funções predefinidas com vários privilégios. O AlloyDB adiciona vários papéis de usuário e grupo a esse conjunto de papéis predefinidos do PostgreSQL.

A tabela a seguir lista os papéis do PostgreSQL que o AlloyDB predefine:

Nome do papel Privilégios
alloydbsuperuser CREATEROLE, CREATEDB e LOGIN.
postgres CREATEROLE, CREATEDB e LOGIN.
alloydbimportexport CREATEROLE e CREATEDB.
alloydbagent CREATEROLE e CREATEDB.
alloydbreplica REPLICATION
alloydbiamuser Por padrão, essa função não tem privilégios.

As seções a seguir fornecem informações sobre algumas das funções específicas do AlloyDB mais usadas.

A função de grupo alloydbsuperuser

O papel alloydbsuperuser é predefinido para configurar inicialmente o sistema de banco de dados e realizar outras tarefas de superusuário. Esse papel tem os seguintes privilégios:

  • Criar extensões que exigem privilégios de superusuário
  • Criar gatilhos de eventos
  • Criar usuários de replicação
  • Criar publicações e assinaturas de replicação

Como um serviço gerenciado, o AlloyDB não permite que você conceda aos usuários o papel superuser do PostgreSQL. Em vez disso, você pode conceder a qualquer papel de usuário do banco de dados privilégios de superusuário do AlloyDB, concedendo a ele o papel alloydbsuperuser.

A função de usuário postgres

O usuário postgres faz parte do papel alloydbsuperuser. Ao criar um cluster do AlloyDB, você atribui uma senha à função de usuário postgres. Em seguida, você faz login no sistema usando a função de usuário postgres para criar bancos de dados, funções adicionais e assim por diante.

A função de usuário alloydbimportexport

Quando você cria um cluster do AlloyDB, ele cria o usuário padrão, alloydbimportexport, com o conjunto mínimo de privilégios necessário para operações de importação e exportação.

É possível criar os próprios usuários para realizar essas operações. Se você não criar um usuário alloydbimportexport personalizado, o sistema vai usar o usuário alloydbimportexport padrão para operações de importação e exportação.

O usuário alloydbimportexport é um usuário do sistema. Não é possível usar o usuário alloydbimportexport diretamente para fazer login ou realizar outras operações no banco de dados do PostgreSQL.

A função de grupo alloydbiamuser

Os usuários do banco de dados na função de grupo alloydbiamuser se autenticam com uma instância do AlloyDB usando o Identity and Access Management, em vez da autenticação padrão baseada em senha do PostgreSQL.

O AlloyDB não permite que você conceda essa função a usuários usando o comando GRANT do PostgreSQL ou métodos semelhantes. Em vez disso, use as ferramentas administrativas do AlloyDB para criar e gerenciar usuários de banco de dados com base no Identity and Access Management. Para mais informações, consulte Gerenciar a autenticação do IAM.

Criar outros usuários do PostgreSQL no AlloyDB

Você pode criar outros usuários ou papéis do PostgreSQL. Esses usuários têm o mesmo conjunto de privilégios do usuário postgres: CREATE ROLE, CREATEDB e LOGIN. Para mais informações sobre esses privilégios, consulte CREATE ROLE.

É possível mudar os privilégios de qualquer usuário usando o comando ALTER ROLE. Se você criar um novo usuário com o cliente psql, poderá associá-lo a uma função diferente ou atribuir privilégios diferentes.

Gerenciar usuários

É possível criar e gerenciar papéis de usuário do AlloyDB com a CLI do Google Cloud ou usando comandos do PostgreSQL. As seções a seguir demonstram tarefas comuns de gerenciamento de usuários usando um dos métodos.

Antes de começar

Para usar os comandos do PostgreSQL para gerenciar usuários em um cluster, você precisa do seguinte:

  • Acesso ao cliente psql
  • Acesso ao usuário do banco de dados postgres ou a outra função de usuário com os privilégios administrativos adequados

Para usar o console do Google Cloud ou a CLI do Google Cloud para gerenciar usuários em um cluster, ele precisa ter uma instância principal. Se o cluster não tiver uma instância principal, crie uma antes de gerenciar os usuários.

Criar um usuário do banco de dados

Para criar um usuário do banco de dados que se autentica diretamente com o banco de dados usando um nome de usuário e uma senha, também conhecido como autenticação integrada, siga as etapas desta seção.

Para criar um usuário de banco de dados que use o Identity and Access Management para autenticação, consulte Gerenciar a autenticação do IAM.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster em que você quer adicionar um usuário.

  3. Clique em Usuários.

  4. Clique em Adicionar conta de usuário.

  5. Deixe a opção Autenticação integrada selecionada.

Em vez disso, selecione Cloud IAM para criar um usuário do banco de dados que usa o IAM para autenticação. Essa seleção exige etapas adicionais para preparar seu projeto e conceder as permissões adequadas ao novo usuário do banco de dados. Para mais informações, consulte Gerenciar a autenticação do IAM.

  1. Insira um nome de usuário e uma senha para o novo usuário.

  2. Clique em Adicionar.

psql

CREATE USER USERNAME WITH PASSWORD 'PASSWORD';

Para mais informações sobre como criar e definir usuários do banco de dados, consulte CREATE USER.

Depois de criar uma função de usuário, você pode mudar os privilégios dela usando o comando ALTER ROLE no cliente psql.

gcloud

Use o comando gcloud alloydb users create:

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • USERNAME: o nome de usuário da nova função do usuário.

  • PASSWORD: a senha da nova função do usuário. Para criar o usuário sem uma senha, omita esse argumento.

  • CLUSTER_ID: o ID do cluster ao qual adicionar o novo papel de usuário.

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

Depois de criar uma função de usuário, você pode mudar os privilégios dela usando o comando gcloud alloydb users set-roles.

Também é possível conceder funções ou privilégios de superusuário a um usuário durante a criação. Para fazer isso, inclua os argumentos --db-roles ou --superuser, conforme descrito na seção a seguir.

Conceder papéis a um usuário do banco de dados

Console

Para conceder papéis a um usuário do banco de dados, use psql ou a CLI gcloud, em vez do console do Google Cloud.

psql

GRANT ROLE to USERNAME;

Para conceder privilégios de superusuário a um usuário, atribua a ele o papel alloydbsuperuser.

gcloud

Use o comando gcloud alloydb users set-roles para especificar todas as funções que você quer que o usuário tenha:

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • USERNAME: o papel do usuário a quem os papéis serão concedidos.

  • ROLES: uma lista separada por vírgulas de todos os papéis que você quer que o usuário especificado tenha. Liste todas as funções, incluindo as atuais e as novas, que você quer atribuir ao usuário.

    Para encontrar a lista de funções atribuídas ao usuário, execute o seguinte comando:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: o ID do cluster que contém o usuário.

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

Para conceder privilégios de superusuário a um usuário, conceda manualmente o papel alloydbsuperuser usando o comando descrito anteriormente ou execute o comando gcloud alloydb users set-superuser com o argumento --superuser=true:

gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID

Mudar a senha de um usuário do banco de dados

Para definir uma nova senha para um usuário padrão do banco de dados PostgreSQL, siga as etapas desta seção.

Não é possível mudar ou definir a senha de um usuário baseado no IAM, porque esses usuários não usam senhas para autenticação. Para mais informações, consulte Conectar usando uma conta do IAM.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster que contém o usuário do banco de dados cuja senha você quer mudar.

  3. Clique em Usuários.

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

  5. Selecione Alterar senha.

  6. Especifique uma senha:

    • Para definir uma nova senha para esse usuário, digite a senha no campo Senha.

    • Para não definir uma senha para esse usuário, marque a caixa de seleção Sem senha.

  7. Clique em OK.

psql

ALTER USER USERNAME WITH PASSWORD 'PASSWORD';

Para mais informações sobre como mudar a senha de um usuário, consulte ALTER ROLE.

gcloud

Use o comando gcloud alloydb users set-password:

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • USERNAME: o nome de usuário do papel do usuário.

  • PASSWORD: a nova senha a ser atribuída à função do usuário.

  • CLUSTER_ID: o ID do cluster ao qual o papel do usuário pertence.

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

Revogar uma função de um usuário do banco de dados

Console

Para revogar papéis de um usuário do banco de dados, use psql ou a CLI gcloud, em vez do console do Google Cloud.

psql

É possível revogar privilégios concedidos anteriormente de um ou mais papéis ou revogar a filiação de um usuário a um papel.

REVOKE ROLE FROM USERNAME;

Para remover os privilégios de superusuário de um usuário, revogue o papel alloydbsuperuser dele.

gcloud

Para revogar um papel com a CLI do Google Cloud, use o comando gcloud alloydb users set-roles para especificar todos os papéis que você quer que o usuário tenha, omitindo os papéis a serem revogados.

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • USERNAME: a função do usuário de que as funções serão revogadas.

  • ROLES: uma lista separada por vírgulas de todos os papéis que você quer que o usuário especificado tenha, omitindo os papéis a serem revogados.

    Para encontrar a lista de todas as funções atribuídas ao usuário, execute o seguinte comando:

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: o ID do cluster que contém o usuário.

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

Para revogar os privilégios de superusuário, remova manualmente o papel alloydbsuperuser de um usuário usando o comando descrito anteriormente ou execute o comando gcloud alloydb users set-superuser com o argumento --superuser=false.

Conferir uma lista de usuários do banco de dados

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster que você quer consultar.

  3. Clique em Usuários.

psql

O comando \du imprime uma tabela de todos os usuários do banco de dados, incluindo as pertencimentos a grupos.

\du

gcloud

Use o comando gcloud alloydb users list:

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • CLUSTER_ID: o ID do cluster de usuários a serem listados.

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

Excluir um usuário do banco de dados

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique no nome do cluster em que 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.

psql

Antes de excluir um usuário, você precisa descartar todos os objetos que são da propriedade dele ou reatribuir a propriedade e revogar os privilégios concedidos ao papel em outros objetos.

DROP ROLE USERNAME;

gcloud

Use o comando gcloud alloydb users delete:

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

Substitua:

  • USERNAME: o papel do usuário a ser excluído.

  • CLUSTER_ID: o ID do cluster de que você quer remover a função do usuário.

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

A seguir