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
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.
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.
Insira um nome de usuário e uma senha para o novo usuário.
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
Acesse a página Clusters.
Clique no nome do cluster que contém o usuário do banco de dados cuja senha você quer mudar.
Clique em Usuários.
Na linha que representa o usuário cuja senha você quer mudar, clique em
Abrir ações para este usuário.Selecione Alterar senha.
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.
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
Acesse a página Clusters.
Clique no nome do cluster que você quer consultar.
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
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 este usuário.Selecione Remover.
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
.