Gerenciando usuários, funções e privilégios
O PostgreSQL usa um sistema de funções para gerenciar permissões de banco de dados. As funções são usadas para dar a um único usuário ou a um grupo de usuários um conjunto de privilégios. Determine funções, grupos e privilégios em sua implementação
usando o psql
comando \du
.
Ao provisionar uma nova implantação em IBM Cloud, você recebe automaticamente um usuário admin
para acessar e gerenciar PostgreSQL.
O usuário admin
Ao provisionar uma nova implantação em IBM Cloud, você recebe automaticamente um usuário admin
para acessar e gerenciar PostgreSQL. Depois de definir a senha de administrador,
use-a para se conectar à sua implementação.
Quando admin
cria um recurso em um banco de dados, como uma tabela, admin
é o proprietário desse objeto. Os recursos criados pelo admin
não podem ser acessados por outros usuários, a menos que você conceda
expressamente permissões a eles.
A maior diferença entre o usuário admin
e qualquer outro usuário que você adicione à sua implementação é o pg_monitor
e pg_signal_backend
funções. A função pg_monitor
fornece um conjunto de permissões que torna o usuário administrativo apropriado para monitorar o servidor de banco de dados. A função pg_signal_backend
fornece ao usuário administrativo a capacidade de enviar sinais para cancelar as consultas e as conexões iniciadas por outros usuários. Ele não é capaz de enviar sinais para processos pertencentes a superusuários.
Você também pode usar o usuário admin
para conceder essas duas funções a outros usuários na sua implementação.
Para expor a capacidade de cancelar consultas a outros usuários do banco de dados, conceda a função pg_signal_backend
ao usuário admin
. Use um comando como:
GRANT pg_signal_backend TO joe;
Para permitir que o usuário joe
cancele os backends, conceda pg_signal_backend
a todos os usuários com a função ibm-cloud-base-user
com um comando como:
GRANT pg_signal_backend TO "ibm-cloud-base-user";
Esse privilégio permite que o usuário ou usuários finalizem quaisquer conexões com o banco de dados.
Para configurar um usuário de monitoramento específico, mary
, use um comando como:
GRANT pg_monitor TO mary;
Conceda pg_signal_backend
a todos os usuários com a função ibm-cloud-base-user
com um comando como:
GRANT pg_monitor TO "ibm-cloud-base-user";
Configuração da senha de administrador na interface do usuário
Defina sua senha de administrador por meio da interface do usuário, selecionando sua instância na lista de recursos no IBM Cloud painel. Em seguida, selecione Configurações.. Em seguida, na seção Alterar senha do administrador do banco de dados, digite uma nova senha e clique em Alterar senha.
Configuração da senha de administrador na CLI
Use o comando cdb user-password
do plug-in da CLI do Cloud Databases para configurar a senha do admin
.
Por exemplo, para definir a senha de administrador de uma implantação chamada example-deployment
, use o seguinte comando:
ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>
Definição da senha de administrador na API
O ponto de extremidade da fundação que é mostrado na seção de detalhes da implantação do painel Visão geral do seu serviço fornece a base URL para acessar essa implantação por meio da API. Use-o com o terminal Configurar a senha do usuário especificado para configurar a senha do administrador
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
Usuários da Credencial de serviço
Os usuários que você criar por meio do painel Credenciais de Serviço serão membros do ibm-cloud-base-user
.
Eles são capazes de efetuar login, criar usuários e criar bancos de dados.
Quando um usuário em um grupo criar um recurso em um banco de dados, como uma tabela, todos os usuários que estiverem no mesmo grupo terão acesso a esse recurso. Os recursos criados por qualquer um dos usuários em ibm-cloud-base-user
ficam acessíveis a outros usuários em ibm-cloud-base-user
, incluindo o usuário administrativo.
Usuários criados por meio da CLI
Os usuários que você cria por meio do Cloud Databases plug-in da CLI também são membros do ibm-cloud-base-user
. Eles são capazes de efetuar login, criar usuários e criar bancos de dados.
Quando um usuário criar um recurso em um banco de dados, como uma tabela, todos os usuários que estiverem no mesmo grupo terão acesso a esse recurso. Os recursos criados por qualquer um dos usuários em ibm-cloud-base-user
são acessíveis
a outros usuários em ibm-cloud-base-user
, incluindo o usuário admin
.
Os usuários criados diretamente a partir da API e da CLI não aparecem nas Credenciais de serviço, mas é possível incluí-los, se desejar.
Usuários criados por meio da API
Os usuários criados por meio do API do Cloud Databases. também são membros do ibm-cloud-base-user
. Eles são capazes de efetuar login,
criar usuários e criar bancos de dados.
Quando um usuário criar um recurso em um banco de dados, como uma tabela, todos os usuários que estiverem no mesmo grupo terão acesso a esse recurso. Os recursos criados por qualquer um dos usuários em ibm-cloud-base-user
ficam
acessíveis a outros usuários em ibm-cloud-base-user
, incluindo o usuário administrativo.
Os usuários criados diretamente a partir da API e da CLI não aparecem nas Credenciais de serviço, mas é possível incluí-los, se desejar.
O usuário somente leitura
O ibm-cloud-base-user-ro
gerencia privilégios para os usuários criados para acessar réplicas somente leitura. Para obter mais informações, consulte Configuração de réplicas somente leitura.
O usuário repl
O usuário repl
tem privilégios de replicação e é usado se você ativar o plug-in wal2json
na sua implementação. Ao ativar o wal2json
,
defina a senha do usuário repl
, o que permite que o plug-in wal2json
o utilize.
Outros usuários ibm
Se você executar o comando \du
com a conta admin
, poderá observar usuários chamados ibm
, ibm-cloud-base-user
, ibm-replication
e ibm-rewind
.
O ibm-cloud-base-user
é usado como um modelo para gerenciar funções de grupo para outros usuários. Ele é usado para gerenciar os usuários que são criados através da CLI e API, bem como possibilitar a integração com a criação de
usuários de Credenciais de serviço na IBM Cloud. Um usuário membro de ibm-cloud-base-user
herda os atributos de criação de função e de criação de banco de dados de ibm-cloud-base-user
. O ibm-cloud-base-user
não é capaz de efetuar login.
A conta ibm
é o único superusuário em sua implementação. Uma conta de superusuário não está disponível para nós. Esse usuário é uma conta administrativa interna que gerencia a estabilidade de sua implementação
Usuários criados com psql
É possível ignorar totalmente a criação de usuários por meio da IBM Cloud e criar usuários diretamente no PostgreSQL com o psql
. Isso permite que você use PostgreSQL's nativo Gerenciamento de funções e usuários. Os usuários/funções criados em psql
devem ter todos os seus privilégios definidos manualmente, bem como os privilégios para os objetos que criam.
Os usuários criados diretamente no PostgreSQL não aparecem em Credenciais de Serviço, mas é possível incluí-los se desejar.
Observe que esses usuários não estão integrados aos controles do IAM, mesmo se adicionados às Credenciais de serviço.
Usuários adicionais e sequências de conexões
O acesso à sua implementação Databases for PostgreSQL não se limita ao usuário admin
. Adicione usuários na interface do usuário em Credenciais de serviço, com o Cloud Databases plug-in CLI ou a Cloud Databases API.
Todos os usuários em sua implementação podem usar as sequências de conexões, incluindo sequências de conexões para terminais públicos ou privados.
Quando você criar um usuário, ele será designado com determinadas funções e privilégios do banco de dados. Esses privilégios incluem a capacidade de efetuar login, criar bancos de dados e criar outros usuários.
Criação de usuários na interface do usuário
- Acesse o painel de serviço de seu serviço.
- Clique em Credenciais de serviço para abrir Credenciais de serviço.
- Clique em Nova credencial.
- Escolha um nome descritivo para a sua nova credencial.
- Opcional Especifique se as novas credenciais devem usar um endpoint público ou privado. Use
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
no campo Add inline configuration parameters (Adicionar parâmetros de configuração em linha ) para gerar cadeias de conexão usando o endpoint especificado. O uso do terminal não é obrigatório, ele apenas controla quais nomes do host estão nas sequências de conexões. Os pontos de extremidade privados são gerados por padrão. - Clique em Incluir para provisionar as novas credenciais. Um nome do usuário e uma senha, além de um usuário do banco de dados associado no banco de dados do PostgreSQL são gerados automaticamente.
As novas credenciais aparecem na tabela, e as sequências de conexão estarão disponíveis como JSON em um campo click-to-copy sob Visualizar Credenciais.
Criação de usuários a partir da CLI
Se você gerenciar o seu serviço por meio da CLI da IBM Cloud e do plug-in de bancos de dados em nuvem, será possível criar um novo usuário com cdb user-create
. Por exemplo,
para criar um novo usuário para um "example-deployment", use o seguinte comando:
ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>
Assim que a tarefa for concluída, será possível recuperar as novas sequências de conexões do usuário com o comando ibmcloud cdb deployment-connections
.
Criando usuários por meio da API
O Terminal de Base que é mostrado em Detalhes da implementação do painel Visão geral de seu serviço fornece a URL base para acessar esta implementação por meio da API. Para criar e gerenciar usuários, use a URL base
com o terminal /users
.
curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'
Após a conclusão da tarefa, recupere as cadeias de conexão do novo usuário do ponto de extremidade /users/{userid}/connections
.
Incluindo usuários em Credenciais de serviço
A criação de um novo usuário da CLI ou API não preenche automaticamente as sequências de conexão do usuário em Credenciais de serviço. Para incluí-los, crie uma nova credencial com as informações sobre o usuário existentes
Insira o nome de usuário e a senha no campo JSON Incluir parâmetros de configuração embutidos ou especifique um arquivo onde as informações JSON são armazenadas. Por exemplo, colocar {"existing_credentials":{"username":"Robert","password":"supersecure"}}
no campo gera Credenciais de serviço com o nome de usuário "Robert" e a senha "superseguro" preenchidos nas sequências de conexão.
A geração de credenciais de um usuário existente não verifica ou cria esse usuário.