PostgreSQL mijozi VPNda ekanini hech qachon bilmaydi. U bitta manzildan TCP ulanish va bir to'plam hisob ma'lumotlarini qabul qiladi va ular bilan nima qilishni hal qiladi. Shuning uchun kirishni tunnelga bog'liq qilish uchta alohida qarorni o'zaro mos keladigan tarzda tartibga solish, so'ngra diagrammada chizgan manzil o'rniga server haqiqatda ko'radigan yagona manzilni tekshirish demakdir.

Birlashtirilmasligi kerak bo'lgan uchta qaror

Server qayerda tinglashi bir qaror. Qaysi trafik bu manzilga yetib borishi ikkinchisi bo'lib, uni xost firewalli va uning oldidagi har qanday tarmoq chegarasi qabul qiladi. Qaysi ma'lumotlar bazasi identifikatori qaysi manbadan autentifikatsiya qilishi mumkinligi uchinchisi bo'lib, u pg_hba.conf ichida qabul qilinadi.

Har birini alohida komponent amalga oshiradi va har biri alohida xabar bilan muvaffaqiyatsiz bo'ladi. Ularni muhokamada birlashtirish odamlarning firewall muammosini tuzatish uchun HBA faylini tahrirlashiga olib keladi. Ularni tartibda saqlang: bog'lanmagan tinglovchiga yetib bo'lmaydi, filtrlangan portga ulanib bo'lmaydi, HBA qoidasi esa faqat ulanish mavjud bo'lgandan keyin nima bo'lishini hal qiladi. O'zgarish ta'sir qilmasa, uchta qatlamdan qaysi birini haqiqatda o'zgartirganingizni aniqlang.

Server qayerda tinglaydi

Interfeys nomiga emas, mashinaga haqiqatda berilgan manzilga bog'lang:

listen_addresses = '10.20.0.30'

Ma'lumotlar bazasi o'z tunnel interfeysisiz VPN shlyuzi orqasida turishi mumkin, va aynan shuning uchun manzilni nomlash to'g'ri. Bu sozlamani o'zgartirish to'liq qayta ishga tushirishni talab qiladi; qayta yuklash yetarli emas.

Keyin portni, odatda 5432, xostda va uning oldidagi har bir chegarada filtrlang. Xususiy manzilga bog'lanish ommaviy rad etishning isboti emas, chunki portni yo'naltirish yoki bulut manzilini xaritalash paketlarni hali ham o'sha xususiy tinglovchiga yetkazishi mumkin.

HBA haqiqatda ko'radigan manzil

Marshrutlangan kirishda server har bir mijozning ichki tunnel manzilini ko'radi. Manba tarjimasida u o'rniga shlyuzning tarjima qilingan manzilini ko'radi va har bir mijoz o'sha bitta qiymatga birlashadi. Ruxsat beriladigan prefiksni tanlashdan oldin manbani serverning o'z ulanish dalillari orqali tekshiring.

Allaqachon TLS va SCRAM ishlatadigan joylashtirish uchun ataylab tor masofaviy kirish misoli shunday ko'rinadi:

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 ko'rsatilgan hovuzdan TLS orqali bitta rol va bitta ma'lumotlar bazasiga ruxsat beradi, so'ngra boshqa masofaviy TCP kirishini rad etadi. Bu to'liq HBA faylining o'rnini bosmaydi: mahalliy boshqaruvni, replikatsiyani va boshqa ruxsat etilgan xizmatlarni saqlang, tor qoidalarni esa kengroq ruxsatlardan oldin qo'ying.

Tarjima amalda bo'lganda, HBA mijozlarni asl manzillari bo'yicha ajrata olmaydi. Tarmoq qabulini qat'iy tuting va haqiqiy ma'lumotlar bazasi hisob ma'lumotlarini talab qiling, va trust autentifikatsiyasini hech qachon haqiqiy hisob bilan almashtirmang.

Birinchi moslik yutadi, zaxira yo'q

PostgreSQL faylni yuqoridan pastga o'qiydi va ulanishga mos keladigan birinchi yozuvni ishlatadi. Agar o'sha yozuvning autentifikatsiyasi muvaffaqiyatsiz bo'lsa, ikkinchi urinish yo'q, shuning uchun oldingi keng ruxsat keyingi rad etishni jimgina yengadi.

Bu tartib qoidasi jiddiy yozilgan rad etishning hech qachon kuchga kirmasligining eng keng tarqalgan sababi. Aniq qoidalarni birinchi, kenglarini oxiriga qo'ying, so'ngra faylni to'plam sifatida emas, ketma-ketlik sifatida o'qing. Pastga qo'shgan qoidangiz siyosat emas, bu izoh. Fayl e'tiborsiz qoldirilmoqda degan xulosaga kelishdan oldin uni yuqoriga ko'chiring va qayta yuklang.

HBA ma'lumotnomasi tartibni ham, host va hostssl yozuvlari orasidagi farqni ham belgilaydi, bu qoidaning mazmuni ulanish shifrlangan bo'lishi kerakligida bo'lganda muhim.

Qayta yuklash, qayta ishga tushirish va rad etilgan holat

HBA o'zgarishlari qayta yuklash bilan qo'llaniladi, pg_hba_file_rules ko'rinishi esa tahlil xatolarini topishga yordam beradi. Bu ko'rinish faylning joriy mazmunini tasvirlaydi, ishlab turgan server ularni muvaffaqiyatli yuklaganini emas, shuning uchun toza ro'yxat yangi qoidalar amalda ekanining isboti emas.

Tinglovchi o'zgarishlari o'zining qayta ishga tushirilishini talab qiladi, o'zgarish ta'sirsiz ko'ringanda ikkala amalni chalkashtirish oson.

Yangi sessiyalar bilan sinab ko'ring: mo'ljallangan hisob bilan tasdiqlangan mijoz ulanadi, o'sha hisob tasdiqlanmagan yo'ldan ulanmaydi, va ruxsat etilmagan ma'lumotlar bazasi identifikatori hali ham VPN ichidan muvaffaqiyatsiz bo'ladi. Bu uch natija tarmoq chegarasini ma'lumotlar bazasi avtorizatsiyasidan ajratadi, bu esa qarorlarni alohida saqlashning butun ma'nosidir.

O'xshash maqolalar