Chciałbym zezwolić (super) użytkownikowi PostgreSQL na uwierzytelnienie za pomocą metod uwierzytelniania „peer” lub „md5”, najlepiej w obu przypadkach za pomocą lokalnych gniazd domeny Unix. Problem polega na tym, że kolejność wpisów w pg_hba.conf ma znaczenie i zostanie zastosowane pierwsze dopasowanie.
Co ja mam:
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer
local all all md5
Co chciałbym (niepoprawna składnia):
# TYPE DATABASE USER ADDRESS METHOD
local all harold peer-or-md5
local all all md5
Oto kilka szczegółowych informacji na temat środowiska, w którym chcielibyśmy to wykorzystać:
Na tym konkretnym serwerze wszystkie bazy danych są względnie małe (<10 MB danych) i są przeznaczone tylko do odczytu. Są upuszczane i odtwarzane co noc przez superużytkownika Harolda. harold jest także kontem systemowym, więc „peer” działa dobrze dla bezproblemowych cronjobs itp. Następnie istnieje interfejs sieciowy uzyskujący dostęp do baz danych: używa uwierzytelniania md5 (użytkownik systemu to serwer WWW, nazwa użytkownika pg, hasło i nazwa bazy danych są dostarczane przez odwiedzający). Teraz chciałbym, aby użytkownik Harold mógł zalogować się również przez interfejs WWW. Nie udaje się to z powodu ustawienia „peer” dla Harolda.
Obecnym obejściem jest zezwolenie interfejsowi WWW na połączenie za pomocą TCP przy użyciu
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
oprócz lokalnych wpisów w pierwszym przykładzie. To działa, ale wolałbym również używać tutaj lokalnych gniazd - dla wydajności i z powodu przeczucia, że wydaje się to właściwe.
czy to możliwe? Czy są dla nas jakieś lepsze obejścia?