Logo Logo
GitHub Designed by Logto

ما هو التحكم في الوصول المستند إلى السمة (ABAC)؟

ABAC هو نموذج التحكم في الوصول (Access control) يستخدم السمات لاتخاذ قرارات التحكم في الوصول. يمكن أن تشمل هذه السمات عوامل مختلفة، مثل:

  • سمات المستخدم: مثل الأدوار، القسم، الموقع، إلخ.
  • سمات الموارد: مثل مستوى الحساسية، المالك، النوع، إلخ.
  • السمات البيئية: مثل وقت الوصول، الموقع، الجهاز، إلخ.

عن طريق تقييم هذه السمات وتمريرها عبر مجموعة من القواعد، يمكن لـ ABAC تحديد ما إذا كان يجب منح الكيان (مثل المستخدم، الخدمة) الوصول إلى مورد. يتيح هذا النهج التحكم الدقيق في الوصول وفرض السياسات الديناميكية بناءً على السياق.

كيف يعمل ABAC؟

يستخدم ABAC نهجًا قائمًا على السياسة للتحكم في الوصول. تتكون سياسة ABAC النموذجية من:

  • الموضوع: الكيان الذي يطلب الوصول (مثل المستخدم، الخدمة، الجهاز).
  • الإجراء: العملية التي يتم تنفيذها على المورد (مثل القراءة، الكتابة، الحذف).
  • المورد: الكيان الذي يتم الوصول إليه (مثل الملف، قاعدة البيانات، API).
  • البيئة: السياق الذي يُطلب فيه الوصول (مثل الوقت، الموقع، الجهاز).
  • السمات: خصائص الموضوع، المورد، والبيئة التي تُقيم لاتخاذ قرارات الوصول.
  • السياسات: مجموعة من القواعد التي تحدد الشروط تحتها يُمنح أو يُرفض الوصول.

سياسات ABAC أكثر تعقيدًا من نماذج التحكم في الوصول التقليدية مثل التحكم في الوصول بناءً على الأدوار (Role-based access control, RBAC) . من ناحية أخرى، يوفر ABAC مرونة وتفصيل أكبر في قرارات التحكم في الوصول.

مثال على سياسات ABAC

على سبيل المثال، يحتوي النظام على عدة سياسات ABAC:

  1. السياسة 1: السماح بالوصول إذا:

    • (الموضوع) دور الموضوع هو مدير.
    • (السمة) مستوى حساسية المورد هو عالي.
    • (البيئة) الموقع هو داخلي.
    • (الإجراء) أي إجراء.
    • (البيئة) الوقت بين التاسعة صباحاً والخامسة مساءً (ساعات العمل).
  2. السياسة 2: رفض الوصول إذا:

    • (الموضوع) دور الموضوع ليس مدير.
    • (السمة) مستوى حساسية المورد هو عالي.
    • (البيئة) أي موقع.
    • (الإجراء) أي إجراء.
    • (البيئة) أي وقت.
  3. السياسة 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) يمكن أن تساعدك في فهم الفروق بين النموذجين:

RBACABAC
سياسة التحكم في الوصولبناءً على الأدواربناءً على السمات
التفصيلواسع النطاقدقيق
المرونةمحدودةمرونة عالية
التعقيدأبسطأكثر تعقيدًا
تأثير الأداءضئيليمكن أن يكون كبيرًا
إدارة الوصولإدارة الأدوارإدارة السياسات
الأفضل لـهياكل الأذونات المحددة جيدًاالتحكم في الوصول الديناميكي والواعي للسياق

انظر أيضا