AiHummer
Oʻzbekcha
KirishShaxsiy kabinet
v1.0.x
{ }Swagger

Qator darajasidagi xavfsizlik

v1.0.x · yangilandi 2026-06-26

AiHummer ko‘p foydalanuvchili bo‘lib, uning eng kuchli izolyatsiya chegarasi o‘zi ma’lumotlar bazasida yashaydi: PostgreSQL Qator Darajali Xavfsizlik (RLS). RLS yoqilganda, bazada — faqatgina ilova kodi emas — so‘rov faqat joriy ijarachiga tegishli satrlarni ko‘rishini ta’minlaydi.

Daraja: Qator darajasidagi xavfsizlik pullik orqali cheklangan Tadbirkorlik tier — bu bepul/Community platformaning bir qismi emas.

Nima uchun RLS

Ilova darajasidagi filtrlash (WHERE tenant_id = ...) kerak, lekin nozik: bitta unutib qo‘yilgan band ma’lumotlarni ijarachilar orasida oqizib yuborishi mumkin. RLS kafolatni PostgreSQL ichiga ko‘chiradi, shunda hatto filtrsiz so‘rov ham faqat joriy ijarachining qatorlarini qaytaradi. Bu dasturiy ta’minotning o‘z doiralashish qatlamidan pastroq chuqurlikdagi himoya qatlamidir. Kengroq ko‘p-ijarali model haqida — va uni idempotent yon ta’sirlar bilan qanday juftlashishini ko‘rish uchun — qarang Ko‘p foydalanuvchilik va identempotentlik.

Cheklangan rol (tanlov asosida)

RLS bu rozilik berish va gateway’ga egasi o‘rniga cheklangan rol ishlatiladigan ikkinchi ma’lumotlar bazasi ulanishini berish orqali faollashtiriladi:

# /home/.aihummer/etc/gateway.env
# Owner pool — runs migrations, used for system/bypass operations
AIHUMMER_DATABASE_URL=postgres://owner:...@localhost/aihummer

# Restricted application pool — RLS policies apply (aihummer_app role)
AIHUMMER_DB_APP_URL=postgres://aihummer_app:...@localhost/aihummer

aihummer_app rol o’ynaydi emas jadval egasi, shuning uchun PostgreSQL unga RLS siyosatlarini qo‘llaydi. Ilova so‘rovlari ushbu cheklangan havza orqali oqadi. RLSni yoqish - bu sozlash masalasi AIHUMMER_DB_APP_URL — va mahalliy/standart (mezbon-mahalliy) o‘rnatishlar o‘sha o‘zgaruvchini avtomatik tarzda sozlaydi, shuning uchun RLS standart bo‘yicha faollashtirilgan. Bu faqat shuni anglatadiki, maxsus yoki qo‘lda joylashtirish amalga oshirilishi kerak bo‘lgan holatda “ixtiyoriy” hisoblanadi AIHUMMER_DB_APP_URL o‘zi.

[!NOTE] Sizsiz AIHUMMER_DB_APP_URL, shlyuz hamma narsada egalar havzasidan foydalanadi va RLS amalda amalga oshirilmaydi. Cheklangan havzani belgilang (qaysi standart o‘rnatuvchi siz uchun bajaradigan) ma’lumotlar bazasi darajasida izolyatsiyani yoqish uchun.

[!IMPORTANT] RLS tarifga bog’liq emas. U Community bilan birga barcha tariflarda bir xil ishlaydi. Agar litsenziya ekranida «Satr darajasidagi himoya» mavjud emas deb ko’rsatilsa, bu o’sha ekranning noaniqligi, ma’lumotlar bazangizning holati emas.

RLS qayerda darhol faol va qayerda uni o’zingiz yoqishingiz kerak

Qanday o’rnatgansiz O’rnatishdan keyingi RLS
Oddiy o’rnatish, PostgreSQL’ni o’rnatuvchi tayyorlaydi Faol. Cheklangan rol va AIHUMMER_DB_APP_URL avtomatik yaratiladi
O’z yoki boshqariladigan PostgreSQL (baza manzili oldindan berilgan) Faol emas. Rol va AIHUMMER_DB_APP_URL qiymatini operator yaratadi
Administrator huquqlarisiz o’rnatish (rootless) Faol emas. Xuddi shunday

[!WARNING] RLS «yoqilgan» ko’rinib, hech narsani himoya qilmaydigan ikki xato. Birinchisi: AIHUMMER_DB_APP_URL jadvallar egasini yoki superfoydalanuvchini ko’rsatadi — PostgreSQL bunday rollarni siyosatlardan ozod qiladi, shlyuz esa RLS’ni baribir faol deb xabar beradi. Alohida cheklangan roldan foydalaning. Ikkinchisi: o’z PostgreSQL’ingizda cheklangan rol taxmin qilish mumkin bo’lgan parol bilan avtomatik yaratilishi mumkin — baza tarmoqdan ochilishidan oldin unga o’z parolingizni bering.

Har-ijarachi uchun cheklash

So‘rov ichida, ilova tenantga xos so‘rovlarni bajarishdan oldin, ulanishda joriy tenantni o‘rnatadi — konseptual jihatdan db.WithTenant. Bir marta cheklangan bo‘lsa, cheklangan rol bo‘yicha RLS siyosatlari har bir o‘qish va yozishni shu ijarachining qatorlari bilan cheklaydi. Cheklanish ish birligi bilan bog‘langan, shuning uchun u bir vaqtda amalga oshirilayotgan so‘rovlar orasida tarqalmaydi.

request ─▶ resolve tenant ─▶ db.WithTenant(tenant) ─▶ queries see only that tenant

Ishchilar uchun tizim / aylanib o’tish rejimi

Baʼzi ishlar qonuniy ravishda ko‘p-ijara yoki ijara-agnostik bo‘lishi mumkin — fon ishchilari, rejalashtiruvchilar, yetkazib berishni tiklash va shunga o‘xshash texnik xizmat. Bular uchun darvozadan foydalaniladi tizim (ayniqsa o‘tib ketish) rejimi bu egasi havzasida ishlaydi, har bir ijarachining RLS siyosatlaridan tashqarida, shuning uchun infratuzilma vazifalari toʻplam bo‘ylab ishlay oladi.

[!WARNING] Bypass rejimi faqat ishonchli ichki xodimlar uchun mo‘ljallangan. So‘rovlarni qayta ishlash kod yo‘llari foydalanuvchi nomidan harakat qiladigan harakat har doim cheklangan orqali o’tishi kerak, ijarachi-doiradagi hovuz — hech qachon aylanib o‘tish yo‘li emas.

Migratsiyalar egasining hovuzida ishlaydi

Shema o‘zgarishlari cheklangan rolda mavjud bo‘lmagan imtiyozlarni talab qiladi, shuning uchun ko‘chirishlar har doim egasining hovuzida ishlaydi (AIHUMMER_DATABASE_URL), maslahatli qulflash ostida, ishga tushishda. Cheklangan aihummer_app rol faqat odatiy ilova trafigi uchun ishlatiladi. Bu imtiyozlarni ajratishni toza qilib saqlaydi: sxema o‘zgartirish operatsiyalari egasi orqali amalga oshiriladi; ijarachining ma’lumotlariga kirish RLS qo‘llanilgan cheklangan rol orqali amalga oshiriladi.

Keyingi qayerga