Bosh sahifa Wiki Mandatory Access Control

Mandatory Access Control

Mandatory Access Control — resursga kirish qarorini obyekt egasining ixtiyoridan tashqari, markaziy xavfsizlik siyosati asosida belgilaydigan access-control modeli. MAC tizimida fayl egasi mode bitlarini yumshatgan taqdirda ham security label va policy kirishni rad etishi mumkin. SELinux va AppArmor Linuxdagi mashhur amalga oshirishlar, boshqa tizimlarda ham label yoki profile asosidagi variantlar mavjud.

Siyosat prinsipi

Subjectprocess yoki user contexti — objectfayl, socket, device — ustida amal so‘raydi. Policy subject turi, object labeli, operation va qo‘shimcha shartlarni solishtiradi. Qaror odatda default deny tamoyiliga yaqin: aniq ruxsat bo‘lmasa access rad etiladi.

DAC owner va group bitlari avval yoki parallel tekshiriladi. MAC DACni almashtirishdan ko‘ra qo‘shimcha qatlam sifatida ishlaydi. Ikkalasidan bittasi rad etsa operatsiya bajarilmaydi.

SELinux modeli

SELinux process va objectlarga security context biriktiradi. Type enforcement eng ko‘p ishlatiladigan qism: daemon type’i faqat kerakli file type va socket classlariga ruxsat oladi. Role va user maydonlari qo‘shimcha chegaralar beradi.

Policy compile qilingan qoidalar to‘plami sifatida kernel security hooklarida tekshiriladi. File path nomi emas, inode labeli qarorda asosiy bo‘lishi mumkin. Fayl noto‘g‘ri katalogga ko‘chirilsa label policyga ko‘ra qayta tiklanishi kerak.

AppArmor modeli

AppArmor profilni executable va path patternlari bilan bog‘laydi. U qaysi pathlarga read/write, qaysi capability va network operatsiyalariga ruxsat berilishini belgilaydi. Mount namespace va hard linklar path talqinini murakkablashtirishi sabab kernel mediation qoidalari muhim.

SELinux va AppArmor sintaksisi hamda identity modeli farq qiladi; birining qoidasini boshqasiga so‘zma-so‘z ko‘chirish mumkin emas. Tizim tanlovi distribution va threat modelga bog‘liq.

Enforcing va permissive

Enforcing rejim policy’ni amalda rad etadi. Permissive rejim qarorni loglaydi, ammo operatsiyaga ruxsat beradi; policy ishlab chiqishda foydali. U production himoyasi emas. Faqat bitta domainni permissive qilish imkoniyati tizimga bog‘liq.

Audit logdan avtomatik allow qoida yaratish ehtiyotkorlik talab qiladi. Ilova buzilgan yoki noto‘g‘ri test inputi keraksiz keng access so‘ragan bo‘lishi mumkin. Har denial funksional talab va least privilege nuqtai nazaridan ko‘rib chiqiladi.

Label va lifecycle

Yangi fayl parent katalog va policy transition qoidalariga ko‘ra label oladi. Backup, archive, filesystem ko‘chirish va container image xattr’ni saqlashi kerak. Noto‘g‘ri label xizmatni ishga tushirmaydi yoki noto‘g‘ri domain accessini ochadi.

Container runtime process label va mount label orqali tenantlarni ajratishi mumkin. Privileged container yoki keng device mount MAC chegarasini susaytirishi ehtimol.

Policy versiyalash

Application yangi path, socket yoki capability ishlata boshlasa eski MAC policy uni to‘xtatishi mumkin. Release artifact policy o‘zgarishi bilan birga versiyalanadi va stagingda enforcing rejimda sinovdan o‘tadi. Upgrade vaqtida eski hamda yangi binary qisqa muddat birga ishlasa transitional rule kerak bo‘lishi mumkin. Keng doimiy allow bilan compatibility muammosini yashirish kelajak attack surface’ini oshiradi.

Ma’lumot oqimi

Classical MAC faqat kim qaysi obyektga access olishini emas, sensitivity level bo‘yicha information flow’ni ham boshqarishi mumkin. “No read up, no write down” kabi Bell–LaPadula qoidalari maxfiy data past darajaga chiqishini cheklaydi. Integrity modeli esa ishonchsiz manbadan yuqori ishonchli obyektga yozishni bloklaydi. Amaliy policy declassification va trusted gatewaylarni aniq belgilaydi.

Bog‘liq tushunchalar

SELinux, AppArmor, security label, type enforcement, access control policy, default deny