التحكم القائم على الخصائص هو التحكم في الوصول بالنظر إلى خصائص الطلب نفسه. فبينما تجيب الأدوار عن سؤال «هل يستطيع هذا المستخدم أن ينفّذ هذا الإجراء أصلاً؟»، تضيف السياسات شروطاً تتعلّق بالسياق: «هل يستطيع هذا المستخدم أن ينفّذ هذا الإجراء في هذه الظروف بالذات؟»
فقد يمنح دورٌ مثلاً «اعتماد أوامر الشراء». وتستطيع سياسةٌ أن تضيّق ذلك إلى «اعتماد أوامر الشراء دون 2.000.000 دج فقط، وبشرط ألا يكون المستخدم هو من أنشأ الأمر».
والسياسات هي الطبقة الثانية من التحكم في الوصول في بيلوسيتي — تجلس فوق الأدوار وتضيف منطقاً مشروطاً دون أن تضطرّك إلى إنشاء عشرات الأدوار الشديدة التخصيص.
متى تستعمل السياسات
السياسات اختيارية تماماً — وكثير من المؤسسات تمضي بالأدوار وحدها. ففكّر في إضافتها حين تحتاج قواعد تتعلّق بـالسياق لا بالهوية وحدها:
| الحاجة | مثال على السياسة |
|---|---|
| حدود المبالغ | لا يعتمد الموظفون المبتدئون أوامر شراء إلا دون 500.000 دج |
| الفصل بين المهام | لا يعتمد المستخدم طلبات شرائه هو (مبدأ الرقابة المزدوجة) |
| الحصر في المستودع | لا يجري المستخدمون تسويات مخزون إلا في المستودعات المسنَدة إليهم |
| القيود الزمنية | لا يُسمح ببعض العمليات إلا في ساعات العمل (الأحد–الخميس، 8:00–17:00) |
| القواعد حسب عنوان الشبكة | تُحصر الإجراءات المالية الحساسة في الوصول من شبكة الشركة وحدها |
فإن لم ينطبق عليك شيء من هذا، فتجاوز السياسات تماماً وعُد إليها لاحقاً إن ظهرت الحاجة.
بنية السياسة
تُعرَّف كل سياسة بخمسة حقول أساسية:
| الحقل | ما يفعله |
|---|---|
| الاسم | تسمية مقروءة تبيّن غرض السياسة (مثل «سقف اعتماد أوامر الشراء — 2.000.000 دج»). والأسماء الجيدة تجعل قائمة السياسات تشرح نفسها. |
| الهدف | أي صلاحية أو وحدة أو مورد أو إجراء تنطبق عليه هذه السياسة. ولا تُقيَّم السياسة إلا حين يحاول المستخدم شيئاً يطابق هدفها. |
| الشرط | تعبير منطقي يجب أن يكون صحيحاً ليسري أثر السياسة. وهنا تحدّد «متى» — أي الظروف التي تعمل فيها القاعدة. |
| الأثر | سماح أو منع. وأغلب السياسات قواعد منع («امنع الاعتماد إذا تجاوز المبلغ الحدّ»)، غير أن قواعد السماح مفيدة لمنح الاستثناءات. |
| الأولوية | رقم يحدّد ترتيب التقييم. فالسياسات الأعلى أولويةً تُقيَّم أولاً. استعمل الأولوية لتضمن فحص قواعد المنع الحرجة قبل قواعد السماح الأقل أهمية. |
منطق التقييم
حين يحاول مستخدم إجراءً، يقيّم بيلوسيتي كل السياسات النشطة التي تطابقه:
- إيجاد السياسات المطابِقة — كل سياسة يطابق هدفها الإجراء المحاوَل.
- تقييم الشروط — يُفحص شرط كل سياسة مطابِقة أمام السياق الحالي (من يفعل، وبماذا يفعل، ومتى، ومن أين).
- تطبيق قاعدة تغليب المنع:
- إن منعت الإجراءَ أيُّ سياسة مطابِقة، مُنع الوصول — مهما قالت السياسات الأخرى. فالمنع يغلب دائماً.
- وإن سمحت سياسةٌ واحدة على الأقل ولم تمنع أي سياسة، مُنح الوصول.
- وإن لم تطابق أي سياسة أصلاً، سقط القرار إلى صلاحيات الأدوار. فالتحكم القائم على الخصائص تضييق اختياري بحت، ولا يحلّ محلّ الأدوار.
ونهج «المنع يغلب» هذا يعني أنك تستطيع أن تضيف سياسات سماح باطمئنان دون أن تخشى تجاوز قاعدة أمنية حرجة عن غير قصد.
خصائص الشروط
الشروط تعبيرات تشير إلى خصائص. وهذه الخصائص هي لبنات قواعدك:
| الفئة | متاحة اليوم | ما توفّره | الخصائص |
|---|---|---|---|
| المستخدم (صاحب الطلب) | نعم | من ينفّذ الإجراء | subject.id، subject.roles، subject.organization_id، subject.is_org_admin |
| الإجراء | نعم | ما العملية المحاوَلة | action.permission، action.method |
| المحيط | نعم | متى يقع الطلب | env.timestamp، env.hour، env.day_of_week (1 = الاثنين) |
| المورد | ليس بعد | السجل الذي يقع عليه الإجراء | — |
خصائص المورد غير متاحة بعد. فالسياسة التي تذكر شيئاً من
resource.تُرفض حين تحفظها، مع بيان السبب. وهذا مقصود: فالنظام لا يستطيع اليوم أن يجلب السجل الذي يقع عليه الإجراء وهو يقرّر الصلاحيات، فتبقى سياسة كهذه في القائمة تبدو نشطة ولا تفعل شيئاً أبداً. ورفضها منذ البداية أسلم من أن تتّكئ على قاعدة لا تعمل. ابنِ ما تحتاجه من القواعد من خصائص المستخدم والإجراء والمحيط.
المعامِلات
لمحرّر الشرط عرضان. العرض البسيط يبني الشرط من قواعد — خاصية ومعامِل وقيمة — مع ضبط القواعد الواجب تحقّقها على كلها أو أي واحدة. والمعامِل يُختار من قائمة، وكلٌّ منها كلمة:
| المعامِل | ما يختبره | مثال |
|---|---|---|
| يساوي، لا يساوي | تطابقاً تاماً | action.method يساوي DELETE |
| أكبر من، لا يقل عن، أقل من، لا يزيد على | عدداً في مواجهة حدّ | env.hour لا يقل عن 8 |
| واحد من | وقوع القيمة في قائمة تعطيها أنت | action.method واحد من POST، PUT |
| يحتوي على | اشتمال خاصية تحمل عدة قيم على هذه القيمة | subject.roles يحتوي على Warehouse Manager |
| بين | عدداً داخل مجال، بحدّيه | env.hour بين 8 و17 |
| يطابق | نصاً في مواجهة نمط | action.permission يطابق ^PROCUREMENT_ |
وهي كلمات، لا علامات مقارنة، في كل اللغات. فعلامات المقارنة تنقلب جهتها حين تُقرأ الصفحة من اليمين إلى اليسار، فتعرض الشاشة العربية عكس القاعدة التي حفظتها، في صمت، وليس على الشاشة ما يفضح ذلك.
والعرض المتقدّم هو الثاني، للشروط التي لا يرسمها البسيط — مجموعة داخل مجموعة، أو نفي. وهو يقبل
المعامِلات نفسها مكتوبةً رموزاً قصيرة، مسرودةً تحت مربع الكتابة، ومعها and وor وnot لربطها.
وأياً كان العرض الذي تبني فيه، يُعاد الشرط عليك جملةً بلغتك، في صفحة السياسة وفي القائمة.
وإن تعذّر حساب شرط — لأنه يسمّي خاصيةً لم يحملها الطلب، أو لأن في معامِله خطأً مطبعياً — عُدّ غير متحقّق، فلا تعمل السياسة في أي من الاتجاهين. والأخطاء المطبعية والخصائص المجهولة تُلتقط حين تحفظ السياسة، فلا ينبغي أن يقع هذا عملياً.
إنشاء سياسة
- اذهب إلى الإعدادات ← السياسات وانقر إضافة.
- اضبط الهدف — اختر أي صلاحية أو أي تركيبة وحدة/مورد/إجراء تُقيَّم هذه السياسة أمامها.
- عرّف الشرط — صِف متى ينبغي أن تعمل هذه السياسة.
- اختر الأثر — سماح أو منع.
- اضبط الأولوية — الأرقام الأعلى تُقيَّم أولاً. استعمل هذا لتتحكّم في ترتيب التقييم حين تنطبق عدة سياسات على الإجراء نفسه.
- احفظ.
تُضيَّق قائمة السياسات من زر التصفية حسب الأثر أو نشط أو مجال الأولوية، أو حسب الوحدة أو المورد أو الإجراء المستهدَف بالضبط — فكل منع في وحدة واحدة اختياران اثنان (التعامل مع القوائم).
نصائح
- ابدأ بقواعد المنع — الحالة الأشيع هي تقييد ما تسمح به الأدوار أصلاً. و«امنع الاعتماد فوق مبلغ كذا» أو «امنع إن كان المستخدم هو من أنشأ السجل» سياستان أوليان نموذجيتان.
- سمِّ السياسات تسميةً واصفة — حين تصير عندك 10 أو 20 سياسة، تكون أسماء واضحة مثل «سقف اعتماد أوامر الشراء — الموظفون المبتدئون — 500 ألف دج» أسهل في التسيير بكثير من «السياسة 7».
- اختبر بمستخدم قليل الصلاحيات — بعد إنشاء سياسة، تحقّق من عملها بالنظر إلى ما يحدث حين يحاول المستخدم المعني الإجراء المقيَّد.
- استعمل الأولوية بحذر — الأولوية الافتراضية تكفي في أغلب الحالات. ولا تعدّلها إلا حين تكون عندك عدة سياسات على الهدف نفسه وتحتاج أن تتحكّم في أيها يُقيَّم أولاً.