O PostgreSQL fornece um conjunto de
funções de banco de dados (roles)
predefinidas que fornecem acesso a certas funcionalidades
e informações privilegiadas comumente necessárias.
Os administradores (incluindo funções de banco de dados com
o privilégio CREATEROLE) podem conceder
(GRANT) estas funções para usuários e/ou outras
funções de banco de dados em seu ambiente, fornecendo a estes
usuários acesso aos recursos e informações especificados.
Por exemplo:
GRANT pg_signal_backend TO admin_user;
Deve-se ter cuidado ao conceder estas funções de banco de dados, garantindo que sejam usadas apenas quando necessário e com a compreensão de que elas concedem acesso a informações privilegiadas.
As funções de banco de dados predefinidas são descritas abaixo. Note-se que as permissões específicas para cada uma das funções de banco de dados predefinidas poderão mudar no futuro, à medida que forem adicionados recursos adicionais. Os administradores devem monitorar as notas de versão em busca de alterações.
pg_checkpoint #
pg_checkpoint permite executar o comando
CHECKPOINT.
pg_create_subscription #
pg_create_subscription permite que usuários
com a permissão CREATE no banco de dados executem
CREATE SUBSCRIPTION.
pg_database_owner #
pg_database_owner sempre tem exatamente um
membro implícito: o dono atual do banco de dados.
Este privilégio não pode ser concedido.
Entretanto, assim como qualquer outra função de banco de dados,
ela pode ser dona de objetos e possuir privilégios de acesso.
Consequentemente, uma vez que pg_database_owner
tenha direitos em um banco de dados modelo, o dono de qualquer
banco de dados criado a partir desse modelo também possuirá estes
direitos.
Inicialmente esta função de banco de dados possui o esquema
public, de modo que cada dono de
banco de dados controla o uso local desse esquema.
pg_maintain #
pg_maintain permite executar
VACUUM,
ANALYZE,
CLUSTER,
REFRESH MATERIALIZED VIEW,
REINDEX e
LOCK
em todas as relações, como se tivesse privilégios
MAINTAIN sobre estes objetos.
pg_monitorpg_read_all_settingspg_read_all_statspg_stat_scan_tables #Estas funções de banco de dados destinam-se a permitir que os administradores configurem facilmente uma função de banco de dados que vise monitorar o servidor de banco de dados. Elas concedem um conjunto de privilégios comuns que permitem à função de banco de dados ler diversas configurações úteis, estatísticas e outras informações do sistema normalmente restritas a superusuários.
pg_monitor permite ler/executar diversas
visões e funções de monitoramento.
Esta função de banco de dados é membro de
pg_read_all_settings,
pg_read_all_stats e
pg_stat_scan_tables.
pg_read_all_settings permite ler todas as
variáveis de configuração, inclusive aquelas normalmente
acessíveis apenas para superusuários.
pg_read_all_stats permite ler todas as visões
pg_stat_* e usar várias
extensões relacionadas a estatísticas, inclusive aquelas
normalmente acessíveis apenas para superusuários.
pg_stat_scan_tables permite executar
funções de monitoramento que podem adquirir bloqueios
ACCESS SHARE em tabelas, potencialmente por
um longo período
(por exemplo, pgrowlocks(text) na extensão
pgrowlocks).
pg_read_all_datapg_write_all_data #
pg_read_all_data permite ler todos os dados
(tabelas, visões, sequências) como se possuísse privilégios de
SELECT sobre estes objetos e privilégios de
USAGE sobre todos os esquemas.
Esta função de banco de dados não ignora as políticas de
segurança no nível de linha (RLS).
Se estiver sendo usada segurança no nível de linha, um
administrador poderá definir BYPASSRLS
nas funções de banco de dados (roles)
às quais esta função de banco de dados é concedida.
pg_write_all_data permite escrever todos os
dados (tabelas, visões, sequências), como se tivesse privilégios
de INSERT, UPDATE e
DELETE sobre estes objetos e privilégios de
USAGE sobre todos os esquemas.
Esta função de banco de dados não ignora as políticas de
segurança no nível de linha (RLS).
Se estiver sendo usada segurança no nível de linha , um
administrador poderá definir definir BYPASSRLS
nas funções de banco de dados (roles)
às quais esta função de banco de dados é concedida.
pg_read_server_filespg_write_server_filespg_execute_server_program #Estas funções de banco de dados destinam-se a permitir que os administradores tenham funções de banco de dados confiáveis — porém sem privilégios de superusuário — capazes de acessar arquivos e executar programas no servidor de banco de dados com o mesmo usuário sob o qual o banco de dados é executado. Elas ignoram todas as verificações de permissão no nível de banco de dados ao acessar arquivos diretamente e poderiam ser usadas para obter acesso no nível de superusuário. Portanto, deve-se ter muito cuidado ao conceder estas funções de banco de dados aos usuários.
pg_read_server_files permite ler arquivos em
qualquer local que o banco de dados possa acessar no servidor,
usando COPY e outras funções de acesso
a arquivos.
pg_write_server_files permite escrever em
arquivos em qualquer local que o banco de dados possa acessar
no servidor, usando COPY e outras funções
de acesso a arquivos.
pg_execute_server_program permite executar
programas no servidor de banco de dados com o mesmo usuário sob
o qual o banco de dados é executado, usando o comando
COPY e outras funções que permitem a execução
de programa no lado servidor.
pg_signal_autovacuum_worker #
pg_signal_autovacuum_worker permite enviar
sinal aos processos trabalhadores
autovacuum para cancelar
a limpeza da tabela corrente ou encerrar a sessão correspondente.
Veja Funções de sinalização do servidor.
pg_signal_backend #
pg_signal_backend permite enviar sinal a outro
processo servidor em segundo plano
(backend) para cancelar
uma consulta ou encerrar sua sessão.
Note-se que esta função não permite enviar sinais a processos
servidores em segundo plano pertencentes a um superusuário.
Veja Funções de sinalização do servidor.
pg_use_reserved_connections #
pg_use_reserved_connections permite usar
encaixes de conexão reservados via
reserved_connections.