অ্যাক্সেস কন্ট্রোল নীতি রানটাইম ত্রুটি সমস্যা সমাধান

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

আইপি ডিনাইড অ্যাক্সেস

ত্রুটি কোড

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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি ক্লায়েন্টের আইপি অ্যাড্রেস, অথবা এপিআই অনুরোধের অংশ হিসাবে পাঠানো কোনো আইপি অ্যাড্রেস, অ্যাক্সেস কন্ট্রোল পলিসির <MatchRule> এলিমেন্টের মধ্যে থাকা <SourceAddress> এলিমেন্টে নির্দিষ্ট করা কোনো আইপি অ্যাড্রেসের সাথে মিলে যায়, এবং <MatchRule> এলিমেন্টের action অ্যাট্রিবিউটটি DENY তে সেট করা থাকে।

উদাহরণস্বরূপ, ধরা যাক <SourceAddress> নিচে দেখানো অনুযায়ী সংজ্ঞায়িত করা হয়েছে:

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

যদি উপরের আইপি অ্যাড্রেসটি ক্লায়েন্ট সিস্টেমের আইপি অ্যাড্রেসের (যা proxy.client.ip ভেরিয়েবল দ্বারা নির্দেশিত) অথবা এপিআই অনুরোধের অংশ হিসেবে পাঠানো কোনো আইপি অ্যাড্রেসের সাথে মিলে যায়, তাহলে ত্রুটি দেখা দেবে।

রোগ নির্ণয়

  1. একটি নির্দিষ্ট API অনুরোধের জন্য যে IP ঠিকানা(গুলি)কে অ্যাক্সেস দেওয়া হয়নি, তা শনাক্ত করুন। আপনি এই তথ্যটি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানে খুঁজে পেতে পারেন।

    উদাহরণস্বরূপ, নিম্নলিখিত faultstring এ আইপি ঠিকানাটি হলো 104.132.196.83:

    "faultstring": "Access Denied for client ip : 104.132.196.83"
    
  2. ব্যর্থ হওয়া এপিআই প্রক্সির সমস্ত অ্যাক্সেস কন্ট্রোল পলিসি পরীক্ষা করুন এবং সেই নির্দিষ্ট পলিসিটি শনাক্ত করুন যেখানে <SourceAddress> এলিমেন্টে উল্লেখিত আইপি অ্যাড্রেস(গুলি) faultstring এ (উপরের ধাপ ১) শনাক্ত করা আইপি অ্যাড্রেস(গুলি)-এর সাথে মেলে।

    উদাহরণস্বরূপ, নিম্নলিখিত পলিসিটি <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. যে আইপি অ্যাড্রেস(গুলি) থেকে এপিআই অনুরোধটি করা হয়েছিল তা নির্ধারণ করুন। এটি একাধিক উপায়ে করা যেতে পারে:

    1. UI ট্রেস ব্যবহার করে

      1. ব্যর্থ হওয়া এপিআই অনুরোধটির ট্রেস ক্যাপচার করুন।
      2. ডানদিকের প্যানেল থেকে ব্যর্থ হওয়া নির্দিষ্ট অ্যাক্সেস কন্ট্রোল পলিসিটি নির্বাচন করুন।
      3. নিম্নলিখিত নমুনা ট্রেসের স্ক্রিনশটে দেখানো অনুযায়ী proxy.client.ip ভেরিয়েবলের মান যাচাই করুন।

      4. যদি proxy.client.ip তালিকাভুক্ত না থাকে, তাহলে X-Forwarded-For অথবা True-Client-IP মেসেজ হেডারগুলোর মান যাচাই করুন।

    2. কাস্টম রিপোর্ট ব্যবহার করা

      এপিআই প্রক্সির মধ্যে অ্যাক্সেস কন্ট্রোল পলিসি কার্যকর করার সময় কোনো ৪০৩ স্ট্যাটাস কোড দেখানো হয়েছিল কিনা এবং ক্লায়েন্টের আইপি অ্যাড্রেস কোনটি, তা নির্ধারণ করতে আপনি কাস্টম রিপোর্ট তৈরি করতে পারেন। এটি বিশেষভাবে কার্যকর যদি সমস্যাটি অতীতে ঘটে থাকে অথবা যদি সমস্যাটি মাঝে মাঝে হয় এবং আপনি ইউআই-তে এর ট্রেস ক্যাপচার করতে না পারেন।

      কাস্টম রিপোর্ট কীভাবে তৈরি করতে হয় তা জানতে 'কাস্টম রিপোর্ট তৈরি ও পরিচালনা' অংশটি দেখুন। কাস্টম রিপোর্টে, বেছে নিন:

      1. একটি পরিমাপক হিসাবে ট্র্যাফিকের সমষ্টি , এবং

      2. প্রক্সি , রেসপন্স স্ট্যাটাস কোড , প্রক্সি ক্লায়েন্ট আইপি এবং এক্স-ফরওয়ার্ডেড-ফর ডাইমেনশন হিসেবে।

      এর মাধ্যমে আপনি ত্রুটির কারণ হওয়া ক্লায়েন্ট আইপি বা আইপি অ্যাড্রেসগুলো শনাক্ত করতে পারবেন।

  4. যদি ক্লায়েন্টের আইপি অ্যাড্রেস (যা proxy.client.ip ভেরিয়েবল দ্বারা নির্দেশিত), অথবা এপিআই অনুরোধের অংশ হিসেবে পাঠানো কোনো আইপি অ্যাড্রেস, অ্যাক্সেস কন্ট্রোল পলিসির <MatchRule> এলিমেন্টের ভেতরের <SourceAddress> এলিমেন্টে নির্দিষ্ট করা আইপি অ্যাড্রেস(গুলোর) সাথে মিলে যায়, যেখানে action অ্যাট্রিবিউটটি DENY তে সেট করা আছে, তাহলে সেটিই ত্রুটির কারণ।

    উপরে দেখানো উদাহরণে, রেফারেন্স ভেরিয়েবল proxy.client.ip তে সেট করা মানটি (যেমনটি উপরের ট্রেসের স্ক্রিনশটে দেখা যাচ্ছে) অ্যাক্সেস কন্ট্রোল পলিসির <SourceAddress> এলিমেন্টে সংজ্ঞায়িত আইপি অ্যাড্রেসের সাথে মিলে যায়, যার ফলে ত্রুটিপূর্ণ প্রতিক্রিয়াটি দেখা দেয়:

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

সমাধান

যদি অ্যাক্সেস কন্ট্রোল পলিসির উদ্দেশ্য হয় faultstring এ তালিকাভুক্ত নির্দিষ্ট আইপি অ্যাড্রেস(গুলি) থেকে আসা এপিআই অনুরোধগুলিতে অ্যাক্সেস অস্বীকার করা, তাহলে ত্রুটির বার্তাটি প্রত্যাশিত। এক্ষেত্রে, কোনো অতিরিক্ত পদক্ষেপের প্রয়োজন নেই।

তবে, যদি আপনি নিশ্চিত হন যে নির্দিষ্ট আইপি অ্যাড্রেস(গুলি)কে নির্দিষ্ট এপিআই প্রক্সির এপিআই অনুরোধগুলিতে অ্যাক্সেস দেওয়া যেতে পারে, তাহলে সেই আইপি অ্যাড্রেস(গুলি)কে অ্যাক্সেস দেওয়ার জন্য অ্যাক্সেস কন্ট্রোল পলিসি পরিবর্তন করুন। বিকল্পভাবে, আপনি যদি কোনো আইপি অ্যাড্রেস(গুলি)কে অ্যাক্সেস দিতে অস্বীকার করতে না চান, তাহলে এপিআই প্রক্সি থেকে অ্যাক্সেস কন্ট্রোল পলিসিটি সরিয়ে ফেলতে পারেন।

এখানে একটি উদাহরণ দেওয়া হলো, যা দেখায় কীভাবে শুধুমাত্র একটি নির্দিষ্ট আইপি অ্যাড্রেস 104.132.196.83 কে অ্যাক্সেসের অনুমতি দেওয়া যায় এবং বাকিগুলোকে অ্যাক্সেস থেকে বঞ্চিত করা যায়:

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