O arquivo pg_hba.conf (Host-Based Authentication) é o principal mecanismo de controle de acesso do PostgreSQL. Ele define quais hosts (máquinas), usuários, e bancos de dados podem se conectar, e qual método de autenticação será exigido.
Importância: Sem uma configuração correta, o servidor pode ficar vulnerável a acessos não autorizados ou, no extremo oposto, impedir que conexões legítimas sejam estabelecidas.
A localização pode variar de acordo com o sistema operacional e o método de instalação, mas geralmente pode ser encontrado nos seguintes caminhos:
Linux (Pacotes Padrão): /etc/postgresql/<versao>/main/pg_hba.conf
Instalações via source ou binário: Dentro do diretório de dados (data directory) do cluster PostgreSQL.
Cada linha no pg_hba.conf é uma regra que segue a seguinte estrutura:
| Tipo | Banco de Dados | Usuário | Endereço IP/Rede | Método de Autenticação | Opções |
host | all | postgres | 127.0.0.1/32 | scram-sha-256 | - |
Atenção: As regras são lidas sequencialmente de cima para baixo. A primeira regra que corresponder aos parâmetros da conexão é a que será aplicada, e as regras subsequentes são ignoradas.
| Campo | Descrição | Valores Comuns | Exemplo de Uso |
| Tipo | Define o tipo de conexão. | local (socket UNIX), host (IPv4 ou IPv6), hostssl, hostnossl | host |
| Database | O nome do DB alvo. | all (todos), sameuser, samerole, nome específico | financeiro |
| User | O nome do usuário (role) alvo. | all, nome de usuário específico, @nomedarole (grupo) | app_backend |
| Address | O endereço da máquina cliente. | 127.0.0.1/32 (localhost), 0.0.0.0/0 (qualquer IP), 192.168.1.0/24 (sub-rede) | 10.10.0.0/16 |
| Method | O mecanismo de autenticação. | trust, reject, md5, scram-sha-256, cert, ldap, gssapi | scram-sha-256 |
| Método | Descrição | Nível de Segurança | Recomendação |
trust | Permite a conexão sem senha. | Baixíssimo | Apenas para local ou testes controlados. Nunca em produção via host. |
reject | Rejeita a conexão imediatamente. | Alto | Útil para bloquear IPs ou usuários específicos. |
md5 | Senha criptografada com MD5. | Médio (Legado) | Evitar. Usar scram-sha-256 se possível. |
scram-sha-256 | Autenticação de desafio-resposta. | Alto | Padrão de segurança atual e recomendado. |
peer | Autentica o usuário pelo nome do usuário do SO. | Alto (Local) | Apenas para conexões local. |