Policy engine — deklarativ qoidalarni kirish ma’lumotlari bilan hisoblab, qaror yoki moslik natijasini qaytaradigan dasturiy komponentdir. U avtorizatsiya, konfiguratsiya muvofiqligi, deploy nazorati, tarmoq siyosati va ma’lumotlarni boshqarishda ishlatiladi. Qoidalar ilova kodidan ajratilgani uchun ularni markaziy boshqarish, versiyalash va turli xizmatlarda bir xil qo‘llash mumkin.
Deklarativ siyosat
Imperativ kod “qanday bajarish”ni ketma-ket buyruqlar bilan ko‘rsatadi. Siyosat esa ko‘pincha “qaysi holatga ruxsat” yoki “qaysi talab bajarilishi shart”ligini ifodalaydi. Masalan, productionga faqat imzolangan image, tasdiqlangan registry va resurs limitlari mavjud bo‘lganda deploy qilish qoidasi yozilishi mumkin.
deny if environment == "production"
and image.signature_verified == false
Engine kirish obyektini, siyosatlar to‘plamini va ba’zan tashqi atributlarni oladi. Natija boolean, ruxsatlar ro‘yxati, sabablar, buzilgan talablar yoki bajarilishi kerak bo‘lgan majburiyatlardan iborat bo‘lishi mumkin.
Tuzilma
Siyosat tili parser yoki kompilyator orqali ichki ko‘rinishga o‘tkaziladi. Evaluator qoidalarni kirish ma’lumotiga tatbiq etadi. Policy store tasdiqlangan versiyalarni saqlaydi, distribution qatlami esa ularni agent yoki xizmatlarga yetkazadi. Avtorizatsiya holatida engine PDPning asosiy hisoblash qismi bo‘lishi mumkin.
Tashqi ma’lumotni baholash vaqtida masofadan olish qulay, lekin kechikish va mavjudlik bog‘liqligini oshiradi. Muhim atributlar so‘rov bilan berilishi yoki oldindan sinxronlashtirilishi mumkin. Manba, yangilik muddati va ishonchlilik aniq belgilanadi.
Siyosat hayot davri
Qoida kod kabi repozitoriyda saqlanadi, ko‘rib chiqiladi va avtomatik testdan o‘tadi. Sintaksis tekshiruvi yetarli emas: ruxsat berilishi, rad etilishi va chegaraviy holatlar uchun misollar yoziladi. Property-based test “hech bir tenant boshqasining resursiga kira olmaydi” kabi invariantni ko‘plab kirishlarda tekshirishi mumkin.
Yangi siyosat avval dry-run yoki audit rejimida hisoblanib, amaldagi qarorni o‘zgartirmasdan farqlar yoziladi. Kutilmagan bloklashlar tahlil qilingach, majburiy rejimga o‘tiladi. Versiya qaytarish uchun avvalgi siyosat va mos ma’lumot sxemasi saqlanadi.
Qarama-qarshilik va tushuntirish
Bir nechta qoida mos kelganda ustuvorlik algoritmi barqaror va ochiq bo‘ladi. Default deny xavfsiz boshlang‘ich holat yaratadi. Siyosatlar soni oshganda biri ikkinchisini soyada qoldirishi yoki hech qachon ishlamasligi mumkin; statik tahlil bunday holatlarni topishga yordam beradi.
Explain funksiyasi qaror qaysi kirish va qoidaga asoslanganini ko‘rsatadi. Bu operator va auditor uchun muhim, biroq tashqi xato javobida ichki xavfsizlik tuzilmasi to‘liq ochilmaydi. Maxfiy atributlar diagnostikada maskalanadi.
Ishlash va xavfsizlik
Engine qarori ko‘pincha kritik yo‘lda turadi. Siyosat oldindan kompilyatsiya qilinishi, indekslanishi va ehtiyotkor kesh qilinishi mumkin. Kesh kaliti barcha qaror atributlari va siyosat versiyasini qamrab oladi. Engine ishlamay qolsa, himoyalangan amal odatda rad etiladi.
Siyosatni o‘zgartirishning o‘zi yuqori vakolatdir. Muallif, tasdiqlovchi va deploy qiluvchi vazifalari ajratiladi; artefakt imzolanadi va tarqatish auditi yuritiladi. Engine bajaradigan til umumiy maqsadli kodga aylansa, zararli yoki tugamaydigan hisoblash xavfi paydo bo‘ladi, shuning uchun vaqt va resurs chegaralari qo‘yiladi.
Ma’lumot sxemasi
Policy input uchun qat’iy schema bo‘lishi xato yozilgan atributning jim nullga aylanishini oldini oladi. Son, satr, vaqt va ro‘yxat turlari tekshiriladi. Siyosat yangi schema versiyasiga ko‘chirilganda migratsiya vositasi va moslik testi ishlatiladi. Engine qarorni faqat berilgan ma’lumot asosida takrorlay olishi uchun vaqt va tashqi holat ham explicit input sifatida uzatiladi.
Bog‘liq tushunchalar
Policy Decision Point, Policy Enforcement Point, Policy as Code, Attribute-Based Access Control, Authorization, Compliance, Default deny