Validar a ordem das regras do pg_hba.conf e recarregar com segurança
PostgreSQLSegurançaComando
-- File location
SHOW hba_file;
# Rules are read top to bottom and the FIRST matching rule wins;
# specific rules must come BEFORE general ones:
# hostssl appdb web_app 10.10.0.0/16 scram-sha-256
# host all all 10.10.0.0/16 reject
# host all all 0.0.0.0/0 scram-sha-256
-- Validate BEFORE reloading: pg_hba_file_rules reads the file on disk
SELECT line_number, type, database, user_name, address, netmask, auth_method, error
FROM pg_hba_file_rules
ORDER BY line_number;
-- Apply if the error column is empty
SELECT pg_reload_conf();O que faz
Mostra onde fica o pg_hba.conf, como o PostgreSQL o interpreta (linha, tipo, banco, usuário, endereço, método) e eventuais erros de sintaxe antes do reload; depois recarrega a configuração.
Quando usar
Ao adicionar uma nova rede/aplicação cliente, migrar de md5 para scram-sha-256 ou investigar erros 'no pg_hba.conf entry for host'.
Atenção
pg_hba_file_rules mostra o arquivo como está agora, não as regras ativas. Se alguma linha tiver error não vazio, o reload NÃO carrega o pg_hba.conf de forma alguma e as regras antigas continuam valendo (o log diz 'pg_hba.conf was not reloaded'). As mudanças afetam apenas novas conexões. Uma regra ampla colocada no início (ex.: host all all 0.0.0.0/0 trust) neutraliza todas as restrições depois dela. Com SSL desligado, linhas hostssl não podem corresponder e mostram uma mensagem na coluna error. Por padrão só superusuários podem ler a view. Garanta que ferramentas que editam o arquivo como root não mudem seu dono; se o usuário postgres não conseguir lê-lo, o reload falha.
Relacionados
- Montar uma hierarquia de roles com privilégio mínimo (GRANT + ALTER DEFAULT PRIVILEGES)
- Configurar isolamento de tenants com row-level security
- Habilitar SSL/TLS e verificar conexões criptografadas (pg_stat_ssl)
- Migrar de senhas md5 para scram-sha-256
- Manter logs de auditoria em nível de role e de objeto com pgaudit