ما هو التحكم في الوصول المستند إلى السمة (ABAC)؟
ABAC هو نموذج التحكم في الوصول (Access control) يستخدم السمات لاتخاذ قرارات التحكم في الوصول. يمكن أن تشمل هذه السمات عوامل مختلفة، مثل:
- سمات المستخدم: مثل الأدوار، القسم، الموقع، إلخ.
- سمات الموارد: مثل مستوى الحساسية، المالك، النوع، إلخ.
- السمات البيئية: مثل وقت الوصول، الموقع، الجهاز، إلخ.
عن طريق تقييم هذه السمات وتمريرها عبر مجموعة من القواعد، يمكن لـ ABAC تحديد ما إذا كان يجب منح الكيان (مثل المستخدم، الخدمة) الوصول إلى مورد. يتيح هذا النهج التحكم الدقيق في الوصول وفرض السياسات الديناميكية بناءً على السياق.
كيف يعمل ABAC؟
يستخدم ABAC نهجًا قائمًا على السياسة للتحكم في الوصول. تتكون سياسة ABAC النموذجية من:
- الموضوع: الكيان الذي يطلب الوصول (مثل المستخدم، الخدمة، الجهاز).
- الإجراء: العملية التي يتم تنفيذها على المورد (مثل القراءة، الكتابة، الحذف).
- المورد: الكيان الذي يتم الوصول إليه (مثل الملف، قاعدة البيانات، API).
- البيئة: السياق الذي يُطلب فيه الوصول (مثل الوقت، الموقع، الجهاز).
- السمات: خصائص الموضوع، المورد، والبيئة التي تُقيم لاتخاذ قرارات الوصول.
- السياسات: مجموعة من القواعد التي تحدد الشروط تحتها يُمنح أو يُرفض الوصول.
سياسات ABAC أكثر تعقيدًا من نماذج التحكم في الوصول التقليدية مثل التحكم في الوصول بناءً على الأدوار (Role-based access control, RBAC) . من ناحية أخرى، يوفر ABAC مرونة وتفصيل أكبر في قرارات التحكم في الوصول.
مثال على سياسات ABAC
على سبيل المثال، يحتوي النظام على عدة سياسات ABAC:
-
السياسة 1: السماح بالوصول إذا:
- (الموضوع) دور الموضوع هو
مدير
. - (السمة) مستوى حساسية المورد هو
عالي
. - (البيئة) الموقع هو
داخلي
. - (الإجراء) أي إجراء.
- (البيئة) الوقت بين التاسعة صباحاً والخامسة مساءً (ساعات العمل).
- (الموضوع) دور الموضوع هو
-
السياسة 2: رفض الوصول إذا:
- (الموضوع) دور الموضوع ليس
مدير
. - (السمة) مستوى حساسية المورد هو
عالي
. - (البيئة) أي موقع.
- (الإجراء) أي إجراء.
- (البيئة) أي وقت.
- (الموضوع) دور الموضوع ليس
-
السياسة 3: السماح بالوصول إذا:
- (الموضوع) دور الموضوع هو
موظف
أومدير
. - (السمة) مستوى حساسية المورد هو
منخفض
. - (البيئة) أي موقع.
- (الإجراء) إجراء
قراءة
. - (البيئة) أي وقت.
- (الموضوع) دور الموضوع هو
سيقوم محرك تقييم السياسة بفحص هذه السياسات بالترتيب، وأول سياسة تطابق الشروط ستحدد قرار الوصول. في الوقت نفسه، يتم فرض سياسة رفض افتراضية إذا لم تتطابق أي سياسات أخرى.
لنقم بمرور بعض السيناريوهات لفهم كيفية عمل ABAC:
السيناريو 1. يريد مستخدم الوصول (تنفيذ إجراء
قراءة
) إلى مستند بمستوى حساسية عالي (المورد) خارج المكتب (البيئة). للمستخدم دورمدير
مخزن في النظام.
القرار: يُرفض الوصول لأن المستخدم خارج المكتب (الموقع ليس داخلي
).
السيناريو 2. يريد مستخدم الوصول (تنفيذ إجراء
قراءة
) إلى مستند بمستوى حساسية عالي (المورد) خلال ساعات العمل (البيئة) في شبكة المكتب (الموقع=داخلي
). للمستخدم دورمدير
.
القرار: يُمنح الوصول لأن جميع الشروط في السياسة 1 تم تلبيتها.
السيناريو 3. جميع الشروط في السيناريو 2 هي نفسها، ولكن المستخدم لديه دور
موظف
بدلاً منمدير
.
القرار: يُرفض الوصول لأن دور المستخدم لا يتطابق مع الشروط في السياسة 1.
السيناريو 4. يريد مستخدم الوصول (تنفيذ إجراء
قراءة
) إلى مستند بمستوى حساسية منخفض (المورد). للمستخدم دورموظف
.
القرار: يُمنح الوصول لأن جميع الشروط في السياسة 3 تم تلبيتها.
السيناريو 5. يريد مستخدم حذف (تنفيذ إجراء
حذف
) مستند بمستوى حساسية منخفض (المورد). للمستخدم دورموظف
.
القرار: يُرفض الوصول لأنه لا توجد سياسة تسمح بإجراء حذف
على مستندات ذات مستوى حساسية منخفض.
قد تلاحظ أن جميع السمات لا تُطلب في كل سياسة. هذه المرونة تتيح آلية تحكم بالوصول أكثر ديناميكية ووعيًا بالسياق.
لغة الترميز الموسعة للتحكم في الوصول (XACML)
XACML هو معيار يعتمد على XML للتعبير عن سياسات التحكم في الوصول. على الرغم من أنه لا يحدد نموذجًا محددًا للتحكم في الوصول، إلا أن XACML يُستخدم غالبًا لتنفيذ سياسات ABAC. لنرى مثالًا غير معياري عن كيفية استخدام XACML لتمثيل سياسات ABAC من المثال السابق:
<PolicySet PolicySetId="ABAC_Policies" PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-overrides">
<Description>ABAC Policies</Description>
<Policy PolicyId="Policy1" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides">
<Description>Employees can read data</Description>
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue>
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
DataType="http://www.w3.org/2001/XMLSchema#string"
MustBePresent="true"
/>
</Match>
</AllOf>
</AnyOf>
</Target>
<Rule RuleId="Rule1" Effect="Permit">
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">employee</AttributeValue>
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
DataType="http://www.w3.org/2001/XMLSchema#string"
MustBePresent="true"
/>
</Match>
</AllOf>
</AnyOf>
</Target>
</Rule>
<Rule RuleId="Rule2" Effect="Deny">
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">user</AttributeValue>
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
DataType="http://www.w3.org/2001/XMLSchema#string"
MustBePresent="true"
/>
</Match>
</AllOf>
</AnyOf>
</Target>
</Rule>
</Policy>
<!-- ...other policies... -->
</PolicySet>
لمزيد من المعلومات حول XACML، انظر لغة الترميز القابلة للتمديد للتحكم في الوصول (XACML) .
اعتبارات التنفيذ
بينما يوفر ABAC وسيلة قوية لإدارة التحكم في الوصول، فإنه يأتي أيضًا مع بعض اعتبارات التنفيذ:
- تعقيد النظام: يمكن أن تصبح سياسات ABAC معقدة مع زيادة عدد السمات والقواعد. إدارة السياسات بشكل صحيح واختبارها يستغرق وقتًا أطول من نماذج التحكم في الوصول البسيطة.
- الأداء: يمكن أن يؤثر تقييم سياسات ABAC المعقدة على أداء النظام. يمكن أن تساعد تقنيات التخزين المؤقت والتحسين في التخفيف من هذه القضية.
- تعارض السياسات: يمكن أن تؤدي السياسات المتعارضة إلى قرارات وصول غير متوقعة. يجب أن تكون مراجعة السياسات وحل النزاعات جزءًا من عملية إدارة السياسة.
ABAC مقابل RBAC
مقارنة ABAC مع التحكم في الوصول بناءً على الأدوار (Role-based access control, RBAC) يمكن أن تساعدك في فهم الفروق بين النموذجين:
RBAC | ABAC | |
---|---|---|
سياسة التحكم في الوصول | بناءً على الأدوار | بناءً على السمات |
التفصيل | واسع النطاق | دقيق |
المرونة | محدودة | مرونة عالية |
التعقيد | أبسط | أكثر تعقيدًا |
تأثير الأداء | ضئيل | يمكن أن يكون كبيرًا |
إدارة الوصول | إدارة الأدوار | إدارة السياسات |
الأفضل لـ | هياكل الأذونات المحددة جيدًا | التحكم في الوصول الديناميكي والواعي للسياق |