التحكم في الوصول RBAC و ABAC: النماذج التي يجب أن تعرفها
التحكم في الوصول المستند إلى الدور (RBAC) والتحكم في الوصول المستند إلى السمات (ABAC) هما اثنان من أكثر نماذج التحكم في الوصول شهرة. في هذا المنشور، سنعطي لمحة عامة عن كلا النموذجين ونناقش اختلافاتهما.
SimengDeveloper
توقف عن إضاعة أسابيع في مصادقة المستخدم
أطلق تطبيقات آمنة بشكل أسرع مع Logto. قم بدمج مصادقة المستخدم في دقائق وركز على منتجك الأساسي.
التحكم في الوصول هو جانب حاسم من جوانب الأمان في أي نظام. فهو يضمن أن المستخدمين المصرح لهم فقط يمكنهم الوصول إلى الموارد وأداء الإجراءات. التحكم في الوصول المستند إلى الدور (RBAC) والتحكم في الوصول المستند إلى السمات (ABAC) هما اثنان من أكثر نماذج التحكم في الوصول شهرة المستخدمة في الأنظمة الحديثة. يتم تبني كلا النموذجين على نطاق واسع ويمكن استخدامهما لتطبيق سياسات التحكم في الوصول بشكل فعال. لكن ما هي وكيف تختلف؟
تم تقديم التحكم في الوصول المستند إلى الدور (RBAC) لأول مرة في أوائل التسعينيات. يعود الفضل في رسم هذا النموذج إلى ديفيد فيرييولو وريك كوهن في ورقة نُشرت في عام 1992. منذ ذلك الحين، أصبح RBAC واحدًا من أكثر نماذج التحكم في الوصول المستخدمة على نطاق واسع في الصناعة.
في RBAC، تستند سياسات التحكم في الوصول إلى الأدوار، وهي مجموعات من الأذونات. يُعيَّن للمستخدمين أدوار (مثل المدير، المحرر، المشاهد)، وتُحدد حقوق وصولهم بالأذونات (مثل الإنشاء، التعديل، الحذف) للموارد المحددة (مثل الملفات، قواعد البيانات، التطبيقات). يبسط إدارة سياسات التحكم في الوصول عن طريق تجميع المستخدمين بناءً على أدوارهم وتعيين الأذونات لها. من السهل إضافة أو إزالة المستخدمين من الأدوار، وستنعكس التغييرات تلقائيًا في سياسات التحكم في الوصول.
المورد: المورد هو كيان يمكن للمستخدم الوصول إليه. يمكن أن تكون الموارد أي شيء من الملفات، قواعد البيانات، واجهات برمجة التطبيقات، أو أي كيان آخر في النظام يحتاج إلى الحماية.
الإذن: الإذن هو إجراء معين يمكن للمستخدم تنفيذه على المورد. على سبيل المثال، الإنشاء، التعديل، الحذف، العرض. قد يختلف تعريف الأذونات اعتمادًا على النظام. في معظم الحالات، تُعرَّف الأذونات عند مستوى المورد مع الحد الأدنى من التفاصيل.
الدور: الدور هو مجموعة من الأذونات التي تحدد مجموعة من الإجراءات التي يمكن للمستخدم تنفيذها. على سبيل المثال، قد يتمتع دور المدير بأذونات لإنشاء وتعديل وحذف الموارد، بينما قد يتمتع دور المشاهد بالإذن لعرض الموارد.
المستخدم: المستخدم هو كيان يمكن تعيين دور أو أكثر له. يُمنح المستخدمون حق الوصول إلى الموارد بناءً على الأذونات المرتبطة بالأدوار التي تم تعيينهم لها.
هناك العديد من أنواع RBAC التي تمدد النموذج الأساسي لاستيعاب متطلبات التحكم في الوصول الأكثر تعقيدًا:
RBAC0: النموذج الأساسي حيث يتم تعيين المستخدمين للأدوار وتُعيَّن الأذونات للأدوار.
RBAC1: يضيف مفهوم الهياكل الهرمية للأدوار. يمكن للأدوار أن ترث الأذونات من أدوار أخرى. يُعرف أيضًا بـ RBAC الهرمي.
RBAC2: يضيف تقييدات على الأدوار. يمكن استخدام التقييدات لتعريف ظروف إضافية يجب استيفاؤها لكي يتم تعيين المستخدم لدور. يُعرف أيضًا بـ RBAC المستند إلى القيود.
RBAC3: يجمع ميزات RBAC1 و RBAC2. يدعم كل من الهياكل الهرمية للأدوار والتقييدات.
لمزيد من المعلومات حول هذه الأنواع، الرجاء الرجوع إلى نماذج RBAC وتطورها.
البساطة: RBAC سهل الفهم والتنفيذ. تعيين الأذونات للأدوار والأدوار للمستخدمين أمر مباشر.
الكفاءة: يبسط إدارة سياسات التحكم في الوصول عن طريق تجميع المستخدمين بناءً على أدوارهم. من السهل إضافة أو إزالة المستخدمين من الأدوار دون تغيير سياسات التحكم في الوصول. خاصة في المنظمات الكبيرة ذات الهياكل الإذن المحددة، يمكن أن يكون RBAC فعالًا جدًا.
الشفافية: يوفر RBAC خريطة واضحة بين الأدوار والأذونات والمستخدمين. من السهل تدقيق ومراجعة سياسات التحكم في الوصول.
الصلابة: يمكن أن يكون RBAC صلبًا عندما يتعلق الأمر بتعريف سياسات التحكم في الوصول المعقدة. قد لا يكون مناسبًا للأنظمة التي تحتاج سياسات التحكم في الوصول فيها إلى أن تكون أكثر ديناميكية وتعتمد على السياق.
الدقة: قد يفتقر RBAC إلى الدقة اللازمة للتحكم في الوصول بدقة عالية. ترتبط سياسات التحكم في الوصول بأدوار محددة جيدًا، وقد يتطلب الأمر جهدًا إضافيًا لتحديد الأذونات بمستوى أكثر دقة.
انفجار الأدوار: في المنظمات الكبيرة ذات هياكل الإذن المعقدة، يمكن أن يتزايد عدد الأدوار على نحو متسارع، مما يؤدي إلى انفجار الأدوار. يمكن أن يكون إدارة عدد كبير من الأدوار تحديًا.
ABAC هو نموذج للتحكم في الوصول أكثر مرونة مقارنةً بـ RBAC. إنه نموذج تفويض يحدد سياسات التحكم في الوصول بناءً على سمات المستخدم والمورد والإجراء والبيئة. يسمح للمنظمات بتحديد سياسات التحكم في الوصول بدقة عالية يمكنها التكيف مع السياقات والظروف المختلفة.
الموضوع: الموضوع هو كيان يطلب الوصول إلى المورد. يمكن أن يكون مستخدمًا، جهازًا، تطبيقًا، أو أي كيان آخر يحتاج إلى الوصول إلى الموارد.
المورد: كما هو الحال في RBAC، المورد هو كيان يمكن أن يصل إليه الموضوع. يمكن أن تكون الموارد ملفات، قواعد بيانات، واجهات برمجة التطبيقات، أو أي كيان آخر في النظام.
الإجراء: الإجراء هو عملية معينة يمكن للموضوع تنفيذها على المورد. يمكن أن يكون إنشاء، قراءة، تحديث، حذف، أو أي عملية أخرى تحتاج إلى التحكم.
البيئة: البيئة هي السياق الذي تُقدَّم فيه طلب الوصول. يمكن أن تشمل السمات مثل الوقت من اليوم، الموقع، الشبكة، الجهاز، إلخ.
السمة: السمة هي صفة لموضوع، مورد، إجراء، أو بيئة. يمكن أن تكون السمات أي شيء من أدوار المستخدمين، القسم، الموقع، عنوان IP، نوع الجهاز، إلخ.
السياسة: السياسة هي قاعدة تحدد الظروف التي يتم فيها منح الوصول أو رفضه. يتم تعريف السياسdات بناءً على السمات.
المرونة: يمكن لـ ABAC استيعاب سياسات التحكم في الوصول المعقدة التي تستند إلى سمات متعددة. يسمح للمنظمات بتحديد السياسات بدقة عالية يمكنها التكيف مع السياقات والظروف المختلفة.
ديناميكية: يمكن أن تكون سياسات ABAC ديناميكية وتعتمد على السياق. يمكن اتخاذ قرارات التحكم في الوصول بناءً على السمات في الوقت الحقيقي مثل الموقع، الوقت من اليوم، نوع الجهاز، إلخ.
الدقة: يوفر ABAC تحكمًا دقيقًا في الوصول من خلال السماح للمنظمات بتحديد السياسات بناءً على سمات متعددة. على عكس تحديد الأدوار والأذونات، يمكن أن تكون السياسات المستندة إلى السمات أكثر دقة.
التعقيد: يمكن أن يكون ABAC أكثر تعقيدًا في التنفيذ والإدارة مقارنةً بـ RBAC. قد يتطلب تعريف السمات والسياسات مزيدًا من الجهد والخبرة. على عكس RBAC، حيث تكون الأدوار والأذونات مهيكلة جيدًا، قد تكون السمات أكثر ديناميكية وكذلك السياسات. قد يكون من الصعب إدارة عدد كبير من السمات والسياسات في نظام معقد. غالبًا ما يلزم محرك مركزي لتقيم السياسات لتقييم السياسات.
الأداء: يمكن أن يؤثر تقييم السمات على الأداء، خاصةً في البيئات التي تتطلب استجابة في الوقت الحقيقي. يمكن أن تؤدي السياسات المستندة إلى سمات متعددة وشروط الوقت الحقيقي إلى زيادة التأخير في قرارات التحكم في الوصول.
من جدول المقارنة، يتضح أن RBAC أفضل للأنظمة ذات هياكل الأذونات المحددة جيدًا والسياسات التي تكون ثابتة نسبيًا. من ناحية أخرى، ABAC هو الأنسب للأنظمة حيث تحتاج سياسات التحكم في الوصول إلى أن تكون ديناميكية، مستندة إلى السياق، وتحتاج إلى دقة عالية.
في هذه الحالة، سياسات التحكم في الوصول بسيطة ومهيكلة جيدًا. يتطلب فحص إذن بمستوى واحد لتحديد ما إذا كان لدى المستخدم حق الوصول إلى مورد.
في نموذج RBAC، ستبقى عملية تقييم التحكم في الوصول لمورد سجلات المرضى بسيطة ومباشرة، سواء كان لدى المستخدم إذن read, write, أو delete;
بينما يحتاج ABAC إلى تضمين سمات إضافية مثل department-id و doctor-id. ماذا لو كان هناك جهاز إنترنت الأشياء يحتاج إلى الوصول إلى سجلات المرضى؟ سيتطلب إدخال سمة جديدة device-id في تقييم السياسة. كيف سيتم منح إذن read مؤقت لطبيب متدرب؟
في الخلاصة، RBAC هو الاختيار الأنسب. RBAC بسيط وفعال للأنظمة ذات هياكل الأذونات المحددة جيدًا حيث تكون سياسات التحكم في الوصول ثابتة.
في هذه الحالة، بالإضافة إلى إذن read القديم، نحتاج إلى إدخال إذن جديد read-own. يمكننا تعريف أدوار للأطباء والممرضات والمديرين والمرضى، وتعيين الأذونات المناسبة لكل دور.
الآن أصبحت عملية تقييم التحكم في الوصول أكثر تعقيدًا بعض الشيء، خاصة لإجراء read سجلات المرضى:
GET /patient-records: user.permission.includes('read')
POST /patient-records: user.permission.includes('write')
في هذه الحالة، سياسات التحكم في الوصول أكثر تعقيدًا وتعتمد على السياق. ستتطلب عملية تقييم التحكم في الوصول لمورد سجلات المرضى مستويات متعددة من فحص الأذونات لتحديد ما إذا كان لدى المستخدم حق الوصول إلى المورد.
في نموذج RBAC، ستحتاج عملية تقييم التحكم في الوصول لمورد سجلات المرضى إلى مستويات متعددة من فحص الأذونات لتحديد ما إذا كان لدى المستخدم حق الوصول إلى المورد. على سبيل المثال، لتحديد ما إذا كان لدى المريض حق الوصول إلى سجلاته الخاصة، سيحتاج النظام لتفقد ما إذا كان لدى المستخدم إذن read-own وإذا كان معرف المستخدم يتوافق مع معرف المريض.
في نموذج ABAC، يمكن أن تكون عملية تقييم التحكم في الوصول أكثر مباشرة. يمكن تعريف السياسات بناءً على سمات المستخدم، المورد، والإجراء. على سبيل المثال، لتحديد ما إذا كان لدى المريض حق الوصول إلى سجلاته الخاصة، يمكن لمحرك السياسة تقييم السياسة بناءً على معرف المستخدم ومعرف المريض.
في هذه الحالة، قد يكون ABAC مناسبة أفضل. ABAC أكثر ملاءمة للأنظمة التي تحتاج إليها سياسات التحكم في الوصول أن تكون ديناميكية، تعتمد على السياق، وتحتاج إلى دقة عالية.
يعتمد الاختيار بين RBAC و ABAC على المتطلبات الخاصة بالنظام. RBAC هو الأنسب للأنظمة ذات هياكل الأذونات المحددة جيدًا حيث تكون سياسات التحكم في الوصول ثابتة. ABAC هو الأنسب للأنظمة حيث تحتاج سياسات التحكم في الوصول أن تكون ديناميكية، تعتمد على السياق، وتحتاج إلى دقة عالية. في الممارسة العملية، قد تختار المنظمات استخدام مزيج من كلا النموذجين لتحقيق المستوى المطلوب من التحكم في الوصول.