pondělí 13. dubna 2026

PostgreSQL: Konfigurační soubor pg_hba.conf

Jeden z nejdůležitějších konfiguračních souborů v databázích PostgreSQL je bezesporu soubor pg_hba.conf.

Jsou v něm údaje o uživatelích oprávněných přihlašovat se do databází daného PostgreSQL serveru.

V článku si soubor popíšeme a ukážeme si, jak jej nastavit.

Standardně používám PostgreSQL na Linuxu, proto vycházím z tohoto prostředí. Ale na Windows bude jeho umístění v podstatě podobné, a to v cestě definované proměnnou prostředí PGDATA.

Takže jeho umístění máme v:

$PGDATA/pg_hba.conf

Co je soubor pg_hba.conf

Soubor pg_hba.conf je hlavní konfigurační soubor pro autentizaci (ověřování) uživatelů v databázích PostgreSQL. Jeho klíčové vlastnosti jsou:

  • Řízení přístupu - funguje jako firewall pro PostgreSQL. Definuje oprávnění pro lokální i vzdálená připojení do databáze. U vzdálených připojení je možné definovat konkrétní IP adresu, ze které lze přistupovat.
  • Struktura pravidel - pravidla se vyhodnocují shora dolů. První pravidlo, které vyhovuje určí, zda je uživateli přístup povolen nebo zamítnut.
  • Formát řádku - každý řádek obsahuje - typ připojení, databázi, uživatele, IP adresu/masku a metodu ověření.
  • Metody ověření:
    • trust - vždy povolit
    • reject - vždy zamítnout
    • md5/scram-sha-256 - zadat heslo
    • peer/ident - dle operačního systému (vezme ověření z operačního systému)
  • Aplikace změn - po úpravě souboru je třeba znovu načíst konfigurací - buď příkazem pg_ctl reload nebo SQL SELECT pg_reload_conf();

Příklady

Po instalaci je soubor pg_hba.conf ve výchozím stavu:

# TYPE   DATABASE     USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
 local   all                                                 trust
# IPv4 local connections:
host     all          all             127.0.0.1/32           trust
# IPv6 local connections:
host     all          all             ::1/128                trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local    replication  all                                    trust
host     replication  all             127.0.0.1/32           trust
host     replication  all             ::1/128                trust

A tak jej upravíme dle našich potřeb. Ideální je všechny trust záznamy odstranit a nebo zakomentovat znakem #.

Finální stav může vypadat např. nějak takto:

# TYPE   DATABASE    USER             ADDRESS                METHOD
local    all         postgres                                ident
local    doodle      admin                                   scram-sha-256
host     doodle      admin            127.0.0.1/32           scram-sha-256
host     doodle      admin            10.1.4.43/32           scram-sha-256
host     doodle      admin            0.0.0.0/0              scram-sha-256
host     doodle      dohled           172.19.227.253/32      scram-sha-256
#
# USERS
#
local    doodle      msika                                   scram-sha-256
host     doodle      msika            0.0.0.0/0              scram-sha-256
host     doodle		 lojza			  172.19.15.110		 	 scram-sha-256
host	 doodle		 eda			  192.168.56.1			 scram-sha-256

Popis položek pg_hba.conf

Jednotlivé sloupce v souboru jsou - TYPE DATABASE USER ADDRESS AUTH-METHOD

Kde:

  • type - nastavuje lokální nebo vzdálené připojení
  • database - do které databáze se může uživatel připojit (buď jméno DB nebo all pro všechny DB)
  • user - jméno uživatele
  • address - buď jedna adresa nebo celý rozsah, také IPv6 (v případě místního připojení ponechat prázdné)
  • auth-method - asi nejdůležitější parametr
    • trust - bez nutnosti ověřování hesla (nepoužívat)
    • reject - odmítne připojení daného řádku
    • md5 - zastaralé šifrování hesla (nepoužívat)
    • scram-sha-256 - ověření hesla (bezpečné)
    • password - heslo se posílá v plain textu (nepoužívat)
    • gss - SSO - při LDAP apod.
    • ident - UNIXová služba ident
    • peer - ověření přes UNIX socket
    • ldap - pouze LDAP bez SSO
    • radius - ověření přes Radius server
    • cert - ověření přes SSL certifikát
    • pam - ověřovací Linux služba PAM
    • bsd - ověřovací služba FreeBSD apod.
    • oauth - autentizační služba Google

Co vím z praxe, tak nejčastěji se používají autentizace trust, peer, ident a scram-sha-256. Ostatní uvádím hlavně pro úplnost, ale nevylučuji, že je v některých firmách (možná i tady u nás) používají.

Soubor pg_hba.conf je mocný nástroj, jímž můžeme řídit přístupy do databáze na našem serveru a při použití šifrování scram-sha-256 je to i velmi bezpečné. Navíc možnost určení konkrétních IP nebo rozsahů IP adres zajišťuje bezpečný provoz našich databází.