Rollar, huquqlar va Row Level Security
lockЭтот контент пока недоступен на русском языкеДоступные языки: O'zbek
terminal
Практические лаборатории
Интерактивные задания, привязанные к этому уроку — выполните в реальной среде Kubernetes и проверьте результат.
terminal
PostgreSQL: rol yaratish va o'qish huquqini berish (GRANT)
Osonbolt+20 XP
Ilova bazaga superuser bilan ulanmasligi kerak. Har xizmat uchun alohida rol va faqat KERAKLI huquq — eng asosiy xavfsizlik qoidasi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa app oquvchi nomli rol yarating (login huquqi bilan) Unga hujjat jadvalidan FAQAT o'qish huquqini bering ⚠Yozish huquqi BERILMASIN. Muvaffaqiyat mezoni (jonli) Rol katalogda mavjud va login qila oladi; shu rol nomidan select ISHLAYDI; insert esa RAD etiladi
terminal
PostgreSQL: yozish huquqlarini alohida boshqarish (INSERT/UPDATE/DELETE)
Osonbolt+20 XP
"Yozish huquqi" degan yagona narsa yo'q: insert, update, delete — uch ALOHIDA huquq. Ko'pincha xizmatga faqat ikkitasi kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa app yozuvchi roliga hujjat jadvalida select, insert va update huquqlarini bering. ⚠delete huquqi BERILMASIN — o'chirish faqat administrator ishi. ⚠app yozuvchi roli SEED da allaqachon yaratilgan. Muvaffaqiyat mezoni (jonli) select, insert, update ishlaydi; delete RAD etiladi; katalogda ham aynan shu holat
terminal
PostgreSQL: ustun darajasidagi huquq (maxfiy ustunni yashirish)
Murakkabbolt+30 XP
Hisobot xizmatiga jadval kerak, lekin maxfiy ustuni ko'rinmasligi kerak. Butun jadvalga select berish — ma'lumot oqishi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa app oquvchi roliga hujjat jadvalining FAQAT id, egasi, matn ustunlaridan o'qish huquqini bering. ⚠maxfiy ustuni ko'rinmasin. Avval jadvaldagi barcha huquqlarni qaytarib (revoke), keyin ustunlar bo'yicha bering. Muvaffaqiyat mezoni (jonli) Ruxsat berilgan ustunlarni o'qish ISHLAYDI; maxfiy ustunini o'qish RAD etiladi; select ham RAD etiladi (chunki u maxfiy ni ham so'raydi)
terminal
PostgreSQL: guruh roli va a'zolik orqali huquq berish
Murakkabbolt+30 XP
10 ta xizmatga bir xil huquq kerak. Har biriga alohida grant yozish — 10 joyda qo'lda saqlash. Yechim: GURUH roli. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa app hisobot nomli GURUH rolini yarating — u login QILA OLMASIN (nologin) Guruhga hujjat jadvalidan o'qish huquqini bering app yozuvchi rolini shu guruhga A'ZO qiling ⚠app yozuvchi ga BEVOSITA huquq berilmasin — u faqat guruh orqali o'qiy olsin. Muvaffaqiyat mezoni (jonli) Guruh roli mavjud va login qila olmaydi; app yozuvchi guruh A'ZOSI; guruh orqali select ISHLAYDI; insert esa RAD etiladi
terminal
PostgreSQL: schema huquqi va kelgusi jadvallar (DEFAULT PRIVILEGES)
Murakkabbolt+30 XP
Yangi jadval yaratilganda ilova roli uni o'qiy olmaydi — har migratsiyadan keyin grant yozishni esdan chiqarish klassik nosozlik. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa hisobot nomli schema yarating app oquvchi roliga shu schema uchun usage huquqini bering Shu schema da KELGUSIDA yaratiladigan jadvallarga select huquqi AVTOMATIK berilsin (alter default privileges) ⚠Checker huquq berilgandan KEYIN yangi jadval yaratib, unga huquq avtomatik kelganini tekshiradi. Muvaffaqiyat mezoni (jonli) Schema mavjud; usage huquqi bor; default ACL katalogda yozilgan; YANGI yaratilgan jadvalga select huquqi avtomatik keladi va rol uni haqiqatan o'qiy oladi
terminal
PostgreSQL: Row Level Security — har rol faqat O'Z qatorini ko'rsin
Murakkabbolt+30 XP
Ko'p ijarachi (multi-tenant) bazada har mijoz faqat o'z qatorlarini ko'rishi kerak. Buni har so'rovga where qo'shib ta'minlash ishonchsiz — bitta unutilgan so'rov ma'lumot oqishiga olib keladi. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa hujjat jadvalida row level security ni yoqing oz hujjati nomli siyosat yarating: select uchun, shart — egasi = current user app oquvchi roliga o'qish huquqini bering ⚠Natijada app oquvchi 3 qatordan FAQAT BITTASINI ko'rishi kerak. Muvaffaqiyat mezoni (jonli) RLS yoniq (relrowsecurity); siyosat katalogda mavjud; app oquvchi AYNAN 1 qator ko'radi; app yozuvchi ham aynan 1 qator (o'zining qatorini) ko'radi
terminal
PostgreSQL: RLS yozish siyosati (WITH CHECK) — boshqa nomdan yozishni to'sish
Murakkabbolt+30 XP
O'qish himoyalangan, lekin rol boshqa mijoz nomiga qator QO'SHA olsa — himoya yarim. Yozish uchun alohida siyosat kerak. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa SEED da select siyosati allaqachon bor. Endi YOZISH ni himoyalang: oz qatorini qoshadi nomli siyosat — insert uchun, with check (egasi = current user) app oquvchi roliga insert huquqini bering (ketma-ketlik huquqi bilan) ⚠Rol O'Z nomiga qator qo'sha olsin, BOSHQA nomga esa YO'Q. Muvaffaqiyat mezoni (jonli) O'z nomiga insert ISHLAYDI; boshqa nomga insert RAD etiladi; siyosat katalogda insert buyrug'i uchun yozilgan
terminal
PostgreSQL: RLS tahrirlash siyosati — qatorni boshqa egaga o'tkazishni to'sish
Murakkabbolt+30 XP
Rol o'z qatorini tahrirlay olishi kerak, LEKIN uni boshqa mijozga "o'tkazib yuborish" imkoniyati bo'lmasligi kerak — bu ma'lumotni o'g'irlashning nozik yo'li. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa update uchun oz qatorini tahrirlaydi nomli siyosat yarating: using (egasi = current user) — faqat O'Z qatorini tanlay olsin with check (egasi = current user) — tahrirdan KEYIN ham o'ziga tegishli qolsin Va app oquvchi roliga update huquqini bering. ⚠matn ni o'zgartirish ISHLASHI, egasi ni boshqa rolga o'zgartirish RAD etilishi kerak. Muvaffaqiyat mezoni (jonli) O'z qatorining matn ini o'zgartirish ishlaydi; egasi ni boshqasiga o'zgartirish RAD etiladi; boshqa qatorni tahrirlash 0 qatorga ta'sir qiladi
terminal
PostgreSQL: huquqlarni qaytarish va audit (REVOKE + katalog tekshiruvi)
Murakkabbolt+30 XP
Xizmat to'xtatildi, lekin uning roli hamon bazaga to'liq kirish huquqiga ega. Ortiqcha huquq — eng ko'p uchraydigan xavfsizlik nuqsoni. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa SEED app yozuvchi roliga hujjat jadvalida TO'LIQ huquq (all) bergan. Huquqlarni QISQARTIRING: Barcha huquqlarni qaytarib oling (revoke all) Faqat select va insert ni qayta bering ⚠update, delete, truncate huquqlari QOLMASIN. Muvaffaqiyat mezoni (jonli) select va insert ishlaydi; update, delete, truncate RAD etiladi; katalogda ham aynan shu holat
terminal
PostgreSQL: ko'p rollik xavfsiz sxema (G temasi yakuni)
Murakkabbolt+30 XP
Ishlab chiqarish bazasining to'liq xavfsizlik sxemasi: o'qish guruhi, yozish guruhi, maxfiy ustun va ko'p ijarachi izolyatsiyasi — hammasi birga. Ish katalogi: /root/db/. Bazada HAQIQIY PostgreSQL 16 ishlaydi (unix socket, psql -h /tmp -d hn). Checker JONLI tekshiradi: so'rov NATIJASI, katalog holati (pg indexes, pg constraint, pg roles), EXPLAIN (format json) rejasi va ma'lumotning haqiqiy o'zgarishi. ⚠psql ni postgres foydalanuvchisi ostida chaqirish kerak: su postgres -c "psql -h /tmp -d hn -c '...'" yoki -f fayl.sql. ⚠Server root ostida ishlamaydi — shuning uchun barcha psql chaqiruvlari postgres foydalanuvchisi nomidan bajariladi. hujjat jadvalida 3 qator: egasi (rol nomi), matn, maxfiy. Qatorlar egalari: app oquvchi, app yozuvchi, boshqa. Vazifa Quyidagi sxemani qurib bering: app read (nologin) guruhi — hujjat dan FAQAT id, egasi, matn ustunlarini o'qish huquqi (maxfiy YO'Q) app write (nologin) guruhi — insert va update huquqi (+ ketma-ketlik huquqi) app oquvchi - app read a'zosi; app yozuvchi - app read VA app write a'zosi RLS yoqilsin; tenant select siyosati — har rol faqat egasi = current user qatorini ko'rsin; tenant write siyosati — insert uchun with check (egasi = current user) ⚠Bevosita huquq berilmasin — hammasi GURUHLAR orqali. Muvaffaqiyat mezoni (jonli) Ikki guruh mavjud va login qila olmaydi; a'zoliklar to'g'ri; app oquvchi 1 qator ko'radi va yoza OLMAYDI; app yozuvchi o'z nomiga yozadi, boshqa nomga YO'Q; ikkovi ham maxfiy ustunini KO'RMAYDI
