تحديد مشاكل وقت تشغيل سياسة AccessControl وحلّها

أنت تعرض مستندات Apigee Edge.
انتقل إلى مستندات Apigee X.
معلومات

IPDeniedAccess

رمز الخطأ

accesscontrol.IPDeniedAccess

نص استجابة الخطأ

{
    "fault": {
        "faultstring": "Access Denied for client ip : client_IP",
        "detail": {
            "errorcode": "accesscontrol.IPDeniedAccess"
        }
    }
}

مثال على رسالة الخطأ

{
    "fault": {
        "faultstring": "Access Denied for client ip : 104.132.196.83",
        "detail": {
            "errorcode": "accesscontrol.IPDeniedAccess"
        }
    }
}

السبب

يحدث هذا الخطأ إذا كان عنوان IP للعميل أو أي عنوان IP تم تمريره كجزء من طلب البيانات من واجهة برمجة التطبيقات يتطابق مع أي عناوين IP تم تحديدها في العنصر <SourceAddress> داخل العنصر <MatchRule> من "سياسة التحكم في الوصول"، وتم ضبط السمة action للعنصر <MatchRule> على DENY.

على سبيل المثال، لنفترض أنّه تم تعريف السمة <SourceAddress> كما هو موضّح أدناه:

<SourceAddress mask="32">104.132.196.83</SourceAddress>

إذا تطابق عنوان IP المذكور أعلاه مع عنوان IP لنظام العميل (المُشار إليه بالمتغيّر proxy.client.ip)، أو أي من عناوين IP التي تم تمريرها كجزء من طلب البيانات من واجهة برمجة التطبيقات، سيحدث الخطأ.

التشخيص

  1. حدِّد عناوين IP التي تم رفض وصولها لطلب بيانات محدّد من واجهة برمجة التطبيقات. يمكنك العثور على هذه المعلومات في العنصر faultstring في استجابة الخطأ.

    على سبيل المثال، في faultstring التالي، عنوان IP هو 104.132.196.83:.

    "faultstring": "Access Denied for client ip : 104.132.196.83"
    
  2. افحص جميع سياسات التحكم في الوصول في خادم وكيل واجهة برمجة التطبيقات الذي أخفق وحدد السياسة التي تتطابق فيها عناوين IP المحددة في العنصر <SourceAddress> مع عناوين IP المحددة في faultstring (الخطوة 1 أعلاه).

    على سبيل المثال، تحدِّد السياسة التالية عنوان IP <SourceAddress> على أنّه 104.132.196.83, الذي يتطابق مع ما هو في faultstring:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control">
        <DisplayName>Access-Control</DisplayName>
        <Properties/>
        <IPRules noRuleMatchAction="ALLOW">
            <MatchRule action="DENY">
                <SourceAddress mask="32">104.132.196.83</SourceAddress>
            </MatchRule>
        </IPRules>
        </AccessControl>
    
  3. حدِّد عناوين IP التي تم تقديم طلب البيانات من واجهة برمجة التطبيقات منها. يمكن إجراء ذلك بعدة طرق:

    1. استخدام UI Trace

      1. سجِّل آثار طلبات البيانات من واجهة برمجة التطبيقات التي تعذّر تنفيذها.
      2. حدد سياسة التحكم في الوصول المحددة التي فشلت من اللوحة اليسرى.
      3. تحقَّق من قيمة المتغيّر proxy.client.ip كما هو موضّح في لقطة الشاشة التالية لنموذج تتبُّع.

      4. وإذا كانت proxy.client.ip غير مدرَجة، يمكنك التحقّق من قيمة السمة رؤوس رسائل X-forwarded-For أو True-Client-IP

    2. استخدام التقارير المخصَّصة

      يمكنك إنشاء تقارير مخصصة لتحديد ما إذا تم طرح رمز الحالة 403 أثناء تنفيذ سياسة التحكم في الوصول داخل الخادم الوكيل لواجهة برمجة التطبيقات وأيضًا لتحديد عنوان IP للعميل. يكون ذلك مفيدًا على وجه الخصوص إذا كانت المشكلة قد حدثت في الماضي أو إذا كانت المشكلة تحدث بشكل متقطع ويتعذّر عليك تسجيل آثار الأنشطة في واجهة المستخدم.

      يمكنك الرجوع إلى إنشاء التقارير المخصَّصة وإدارتها لفهم كيفية إنشاء تقارير مخصَّصة. في التقرير المخصّص، اختَر:

      1. مجموع الزيارات كمقياس

      2. الخادم الوكيل ورمز حالة الاستجابة وعنوان IP للعميل الوكيل وX-forwarded-For كسمات.

      من المفترض أن يساعدك هذا في تحديد عنوان IP أو عناوين IP للعميل التي تم تمريرها وأدى إلى حدوث الخطأ.

  4. إذا تطابق عنوان IP للعميل (الموضح بالمتغير proxy.client.ip) أو أي عنوان IP تم تمريره كجزء من طلب واجهة برمجة التطبيقات مع عناوين IP المحددة في العنصر <SourceAddress> داخل العنصر <MatchRule> في سياسة التحكم في الوصول، حيث يتم ضبط السمة action على DENY، يكون هذا هو سبب الخطأ.

    في المثال الوارد أعلاه، تتطابق القيمة المحدَّدة في المتغيّر المرجعي proxy.client.ip (كما هو موضّح في لقطة الشاشة للتتبُّع أعلاه) مع عنوان IP المحدّد في العنصر <SourceAddress> من سياسة "التحكُّم في الوصول"، ما يؤدي إلى ظهور استجابة الخطأ:

    "faultstring": "Access Denied for client ip : 104.132.196.83"
    
    

الدقة

إذا كانت سياسة التحكم في الوصول تهدف إلى رفض الوصول إلى طلبات واجهة برمجة التطبيقات الواردة من عناوين IP المحدَّدة المدرَجة في faultstring، من المتوقع ظهور رسالة الخطأ. وفي هذه الحالة، ليس عليك اتّخاذ أي إجراء إضافي.

ومع ذلك، إذا قررت أنه يمكن منح عناوين IP المعينة الإذن بالوصول إلى طلبات واجهة برمجة التطبيقات لخادم وكيل واجهة برمجة التطبيقات المحدّد، يمكنك تعديل سياسة التحكم في الوصول للسماح بالوصول إلى عناوين IP هذه. بدلاً من ذلك، يمكنك إزالة سياسة التحكم في الوصول من خادم وكيل واجهة برمجة التطبيقات إذا كنت لا تريد رفض الوصول إلى أي من عناوين IP.

في ما يلي مثال يوضّح كيفية السماح بالوصول إلى عنوان IP محدّد 104.132.196.83 فقط ومنع وصول باقي عناوين IP:

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="32">104.132.196.83</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>