AccessControl নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

কী

অ্যাক্সেস কন্ট্রোল নীতি আপনাকে নির্দিষ্ট IP অ্যাড্রেস দ্বারা আপনার API-তে অ্যাক্সেস দিতে বা অস্বীকার করতে দেয়।

ভিডিও: নির্দিষ্ট IP অ্যাড্রেস ব্যবহার করে কীভাবে আপনার API-তে অ্যাক্সেস দেবেন বা বন্ধ করবেন সেই সম্পর্কে আরও জানতে একটি ছোট ভিডিও দেখুন।

আপনি API প্রক্সি ফ্লোয়ের যেকোনও জায়গায় এই নীতি অ্যাটাচ করতে পারলেও, আপনি সম্ভবত ফ্লোয়ের শুরুতে ( অনুরোধ / ProxyEndpoint / PreFlow) IP অ্যাড্রেস চেক করতে চাইবেন, এমনকি যাচাইকরণ বা কোটা চেক করার আগেও।

নমুনা

নিচের IPv4 স্যাম্পেলে মাস্ক ভ্যালু শনাক্ত করে যে অ্যাক্সেস দেওয়ার বা অস্বীকার করার সময় ম্যাচ করার নিয়মটি কোন চারটি অক্টেট (৮, ১৬, ২৪, ৩২ বিট) বিবেচনা করে। ডিফল্ট ভ্যালু হল ৩২। আরও তথ্যের জন্য এলিমেন্ট রেফারেন্সে mask অ্যাট্রিবিউট দেখুন।

198.51.100.1-কে অ্যাক্সেস করতে দেবেন না

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

ক্লায়েন্ট অ্যাড্রেস থেকে আসা সব অনুরোধ প্রত্যাখ্যান করুন: 198.51.100.1

অন্য যেকোনও ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ অনুমোদন করুন।

ভেরিয়েবল ব্যবহার করার অনুমতি না দেওয়া

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="{kvm.mask.value}">{kvm.ip.value}</SourceAddress>
    </MatchRule>
    </IPRules>
</AccessControl>

ধরে নিন, আপনি মাস্কিং ও IP-র ভ্যালু সেভ করার জন্য কী ভ্যালু ম্যাপ (KVM) ব্যবহার করছেন। এটি হল রানটাইম চলাকালীন IP পরিবর্তন করা এবং মাস্ক করার একটি সহজ উপায়, এর জন্য আপনাকে API প্রক্সি আপডেট এবং আবার ডিপ্লয় করতে হবে না। kvm.mask.value এবং kvm.ip.value-এর ভ্যালু সহ ভেরিয়েবল রিট্রিভ করতে আপনি KeyValueMapOperations নীতি ব্যবহার করতে পারেন (ধরে নেওয়া হচ্ছে যে, আপনার KVM নীতিতে আপনি ভেরিয়েবলগুলির নাম এভাবেই রেখেছেন যেখানে আপনার KVM থেকে মাস্ক ও IP ভ্যালু আছে)। আপনি যদি মাস্কের জন্য 24 এবং IP অ্যাড্রেসের জন্য 198.51.100.1 মান পান, তাহলে AccessControl নীতি নিম্নলিখিত সব অনুরোধ প্রত্যাখ্যান করবে: 198.51.100.*

অন্যান্য সব ক্লায়েন্ট অ্যাড্রেসকে অনুমতি দেওয়া হবে।

198.51.100.* অ্যাক্সেস করতে দেবেন না

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

ক্লায়েন্ট অ্যাড্রেস থেকে আসা সব অনুরোধ প্রত্যাখ্যান করুন: 198.51.100.*

অন্য যেকোনও ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ অনুমোদন করুন।

১৯৮.৫১.*.*

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

ক্লায়েন্ট অ্যাড্রেস থেকে আসা সব অনুরোধ প্রত্যাখ্যান করুন: 198.51.*.*

অন্য যেকোনও ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ অনুমোদন করুন।

198.51.100.* ব্লক করুন, 192.0.2.1 অ্যাক্সেস দিন

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

ক্লায়েন্ট অ্যাড্রেস: 198.51.100.* থেকে আসা সব অনুরোধ প্রত্যাখ্যান করো, কিন্তু 192.0.2.1-কে অনুমতি দাও।

অন্য যেকোনও ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ অনুমোদন করুন।

198.51.*.*-কে অনুমতি দিন

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

এই অ্যাড্রেস থেকে আসা সব অনুরোধের অনুমতি দিন: 198.51.*.*

অন্য কোনও ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ প্রত্যাখ্যান করুন।

একাধিক IP-কে অনুমতি দিন

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
     </MatchRule>
  </IPRules>
</AccessControl>

ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ অনুমোদন করুন: 198.51.100.* ১৯২.০.২.* 203.0.113.*

অন্যান্য সব ঠিকানা বাতিল করুন।

একাধিক IP অস্বীকার করা

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

ক্লায়েন্ট অ্যাড্রেস থেকে আসা অনুরোধ প্রত্যাখ্যান করুন: 198.51.100.* ১৯২.০.২.* 203.0.113.*

অন্যান্য সব ঠিকানাকে অনুমতি দিন।

একাধিক IP-কে অনুমতি দেওয়া, একাধিক IP-কে অনুমতি না দেওয়া

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "DENY">
      <SourceAddress mask="24">198.51.100.1</SourceAddress>
      <SourceAddress mask="24">192.0.2.1</SourceAddress>
      <SourceAddress mask="24">203.0.113.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "ALLOW">
      <SourceAddress mask="16">198.51.100.1</SourceAddress>
      <SourceAddress mask="16">192.0.2.1</SourceAddress>
      <SourceAddress mask="16">203.0.113.1</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>

অনুমতি দিন: 198.51.*.* ১৯২.০.*.* 203.0.*.*

অনুমোদিত তালিকার একটি সাবসেটকে অস্বীকার করুন: 198.51.100.* ১৯২.০.২.* 203.0.113.*


ব্যবহার সংক্রান্ত নোট

ক্ষতিকারক IP-র বিরুদ্ধে আপনার API-কে সুরক্ষিত রাখা ছাড়াও, অ্যাক্সেস কন্ট্রোল নীতি আপনাকে বৈধ IP অ্যাক্সেসের উপর নিয়ন্ত্রণ দেয়। যেমন, আপনি যদি চান যে আপনার এন্টারপ্রাইজের নিয়ন্ত্রণে থাকা কম্পিউটারগুলিই শুধুমাত্র আপনার টেস্ট এনভায়রনমেন্টে এক্সপোজ করা API অ্যাক্সেস করুক, তাহলে আপনি নিজের ইন্টার্নাল নেটওয়ার্কের জন্য IP অ্যাড্রেস রেঞ্জ অনুমোদন করতে পারেন। বাড়িতে বসে কাজ করা ডেভেলপাররা VPN ব্যবহার করে এইসব API অ্যাক্সেস করতে পারবেন।

অ্যাক্সেস কন্ট্রোল নীতির কনফিগারেশন ও প্রয়োগের মধ্যে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত:

  • দুটি অ্যাকশনের (অনুমতি দিন বা বাতিল করুন) মধ্যে একটি করে অ্যাকশন যুক্ত করে ম্যাচ করার নিয়ম এর একটি সেট নির্ধারণ করুন।
  • প্রতিটি ম্যাচ করার নিয়মের জন্য, IP অ্যাড্রেস (SourceAddress এলিমেন্ট) নির্দিষ্ট করুন।
    • আপনি যে মেসেজ হ্যান্ডেল করার জন্য নিয়ম কনফিগার করছেন, সেটির কোন IP অ্যাড্রেস মূল্যায়ন করা হবে তা নির্ধারণ করতে, নীতি কীভাবে IP অ্যাড্রেস বেছে নেয় তা দেখুন।
    • প্রতিটি IP অ্যাড্রেসের জন্য একটি করে মাস্ক কনফিগার করুন। আপনি IP অ্যাড্রেসের মাস্ক ভ্যালুর উপর ভিত্তি করে অ্যাক্সেস অনুমতি দেন বা বাতিল করেন। CIDR নোটেশন সহ IP মাস্কিং সম্পর্কে দেখুন।
  • যে ক্রমে নিয়ম পরীক্ষা করা হয় তা নির্দিষ্ট করুন।
  • উল্লেখ করা ক্রম অনুযায়ী সব ম্যাচ করার নিয়ম প্রয়োগ করা হয়। কোনও নিয়ম মিলে গেলে, সেই অনুযায়ী অ্যাকশন নেওয়া হয় এবং মিলে যাওয়া পরবর্তী নিয়মগুলি এড়িয়ে যাওয়া হয়।
    • একই নিয়ম যদি 'অনুমতি দিন' ও 'প্রত্যাখ্যান করুন' অ্যাকশন, দু'টি দিয়েই কনফিগার করা থাকে, তাহলে যে নিয়মটি অর্ডার অনুযায়ী প্রথমে আছে সেটি ট্রিগার করা হয় এবং পরের নিয়মটি (অন্য অ্যাকশন সহ) এড়িয়ে যাওয়া হয়।

নীতি কীভাবে মূল্যায়ন করার জন্য IP অ্যাড্রেস বেছে নেয়

অনুরোধে বিভিন্ন সোর্স থেকে IP অ্যাড্রেস আসতে পারে। যেমন, True-Client-IP মেসেজ হেডারে IP অ্যাড্রেস থাকতে পারে এবং X-Forwarded-For হেডারে এক বা একাধিক IP অ্যাড্রেস থাকতে পারে। এই বিভাগে আপনি যে সঠিক IP অ্যাড্রেস মূল্যায়ন করতে চান, তা মূল্যায়ন করার জন্য AccessControl নীতি কীভাবে কনফিগার করবেন তার বিবরণ দেওয়া আছে।

কোন IP অ্যাড্রেস মূল্যায়ন করতে হবে তা ঠিক করার জন্য AccessControl নীতি নিম্নলিখিত যুক্তি ব্যবহার করে:

১. True-Client-IP হেডার

নীতিটি প্রথমে True-Client-IP হেডার থেকে IP অ্যাড্রেস চেক করে। হেডারে সঠিক IP অ্যাড্রেস থাকলে, নীতি সেই অ্যাড্রেস মূল্যায়ন করে।

২. X-Forwarded-For হেডার

কোনও True-Client-IP হেডার না থাকলে অথবা আপনি <IgnoreTrueClientIPHeader> এলিমেন্টকে true হিসেবে সেট করে থাকলে, নীতিটি X-Forwarded-For হেডারে থাকা IP অ্যাড্রেস মূল্যায়ন করে।

Edge অটোমেটিক X-Forwarded-For হেডার ফিল করে দেয়। এটি শেষ এক্সটার্নাল TCP হ্যান্ডশেক থেকে পাওয়া IP অ্যাড্রেস (যেমন ক্লায়েন্ট IP বা রাউটার) দিয়ে ফিল করে। শীর্ষকে একাধিক IP অ্যাড্রেস থাকলে, সেইসব অ্যাড্রেস সম্ভবত সার্ভারের চেইন যা অনুরোধ প্রসেস করেছে। তবে, ঠিকানার তালিকায় একটি স্পুফ করা IP অ্যাড্রেসও থাকতে পারে। তাহলে, কোন কোন অ্যাড্রেস মূল্যায়ন করতে হবে তা নীতি কীভাবে জানবে?

আপনার সংস্থার কনফিগারেশন ও নীতি কনফিগারেশন নির্ধারণ করে যে কোন X-Forwarded-For ঠিকানায় নীতি মূল্যায়ন করা হবে।

প্রথমে, আপনার প্রতিষ্ঠানে feature.enableMultipleXForwardCheckForACL প্রপার্টি সেট করা আছে কিনা তা চেক করুন। আপনি চেক করার জন্য Get organization API ব্যবহার করতে পারেন। তারপরে:

  • আপনার সংস্থার প্রপার্টির তালিকায় feature.enableMultipleXForwardCheckForACL দেখতে না পেলে, এর অর্থ হল, প্রপার্টিটি ফলস (ডিফল্ট) হিসেবে সেট করা আছে। এই প্রপার্টি 'ফলস' হিসেবে সেট করা থাকলে, নীতিটি হেডার (যা ট্রেস টুলে দেখা যায়) থেকে শেষ অ্যাড্রেস মূল্যায়ন করে, এটি হল IP অ্যাড্রেস Edge শেষ এক্সটার্নাল TCP হ্যান্ডশেক থেকে পেয়েছে।
  • আপনার প্রতিষ্ঠানের feature.enableMultipleXForwardCheckForACL true হিসেবে সেট করা থাকলে, কোন IP অ্যাড্রেস নীতি মূল্যায়ন করে তা নির্ধারণ করতে, <ValidateBasedOn> এলিমেন্ট কনফিগার করুন।

feature.enableMultipleXForwardCheckForACL প্রপার্টি পরিবর্তন করা

Edge অর্গানাইজেশন অ্যাডমিনিস্ট্রেটররা সংস্থা সংক্রান্ত প্রপার্টি আপডেট করুন API ব্যবহার করে feature.enableMultipleXForwardCheckForACL প্রপার্টি সেট করতে পারবেন।

নিম্নলিখিত API উদাহরণটি ব্যক্তিগত ক্লাউডের জন্য Edge-এ প্রপার্টি সেট করে। আপনার প্রতিষ্ঠানে অন্য প্রপার্টি সেট করা থাকলে, সেগুলিও অন্তর্ভুক্ত করতে ভুলবেন না। অন্যথায়, সেগুলি সরিয়ে দেওয়া হবে।

curl -u email:password -X POST -H "Content-type:application/xml" http://host:8080/v1/o/myorg -d \
"<Organization type="trial" name="MyOrganization">
    <DisplayName>MyOrganization</DisplayName>
    <Properties>
        <Property name="feature.enableMultipleXForwardCheckForACL">true</Property>
        <!-- Include other existing properties as well. -->
    </Properties>
</Organization>"

প্রাইভেট ক্লাউডের জন্য Edge-এ, feature.enableMultipleXForwardCheckForACL প্রপার্টির মান পরিবর্তন করার পরে, আলাদা আলাদা কম্পোনেন্ট চালু/বন্ধ/রিস্টার্ট করুন-এ বর্ণিত পদ্ধতি অনুযায়ী আপনাকে মেসেজ প্রসেসর রিস্টার্ট করতে হবে।

Apigee অ্যানালিটিক্সে X-Forwarded-For ডাইমেনশন

Edge Analytics X-Forwarded-For হেডারের ভ্যালু x_forwarded_for_ip ডাইমেনশনে লেখে। Edge-এ অনুরোধ করা ক্লায়েন্ট IP নির্ধারণ করতে, ax_true_client_ip বা ax_resolved_client_ip ডাইমেনশনের মান ব্যবহার করুন। আরও জানতে অ্যানালিটিক্স মেট্রিক, ডাইমেনশন, ও ফিল্টার রেফারেন্স দেখুন।

CIDR নোটেশন সহ IP মাস্কিং সম্পর্কে

CIDR নোটেশন (ক্লাসলেস ইন্টার-ডোমেন রাউটিং) হল মাস্কিংয়ের মাধ্যমে IP অ্যাড্রেসের রেঞ্জ বোঝানোর একটি পদ্ধতি। এটি IPv4 ও IPv6, দু'টির ক্ষেত্রেই প্রযোজ্য। এটি কীভাবে কাজ করে তা এখানে দেওয়া হল। আমরা সহজবোধ্যতার জন্য আমাদের উদাহরণে IPv4 ব্যবহার করব।

IP অ্যাড্রেস হল পিরিয়ড দিয়ে আলাদা করা সংখ্যার গ্রুপ। বাইনারি পরিভাষায়, প্রতিটি গ্রুপ হল নির্দিষ্ট সংখ্যক বিট (IPv4-এর জন্য ৮টি এবং IPv6-এর জন্য ১৬টি)। IPv4 অ্যাড্রেস 198.51.100.1 বাইনারি কোডে এইভাবে লেখা হয়:

11000110.00110011.01100100.00000001

এটি ৮ বিটের ৪টি গ্রুপ বা মোট ৩২ বিট। CIDR-এর সাহায্যে, আপনি IP অ্যাড্রেসে একটি /number (১-৩২) যোগ করে একটি রেঞ্জ নির্দেশ করতে পারেন, যেমন:

198.51.100.1/24

এই ক্ষেত্রে, এই নীতির mask অ্যাট্রিবিউটের ভ্যালুর জন্য আপনি ২৪ নম্বরটি ব্যবহার করবেন।

এই নোটেশনের অর্থ হল, "প্রথম ২৪ বিট ঠিক যেমন আছে তেমন রাখুন, বাকি বিটগুলি ০ থেকে ২৫৫ পর্যন্ত যেকোনও মান হতে পারে।" যেমন:

এগুলি ঠিক যেমন আছে তেমনই রাখুন শেষ গ্রুপের সম্ভাব্য ভ্যালু
১৯৮.৫১.১০০. ০ - ২৫৫

লক্ষ্য করুন যে গ্রুপ তিনের শেষে মাস্কিং করা হয়েছে। এর ফলে সবকিছু পরিচ্ছন্ন ও সুশৃঙ্খল থাকে, এর ফলে এই ধরনের মাস্ক তৈরি হয়: 198.51.100.* বেশিরভাগ ক্ষেত্রে, ৮ (IPv4) এবং ১৬ (IPv6)-এর মাল্টিপল ব্যবহার করলে আপনি যে মাস্কিং লেভেল চান তা পাবেন:

IPv4: ৮, ১৬, ২৪, ৩২

IPv6: ১৬, ৩২, ৪৮, ৬৪, ৮০, ৯৬, ১১২, ১২৮

তবে, আপনি আরও সূক্ষ্ম-গ্রেন কন্ট্রোলের জন্য অন্যান্য নম্বর ব্যবহার করতে পারেন, যার মধ্যে সামান্য বাইনারি গণনা জড়িত। এখানে ৩০-এর মাস্ক ব্যবহার করে একটি উদাহরণ দেওয়া হল, যেমন 198.51.100.1/30, যেখানে শেষ ১ হল বাইনারিতে ০০০০০০০১:

এগুলি ঠিক যেমন আছে তেমনই রাখুন সম্ভাব্য ভ্যালু
11000110.00110011.01100100.000000 (প্রথম ৩০ বিট) 00000000, 00000001, 00000010, বা 00000011
198.51.100. ০, ১, ২ বা ৩

এই উদাহরণে, কনফিগারেশন <SourceAddress mask="30">198.51.100.1</SourceAddress> হিসেবে সেট করা থাকলে, নিম্নলিখিত IP-কে অনুমতি দেওয়া হবে (অথবা আপনার নিয়মের উপর নির্ভর করে অনুমতি দেওয়া হবে না):

  • 198.51.100.0
  • 198.51.100.1
  • 198.51.100.2
  • 198.51.100.3

এলিমেন্ট রেফারেন্স

এলিমেন্ট রেফারেন্স, অ্যাক্সেস কন্ট্রোল নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করে।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control 1</DisplayName>
    <IPRules noRuleMatchAction = "ALLOW">
        <MatchRule action = "ALLOW">
            <SourceAddress mask="32">198.51.100.1</SourceAddress>
        </MatchRule>
        <MatchRule action = "DENY">
            <SourceAddress mask="24">198.51.100.1</SourceAddress>
        </MatchRule>
    </IPRules>
    <ValidateBasedOn>X_FORWARDED_FOR_ALL_IP</ValidateBasedOn>
</AccessControl>

<AccessControl> অ্যাট্রিবিউট

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1"> 

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<IgnoreTrueClientIPHeader> এলিমেন্ট

আপনি এটি 'সত্য' হিসেবে সেট করলে, নীতিটি True-Client-IP হেডার উপেক্ষা করে এবং আপনার কনফিগার করা X-Forwarded-For মূল্যায়ন আচরণ অনুসরণ করে X-Forwarded-For হেডারে IP অ্যাড্রেস মূল্যায়ন করে।

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control-1</DisplayName>
    <IgnoreTrueClientIPHeader>true</IgnoreTrueClientIPHeader>
    ...
</AccessControl>
ডিফল্ট মিথ্যা
উপস্থিতি ঐচ্ছিক
ধরন বুলিয়ান

<IPRules> এলিমেন্ট

IP অ্যাড্রেস অনুমোদন বা বাতিল করার নিয়মাবলী সহ মূল এলিমেন্ট। আপনার ম্যাচিং নিয়মের আওতায় না থাকা যেকোনও IP অ্যাড্রেস কীভাবে ম্যানেজ করতে হয় তা noRuleMatchAction অ্যাট্রিবিউট আপনাকে নির্ধারণ করতে দেয়।

<IPRules noRuleMatchAction = "ALLOW">
ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
ধরন প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ধরন ডিফল্ট উপস্থিতি
noRuleMatchAction
ম্যাচ করার নিয়মের উল্লেখ করা সমস্যা সমাধান না হলে (ম্যাচ না করলে) কী ব্যবস্থা নিতে হবে (অ্যাক্সেস দেওয়া বা বন্ধ করা) (ম্যাচ করেনি)।
বৈধ ভ্যালু: ALLOW বা DENY
স্ট্রিং অনুমতি দিন প্রয়োজনীয়

<IPRules>/<MatchRule> এলিমেন্ট

আপনার দেওয়া SourceAddress-এর সাথে IP অ্যাড্রেস ম্যাচ করলে কী অ্যাকশন নিতে হবে (অ্যাক্সেস দেওয়া বা না দেওয়া) তা নির্ধারণ করুন।

<IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "ALLOW">
        <SourceAddress mask="32">198.51.100.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "DENY">
        <SourceAddress mask="24">198.51.100.1</SourceAddress>
    </MatchRule>
</IPRules>
ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
ধরন প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ধরন ডিফল্ট উপস্থিতি
অ্যাকশন

ম্যাচ করার নিয়মের উল্লেখ করা সমস্যা সমাধান না হলে (ম্যাচ না করলে) কী ব্যবস্থা নিতে হবে (অ্যাক্সেস দেওয়া বা বন্ধ করা) (ম্যাচ করেনি)।

বৈধ ভ্যালু: ALLOW বা DENY

স্ট্রিং অনুমতি দিন প্রয়োজনীয়

<IPRules>/<MatchRule>/<SourceAddress> এলিমেন্ট

ক্লায়েন্টের IP অ্যাড্রেস রেঞ্জ।

বৈধ মান: বৈধ IP অ্যাড্রেস (ডটেড ডেসিম্যাল নোটেশন)। ওয়াইল্ডকার্ড আচরণের জন্য, mask অ্যাট্রিবিউট ব্যবহার করুন।

<IPRules noRuleMatchAction = "ALLOW">
    <MatchRule action = "ALLOW">
        <SourceAddress mask="{variable}">198.51.100.1</SourceAddress>
    </MatchRule>
    <MatchRule action = "DENY">
        <SourceAddress mask="24">{variable}</SourceAddress>
    </MatchRule>
</IPRules>

আগের উদাহরণে দেখানো হয়েছে যে, SourceAddress এলিমেন্টটি mask অ্যাট্রিবিউট বা IP অ্যাড্রেসের জন্য মেসেজ টেমপ্লেটও কাজ করে, যার অর্থ হল, আপনি API প্রক্সি ফ্লোতে বর্তমানে উপলভ্য ভেরিয়েবল ব্যবহার করে ভ্যালু সেট করতে পারবেন।

যেমন, আপনি একটি কী ভ্যালু ম্যাপে (KVM) একটি IP অ্যাড্রেস স্টোর করতে পারেন এবং IP অ্যাড্রেসটি রিট্রিভ করতে ও এটিকে একটি ভেরিয়েবলে (যেমন kvm.ip.value) অ্যাসাইন করতে KeyValueMapOperations নীতি ব্যবহার করতে পারেন। তারপরে, আপনি IP অ্যাড্রেসের জন্য সেই ভেরিয়েবল ব্যবহার করতে পারেন:

<SourceAddress mask="24">{kvm.ip.value}</SourceAddress>

ভেরিয়েবল সহ মাস্ক এবং/অথবা IP অ্যাড্রেস সেট করলে, আপনার API প্রক্সি পরিবর্তন ও আবার ডিপ্লয় না করেই, রানটাইমে ভ্যালু পরিবর্তন করার ফ্লেক্সিবিলিটি পাবেন।

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
ধরন স্ট্রিং (শুধুমাত্র একটি IP অ্যাড্রেস)

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ধরন ডিফল্ট উপস্থিতি
মাস্ক

mask অ্যাট্রিবিউট হল IP অ্যাড্রেসের রেঞ্জ নির্দেশ করার একটি উপায় যা অনুমতি দেওয়া বা বাতিল করার জন্য ব্যবহার করা হয়। মাস্ক হল CIDR নোটেশন (ক্লাসলেস ইন্টার-ডোমেন রাউটিং)-এর সমতুল্য। যেমন:

<SourceAddress mask="24">198.51.100.1</SourceAddress>

নিম্নলিখিত CIDR নোটেশনের সমতুল্য:

198.51.100.1/24

বৈধ মানসমূহ:

IPv4: ১-৩২

IPv6: ১-১২৮

শূন্য (০) মানটি শুধুমাত্র IP 0.0.0.0-এর জন্য বৈধ, তাই এটি ব্যবহারিক নয়।

ভেরিয়েবল সহ মাস্ক সেট করা

mask অ্যাট্রিবিউট মেসেজ টেমপ্লেটও কাজ করে, যার অর্থ হল, আপনি API প্রক্সি ফ্লোতে বর্তমানে উপলভ্য ভেরিয়েবেল দিয়ে ভ্যালু সেট করতে পারবেন। যেমন, আপনি KVM-এ মাস্ক ভ্যালু স্টোর করতে এবং মাস্কটি রিট্রিভ করে কোনও ভেরিয়েবলে অ্যাসাইন করতে KeyValueMapOperations নীতি ব্যবহার করতে পারেন। ভেরিয়েবলের সাথে IP মাস্ক সেট করতে, নিম্নলিখিত ফর্ম্যাট ব্যবহার করুন, ধরে নেওয়া হচ্ছে যে ভেরিয়েবলের নাম kvm.mask.value:

mask="{kvm.mask.value}"

পূর্ণসংখ্যা প্রযোজ্য নয় প্রয়োজনীয়

<ValidateBasedOn> এলিমেন্ট

X-Forwarded-For HTTP হেডারে একাধিক IP অ্যাড্রেস থাকলে, কোন IP অ্যাড্রেস মূল্যায়ন করা হবে তা নিয়ন্ত্রণ করতে এই ValidateBasedOn এলিমেন্ট ব্যবহার করুন।

আপনি যে IP অ্যাড্রেস মূল্যায়ন করতে চান সেটির বৈধতা সম্পর্কে নিশ্চিত হলে তবেই IP অ্যাড্রেস মূল্যায়ন করার জন্য এই পদ্ধতি ব্যবহার করুন। যেমন, আপনি যদি X-Forwarded-For হেডার-এ থাকা সব IP অ্যাড্রেস মূল্যায়ন করার বিকল্প বেছে নেন, তাহলে আপনাকে সেইসব অ্যাড্রেসের বৈধতা বিশ্বাস করতে হবে এবং/অথবা শুধুমাত্র বিশ্বস্ত IP-কে আপনার API প্রক্সি কল করতে দেওয়ার জন্য বিস্তারিত 'প্রবেশাধিকার অস্বীকার করুন' বা 'অনুমতি দিন' সংক্রান্ত নিয়ম সেট-আপ করতে হবে।

হেডারে সবচেয়ে বাঁদিকে থাকা IP অ্যাড্রেস ক্লায়েন্টের এবং সবচেয়ে ডানদিকে থাকাটি সার্ভারের যেটি বর্তমান পরিষেবায় অনুরোধ ফরওয়ার্ড করেছে। সবচেয়ে ডানদিকের বা শেষ IP অ্যাড্রেস, হল সেই অ্যাড্রেস যা Edge শেষ এক্সটার্নাল TCP হ্যান্ডশেক থেকে পেয়েছে।

এই এলিমেন্টে আপনি যে ভ্যালু লিখবেন তা আপনাকে নির্ধারণ করতে দেয় যে হেডার (ডিফল্ট), শুধুমাত্র প্রথম IP অ্যাড্রেস বা শুধুমাত্র শেষ IP অ্যাড্রেসে সব IP অ্যাড্রেস চেক করবেন কিনা।

<AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control-1">
    <DisplayName>Access Control 1</DisplayName>
    <IPRules noRuleMatchAction = "ALLOW">
        <MatchRule action = "DENY">
            <SourceAddress mask="32">198.51.100.1</SourceAddress>
        </MatchRule>
    </IPRules>
    <ValidateBasedOn>X_FORWARDED_FOR_ALL_IP</ValidateBasedOn>
</AccessControl>
ডিফল্ট X_FORWARDED_FOR_ALL_IP
উপস্থিতি ঐচ্ছিক
সঠিক ভ্যালু

X_FORWARDED_FOR_ALL_IP (ডিফল্ট)

X_FORWARDED_FOR_FIRST_IP

X_FORWARDED_FOR_LAST_IP

স্কিমা

প্রতিটি নীতির ধরন XML স্কিমা (.xsd) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমা GitHub-এ উপলভ্য।

সমস্যার রেফারেন্স

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস কারণ এর সমাধান করুন
accesscontrol.IPDeniedAccess 403 ক্লায়েন্ট IP অ্যাড্রেস অথবা API অনুরোধে পাস করা IP অ্যাড্রেস অ্যাক্সেস কন্ট্রোল নীতির <MatchRule> এলিমেন্টের মধ্যে নির্দিষ্ট করা <SourceAddress> এলিমেন্টের সাথে ম্যাচ করে এবং <MatchRule> এলিমেন্টের action অ্যাট্রিবিউট DENY হিসেবে সেট করা থাকে।

ফল্ট ভেরিয়েবল

রানটাইম এরর হলে এই ভেরিয়েবল সেট করা হয়। আরও তথ্যের জন্য, নীতি সংক্রান্ত সমস্যার জন্য নির্দিষ্ট ভেরিয়েবল দেখুন।

ভেরিয়েবল কোথায় উদাহরণ
fault.name="fault_name" fault_name হল সমস্যার নাম, যা উপরে দেওয়া রানটাইম সংক্রান্ত সমস্যা সারণীতে তালিকাভুক্ত করা আছে। ফল্ট কোডের শেষ অংশটি হল ফল্টের নাম। fault.name Matches "IPDeniedAccess"
acl.policy_name.failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যার কারণে সমস্যা হয়েছে। acl.AC-AllowAccess.failed = true

ভুল উত্তরের উদাহরণ

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

ভুল নিয়মের উদাহরণ

<FaultRule name="IPDeniedAccess">
    <Step>
        <Name>AM-IPDeniedAccess</Name>
        <Condition>(fault.name Matches "IPDeniedAccess") </Condition>
    </Step>
    <Condition>(acl.failed = true) </Condition>
</FaultRule>