Permission — operatsion tizim yoki dasturda foydalanuvchi, jarayon yoxud rolning muayyan resurs ustida qaysi amallarni bajarishi mumkinligini belgilovchi ruxsatdir. Resurs fayl, papka, API endpoint, ma’lumotlar bazasi yozuvi yoki boshqaruv funksiyasi bo‘lishi mumkin. Permission autentifikatsiyadan keyin qo‘llanadi: tizim avval subyekt kimligini, so‘ng unga nima mumkinligini aniqlaydi.
Unix ruxsat modeli
Unixsimon tizimda klassik fayl ruxsatlari uchta toifaga bo‘linadi: owner, group va others. Har bir toifada read, write va execute bitlari mavjud. rwxr-x--- yozuvi egaga uchala amalni, guruhga o‘qish va bajarishni, boshqalarga esa hech qanday huquq berilmaganini anglatadi.
Raqamli ko‘rinishda read 4, write 2, execute 1 qiymatiga ega. Ular qo‘shilib uchlik hosil qiladi: 750 — owner uchun 7, group uchun 5, others uchun 0. Oddiy faylda execute uni dastur sifatida ishga tushirishga, katalogda esa katalog orqali o‘tishga imkon beradi.
Maxsus bitlar va ACL
Setuid bajariladigan fayl jarayoniga fayl egasining effective user identifikatorini berishi mumkin. Setgid fayl yoki katalogda guruh xatti-harakatini boshqaradi. Sticky bit umumiy yoziladigan katalogda obyektni asosan uning egasi o‘chira olishini ta’minlaydi.
Klassik uch toifa murakkab tashkilot uchun yetarli bo‘lmasa, Access Control List qo‘shimcha foydalanuvchi va guruhlarga aniq huquq beradi. ACL bazaviy mode bitlari bilan birga ishlaydi; samarali ruxsatni tekshirishda mask va meros qoidalari hisobga olinadi.
Ilova darajasidagi modellar
Role-Based Access Control permissionlarni rollarga biriktiradi, foydalanuvchi esa bir yoki bir nechta rol oladi. Masalan, editor maqolani o‘zgartiradi, viewer faqat o‘qiydi. Attribute-Based Access Control qarorni foydalanuvchi bo‘limi, resurs turi, vaqt yoki muhit kabi atributlar asosida chiqaradi.
Object-level permission bir xil turdagi resurslar ichida aniq obyektga huquq beradi. Foydalanuvchi o‘z hujjatini tahrirlashi, boshqa hujjatni esa faqat o‘qishi mumkin. Endpointga kirish ruxsati borligi har bir obyektga ham ruxsat borligini anglatmaydi.
Eng kam imtiyoz tamoyili
Least privilege subyektga vazifasi uchun zarur eng kichik huquqlarni beradi. Doimiy administrator ruxsati o‘rniga vaqtinchalik yuqori huquq ishlatilishi mumkin. Service account ham faqat kerakli jadval, bucket yoki queuega kira oladi.
Permission o‘zgarishlari audit qilinadi va davriy qayta ko‘rib chiqiladi. Xodim roli almashganda eski huquq qolib ketishi privilege creepga olib keladi. Deny va allow qoidalari birga bo‘lsa, ularning ustuvorligi aniq tizim semantikasiga bog‘liq.
Tekshirish va bekor qilish
Ruxsat qarori faqat login vaqtida emas, himoyalangan amal bajarilayotgan paytda tekshiriladi. Uzoq session davomida foydalanuvchi roli olib tashlansa, keshlangan permission qachon yangilanishi aniq bo‘lishi kerak. Qisqa muddatli token bu oynani kamaytiradi, lekin tokenni muddatidan oldin bekor qilish uchun revocation mexanizmi talab qilinishi mumkin. Audit yozuvi kim, qaysi resursga, qaysi qaror asosida murojaat qilganini qayd etadi. Ruxsat berilmagan javob resursning mavjudligini ortiqcha oshkor qilmasligi kerak; ayrim tizimlar shu sababli 403 o‘rniga 404 qaytaradi.
Meros va standart ruxsat
Yangi obyekt ruxsatni ota katalog, default ACL yoki dastur siyosatidan meros olishi mumkin. Unixdagi umask yaratish paytidagi maksimal mode bitlaridan ayrim huquqlarni olib tashlaydi. Keyin chmod bilan aniq mode o‘zgartiriladi. Meros qoidasi tushunilmasa, dastur yaratgan fayl kutilganidan kengroq guruhga ochilishi mumkin. Vaqtinchalik fayl va maxfiy kalit uchun boshlang‘ich ruxsat ayniqsa muhim.
Bog‘liq tushunchalar
authorization, authentication, RBAC, ACL, least privilege, chmod, access control