PostgreSQL heç vaxt müştərinin VPN-də olduğunu bilmir. O, bir ünvandan TCP bağlantısı və bir sıra etimadnamə alır və onlarla nə edəcəyinə qərar verir. Buna görə də girişi tuneldən asılı etmək üç ayrı qərarı bir-birinə uyğun gələcək şəkildə tənzimləmək, sonra isə diaqramda çəkdiyiniz ünvanı deyil, serverin həqiqətən gördüyü yeganə ünvanı yoxlamaq deməkdir.

Birləşdirilməməli olan üç qərar

Serverin harada dinləməsi bir qərardır. Hansı trafikin o ünvana çata biləcəyi ikinci qərardır və onu host firewall-u ilə qarşısındakı hər hansı şəbəkə sərhədi verir. Hansı verilənlər bazası kimliyinin hansı mənbədən autentifikasiya ola biləcəyi üçüncü qərardır və pg_hba.conf faylında verilir.

Hər biri fərqli komponent tərəfindən tətbiq olunur və hər biri fərqli mesajla uğursuz olur. Onları müzakirədə birləşdirmək, insanların firewall problemini həll etmək üçün HBA faylını redaktə etməsi ilə nəticələnir. Onları ardıcıllıqla saxlayın: bağlanmamış dinləyiciyə çatmaq mümkün deyil, filtrdən keçmiş porta qoşulmaq mümkün deyil, HBA qaydası isə yalnız bağlantı yarandıqdan sonra nə baş verdiyini müəyyən edir. Dəyişikliyin heç bir təsiri olmadıqda, üç qatdan hansını həqiqətən dəyişdiyinizi müəyyənləşdirin.

Serverin harada dinləməsi

İnterfeys adına deyil, maşına həqiqətən təyin edilmiş ünvana bağlanın:

listen_addresses = '10.20.0.30'

Verilənlər bazası öz tunel interfeysi olmadan VPN şlüzünün arxasında yerləşə bilər və ad vermək üçün ünvanın düzgün seçim olmasının səbəbi məhz budur. Bu parametrin dəyişdirilməsi tam yenidən başladılma tələb edir; yenidən yükləmə kifayət etmir.

Sonra portu, adətən 5432-ni, hostda və qarşısındakı hər sərhəddə filtrdən keçirin. Şəxsi ünvana bağlanmaq ictimai qadağanın sübutu deyil, çünki port yönləndirməsi və ya bulud ünvanı xəritələməsi paketləri hələ də həmin şəxsi dinləyiciyə çatdıra bilər.

HBA-nın həqiqətən gördüyü ünvan

Marşrutlaşdırılmış girişdə server hər müştərinin daxili tunel ünvanını görür. Mənbə transformasiyasında isə o, əvəzində şlüzün dəyişdirilmiş ünvanını görür və bütün müştərilər həmin vahid dəyərə çökür. İcazə verəcəyiniz prefiksi seçməzdən əvvəl mənbəyi serverin öz bağlantı sübutları vasitəsilə yoxlayın.

Artıq TLS və SCRAM istifadə edən quraşdırma üçün qəsdən dar uzaqdan giriş nümunəsi belə görünür:

hostssl appdb app_login 10.8.0.0/24 scram-sha-256
host all all 0.0.0.0/0 reject
host all all ::/0 reject

Bu, göstərilən hovuzdan TLS üzərindən bir rola və bir verilənlər bazasına icazə verir, sonra digər uzaq TCP girişini rədd edir. Bu, tam HBA faylının əvəzi deyil: yerli idarəetməni, replikasiyanı və hər hansı digər icazəli xidməti saxlayın və dar qaydaları daha geniş icazələrdən əvvəl yerləşdirin.

Transformasiya işə düşdükdə HBA müştəriləri ilkin ünvanlarına görə ayıra bilmir. Şəbəkə qəbulunu sıx saxlayın və real verilənlər bazası etimadnamələri tələb edin, heç vaxt trust autentifikasiyasını faktiki hesabla əvəz etməyin.

İlk uyğunluq qalib gəlir, ehtiyat variant yoxdur

PostgreSQL faylı yuxarıdan aşağıya oxuyur və bağlantıya uyğun gələn ilk qeydi istifadə edir. Həmin qeydin autentifikasiyası uğursuz olarsa, ikinci cəhd yoxdur, buna görə də əvvəlki geniş icazə sonrakı rəddi səssizcə məğlub edir.

Bu sıralama qaydası diqqətlə yazılmış rəddin heç vaxt qüvvəyə minməməsinin ən çox rast gəlinən səbəbidir. Xüsusi qaydaları əvvələ, genişləri sona qoyun, sonra faylı çoxluq kimi deyil, ardıcıllıq kimi oxuyun. Sona əlavə etdiyiniz qayda siyasət deyil, şərhdir. Faylın görməzdən gəldiyi qənaətinə gəlməzdən əvvəl onu yuxarı aparın və yenidən yükləyin.

HBA arayışı həm sıranı, həm də host və hostssl qeydləri arasındakı fərqi müəyyən edir; bu, qaydanın məqsədi bağlantının şifrələnməsi olduqda vacibdir.

Yenidən yükləmə, yenidən başlatma və rədd halı

HBA dəyişiklikləri yenidən yükləmə ilə tətbiq olunur və pg_hba_file_rules görünüşü təhlil xətalarını tapmağa kömək edir. Bu görünüş faylın cari məzmununu təsvir edir, işləyən serverin onları uğurla yüklədiyini deyil, buna görə də təmiz siyahı yeni qaydaların işlədiyinin sübutu deyil.

Dinləyici dəyişiklikləri öz yenidən başlatmasını tələb edir və dəyişikliyin heç bir təsiri yoxmuş kimi göründüyü halda iki əməliyyatı qarışdırmaq asandır.

Təzə sessiyalarla sınaqdan keçirin: nəzərdə tutulan hesabla təsdiqlənmiş müştəri qoşulur, həmin hesab təsdiqlənməmiş yoldan qoşulmur, icazəsiz verilənlər bazası kimliyi isə VPN-in içindən də uğursuz olur. Bu üç nəticə şəbəkə sərhədini verilənlər bazası avtorizasiyasından ayırır, qərarları ayrı saxlamağın bütün mənası da budur.

Əlaqəli məqalələr