পরিবর্তনের ওভারভিউ
এজ ফর প্রাইভেট ক্লাউড 4.53.01 একাধিক পরিবর্তন প্রবর্তন করেছে যা সফ্টওয়্যার/লাইব্রেরির আপডেট হওয়া সংস্করণগুলিকে অন্তর্ভুক্ত করে প্ল্যাটফর্মের নিরাপত্তা ভঙ্গি বাড়ায়। এই পরিবর্তনগুলি প্রভাবিত করে:
- OAS (OpenAPI স্পেসিফিকেশন) বৈধতা নীতি
- JSONPath প্রশ্নগুলিকে সমর্থন করে এমন নীতিগুলি৷
- জাভা কলআউট নীতি যা অবহেলিত লাইব্রেরির উপর নির্ভর করে
- ওপেনএলডিএপি
এই বিভাগটি 4.53.01 সংস্করণে প্রবর্তিত বিভিন্ন ধরনের পরিবর্তন বর্ণনা করে যা আপগ্রেডের সময় বা পরে আপনার কর্মপ্রবাহকে ব্যাহত করতে পারে। সম্ভাব্য সমস্যা এলাকা চিহ্নিত করার পদ্ধতি এবং প্রশমন বা সমাধানের পদ্ধতিগুলিও কভার করা হয়েছে।
OAS (OpenAPI স্পেসিফিকেশন) বৈধতা নীতি
প্রসঙ্গ
OAS যাচাইকরণ নীতি OpenAPI 3.0 স্পেসিফিকেশনে (JSON বা YAML) সংজ্ঞায়িত নিয়মের বিরুদ্ধে আগত অনুরোধ বা প্রতিক্রিয়া যাচাই করে। এজ ফর প্রাইভেট ক্লাউড 4.53.01 ওএএস (ওপেনএপিআই স্পেসিফিকেশন) নীতিতে বর্ধিতকরণ সরবরাহ করে, এপিআই প্রতিক্রিয়া সংস্থাগুলির কঠোর এবং আরও সঠিক বৈধতার উপর ফোকাস করে।
পরিবর্তন
প্রাইভেট ক্লাউড 4.53.01 এর জন্য এজ দুটি গুরুত্বপূর্ণ পরিবর্তনের সাথে পরিচয় করিয়ে দেয় কিভাবে OAS নীতি API প্রতিক্রিয়াগুলিকে যাচাই করে, আপনার OpenAPI স্পেসিফিকেশনের সাথে ঘনিষ্ঠ সারিবদ্ধতা নিশ্চিত করে:
- দৃশ্যকল্প 1:
- পূর্ববর্তী আচরণ: যদি আপনার OpenAPI স্পেসিফিকেশনের জন্য একটি প্রতিক্রিয়া সংস্থার প্রয়োজন হয় কিন্তু লক্ষ্য বা আপস্ট্রিম নীতি থেকে প্রকৃত প্রতিক্রিয়া একটি অন্তর্ভুক্ত না করে, তাহলে নীতিটি এটিকে একটি বৈধতা ত্রুটি হিসাবে চিহ্নিত করবে না।
- বর্তমান আচরণ: নীতিটি এখন সঠিকভাবে একটি বৈধতা ত্রুটি ফিরিয়ে দেবে (উদাহরণ:
defines a response schema but no response body found
) এই পরিস্থিতিতে, প্রত্যাশিত এবং প্রকৃত প্রতিক্রিয়ার মধ্যে একটি অমিল নির্দেশ করে৷
- দৃশ্যকল্প 2:
- পূর্ববর্তী আচরণ: যদি আপনার OpenAPI স্পেসিফিকেশন স্পষ্টভাবে বলে যে কোনও প্রতিক্রিয়া বডি প্রত্যাশিত ছিল না, কিন্তু লক্ষ্য বা আপস্ট্রিম নীতি থেকে প্রকৃত প্রতিক্রিয়া একটি বডি অন্তর্ভুক্ত করে, নীতিটি ব্যর্থ হবে না।
- বর্তমান আচরণ: নীতিটি এখন একটি ব্যর্থতার পরিণতি ঘটাবে (উদাহরণ:
No response body is expected but one was found
) এই পরিস্থিতিতে, প্রতিক্রিয়াগুলি নির্দিষ্ট স্কিমার সাথে কঠোরভাবে মেনে চলে তা নিশ্চিত করে৷
প্রশমন
যেকোন প্রক্সি বা শেয়ার্ড ফ্লো শনাক্ত করুন যেখানে OAS যাচাইকরণ নীতি একটি Source ট্যাগ দিয়ে কনফিগার করা হয়েছে response
জন্য সেট করা হয়েছে অথবা অন্য যেকোন নীতি থেকে প্রতিক্রিয়া যাচাই করে যা একটি প্রতিক্রিয়া তৈরি করে।
একবার একটি প্রক্সি/ভাগ করা প্রবাহ চিহ্নিত হয়ে গেলে, রেসপন্স এবং OAS স্পেসিফিকেশনের মধ্যে সারিবদ্ধতা নিশ্চিত করুন। প্রতিক্রিয়া অবশ্যই আপনার OpenAPI স্পেসিফিকেশনের সাথে একটি প্রতিক্রিয়া বডির উপস্থিতি বা অনুপস্থিতির সাথে কঠোরভাবে সারিবদ্ধ হতে হবে। আপনি আপনার ট্রাফিক নিদর্শন পর্যালোচনা করতে আদর্শ Apigee ট্রেস ব্যবহার করতে পারেন। টার্গেট যদি মাঝে মাঝে সাড়া দেয় তাহলে OAS নীতির আগে এটিকে যাচাই করতে অন্যান্য নীতি ব্যবহার করুন
- যদি আপনার OAS স্পেসিফিকেশন ফাইল একটি রেসপন্স বডি নির্ধারণ করে, তাহলে টার্গেট বা আপস্ট্রিম পলিসি থেকে রেসপন্স সবসময় একটি প্রদান করতে হবে।
- যদি আপনার OAS স্পেসিফিকেশন ফাইল একটি প্রতিক্রিয়া বডি সংজ্ঞায়িত না করে, তাহলে লক্ষ্য বা আপস্ট্রিম নীতি অবশ্যই একটি পাঠাবে না।
আপনি প্রাইভেট ক্লাউড 4.53.01-এ আপগ্রেড করার চেষ্টা করার আগে প্রয়োজনীয় হিসাবে OAS যাচাইকরণ নীতি বা আপনার লক্ষ্য আচরণ আপডেট করুন। প্রোডাকশন ক্লাস্টার আপগ্রেডের সময় ব্যাঘাতের ঝুঁকি কমাতে প্রথমে আপনার অ-উৎপাদন পরিবেশে এই ধরনের চিহ্নিত ওয়ার্কফ্লোগুলিকে যাচাই করা উচিত।
JSON পাথ
প্রসঙ্গ
দ্য এজ ফর প্রাইভেট ক্লাউড 4.53.01 বিভিন্ন নীতিতে কীভাবে JSON পাথ এক্সপ্রেশন ব্যবহার করা হয় তাতে পরিবর্তন এনেছে। JSONPath এক্সপ্রেশনগুলি ExtractVariable পলিসি , RegularExpressionProtection পলিসি , JSON কন্টেন্ট পার্স করতে বা ভেরিয়েবলে মান সঞ্চয় করতে ডেটা মাস্কিং এর মত নীতিগুলিতে ব্যবহার করা যেতে পারে৷ JSONPath এক্সপ্রেশনগুলি প্রক্সি এক্সিকিউশনের সময় গতিশীলভাবে মানগুলির সাথে ভেরিয়েবলগুলি প্রতিস্থাপন করতে সাধারণ বার্তা টেমপ্লেটিং- এও ব্যবহার করা যেতে পারে। নতুন JSONPath এক্সপ্রেশন এবং ফর্ম্যাটগুলি সর্বশেষ JSON এক্সপ্রেশন মানগুলি অনুসরণ করে৷
পরিবর্তন
JSONPath এক্সপ্রেশন ব্যবহার করে এমন নীতিগুলির জন্য বিদ্যমান API প্রক্সি/শেয়ার করা ফ্লো পর্যালোচনা করা গুরুত্বপূর্ণ। এর মধ্যে রয়েছে, তবে এক্সট্র্যাক্ট ভেরিয়েবল নীতি, রেগুলার এক্সপ্রেশন সুরক্ষা নীতি বা JSONPath ব্যবহার করে মেসেজ টেমপ্লেট সহ যেকোনো নীতির মধ্যেই সীমাবদ্ধ নয়।
নীচের json ইনপুট পরিবর্তনগুলি ব্যাখ্যা করার জন্য ব্যবহার করা হয়:
{ "store": { "book": [ {"category": "reference", "author": "Nigel Rees", "price": 8.95}, {"category": "fiction", "author": "Evelyn Waugh", "price": 12.99}, {"category": "fiction", "author": "Herman Melville", "price": 8.99} ], "bicycle": { "color": "red", "book": [ {"author": "Abc"} ] } } }
- JSONPath ওয়াইল্ডকার্ড
[*]
অবজেক্ট মানের জন্য আচরণ পরিবর্তনJSON অবজেক্টের সমস্ত তাৎক্ষণিক মান অ্যাক্সেস করতে ব্যবহার করার সময়
[*]
ওয়াইল্ডকার্ডের আচরণ পরিবর্তন করা হয়েছে। পূর্বে,$.object[*]
একটি একক JSON অবজেক্টের মধ্যে মোড়ানো তাৎক্ষণিক মানগুলি ফিরিয়ে দেবে। আপডেট করা লাইব্রেরিগুলির সাথে, আউটপুট এখন এই মান ধারণকারী একটি অ্যারে।উদাহরণস্বরূপ,
পূর্ববর্তী আচরণ:$.store[*]
: বর্তমান আচরণ:{ "bicycle": { "color": "red", "book": [{"author": "Abc"}] }, "book": [ {"price": 8.95, "category": "reference", "author": "Nigel Rees"}, {"price": 12.99, "category": "fiction", "author": "Evelyn Waugh"}, {"price": 8.99, "category": "fiction", "author": "Herman Melville"} ] }
কর্ম:[ [ {"category": "reference", "author": "Nigel Rees", "price": 8.95}, {"category": "fiction", "author": "Evelyn Waugh", "price": 12.99}, {"category": "fiction", "author": "Herman Melville", "price": 8.99} ], { "color": "red", "book": [{"author": "Abc"}] } ]
পূর্বে পুনরুদ্ধার করা আইটেমগুলিকে সরাসরি লক্ষ্য করতে শুধুমাত্র মূল বস্তু (উদাহরণ:
$.store
) লক্ষ্য করতে JSONPath এক্সপ্রেশন পরিবর্তন করুন। - পাথের মধ্যে JSONPath ট্রেলিং ডট
(.)
ত্রুটি ঘটায়JSONPath এক্সপ্রেশনগুলির জন্য কঠোর বৈধতা রয়েছে। পূর্বে, একটি অবৈধ ট্রেলিং ডট (উদাহরণ:
$.path.to.element.
) দিয়ে শেষ হওয়া পাথগুলি নীরবে উপেক্ষা করা হবে, এবং যদি পূর্ববর্তী বৈধ পাথ সেগমেন্ট মিলে যায় তাহলে ক্যোয়ারীটি এখনও ফলাফল প্রদান করে। নতুন সংস্করণের সাথে, এই ধরনের বিকৃত পথগুলি এখন সঠিকভাবে অবৈধ হিসাবে চিহ্নিত করা হয়েছে এবং এর ফলে একটি ত্রুটি দেখা দেবে৷উদাহরণস্বরূপ,
পূর্ববর্তী আচরণ:$.store.book.
বর্তমান আচরণ:[ {"price":8.95,"category":"reference","author":"Nigel Rees"}, {"price":12.99,"category":"fiction","author":"Evelyn Waugh"}, {"price":8.99,"category":"fiction","author":"Herman Melville"} ]
ERROR: com.jayway.jsonpath.InvalidPathException - Path must not end with a '.' or '..'
যেকোন বিদ্যমান নীতি যা একটি অনিচ্ছাকৃত ট্রেলিং ডট সহ JSONPath এক্সপ্রেশন ব্যবহার করে এখন একটি
কর্ম:InvalidPathException
এর সাথে ব্যর্থ হবে।যেকোন JSONPath এক্সপ্রেশন থেকে ট্রেলিং ডটটি সরান যা একটি দিয়ে শেষ হয়। উদাহরণস্বরূপ,
$.store.book.
$.store.book
থেকে - JSONPath রিকার্সিভ ডিসেন্ট
(..)
আউটপুট গঠন পরিবর্তন(..)
(পুনরাবৃত্ত ডিসেন্ট) অপারেটর ব্যবহার করে একটি নামযুক্ত উপাদানের সমস্ত ঘটনা সনাক্ত করার জন্য ফলাফলগুলি কীভাবে ফেরত দেওয়া হয় তার পরিবর্তন রয়েছে৷ পূর্বে, সমস্ত পাওয়া উপাদান একটি একক তালিকায় সমতল করা হয়েছিল। আপডেট করা লাইব্রেরিগুলি এখন তালিকার একটি তালিকা ফেরত দেয়, মূল গ্রুপিং কাঠামো সংরক্ষণ করে যেখানে উপাদানগুলি পাওয়া গিয়েছিল, একটি একক সমতল তালিকার পরিবর্তে।উদাহরণস্বরূপ,
পূর্ববর্তী আচরণ:$..book
বর্তমান আচরণ:[ {"price":8.95,"category":"reference","author":"Nigel Rees"}, {"price":12.99,"category":"fiction","author":"Evelyn Waugh"}, {"price":8.99,"category":"fiction","author":"Herman Melville"}, {"author":"Abc"} ]
কর্ম:[ [ {"category":"reference","author":"Nigel Rees","price":8.95}, {"category":"fiction","author":"Evelyn Waugh","price":12.99}, {"category":"fiction","author":"Herman Melville","price":8.99} ], [ {"author":"Abc"} ] ]
নতুন নেস্টেড অ্যারে কাঠামোর জন্য অ্যাকাউন্টে আপনার ডাউনস্ট্রিম প্রসেসিং লজিক আপডেট করুন। আপনাকে সম্ভবত বাইরের JSONArray এর মাধ্যমে পুনরাবৃত্তি করতে হবে এবং তারপর পৃথক উপাদানগুলি অ্যাক্সেস করতে প্রতিটি ভিতরের JSONArray এর মাধ্যমে পুনরাবৃত্তি করতে হবে।
- মাল্টি-আইটেম নির্বাচন বা ফিল্টারের পরে JSONPath ইন্ডেক্সিং খালি অ্যারে প্রদান করে
আচরণে একটি পরিবর্তন হয় যখন একটি সূচক (উদাহরণ:
[0]
) একটি মাল্টি-আইটেম নির্বাচক (যেমন[*]
) বা একটি ফিল্টার ([?(condition)]
) এর পরপরই প্রয়োগ করা হয়। পূর্বে, এই ধরনের অভিব্যক্তিগুলি সম্মিলিত ফলাফল থেকে নির্দিষ্ট সূচকে আইটেমটি নির্বাচন করার চেষ্টা করবে। নতুন সংস্করণের সাথে, এই অভিব্যক্তিগুলি এখন একটি খালি অ্যারে ([]
) ফিরিয়ে দেবে।উদাহরণস্বরূপ,
পূর্ববর্তী আচরণ:$.store.book[*][0]
বর্তমান আচরণ:{"category": "reference", "price": 8.95, "author": "Nigel Rees"}
কর্ম:[]
যদি ফিল্টার করার প্রয়োজন হয় এবং তারপর ফিল্টার করা সেট থেকে একটি নির্দিষ্ট আইটেম পেতে, JSONPath দ্বারা প্রত্যাবর্তিত ফিল্টার করা অ্যারেটি প্রক্রিয়া করুন উদাহরণস্বরূপ,
$..book[?(@.category == 'fiction')]
এবং তারপর পূর্ববর্তী ফলাফল থেকে[0]
নিন। - JSONPath নেতিবাচক অ্যারে স্লাইসিং আউটপুট পরিবর্তন
নতুন সংস্করণটি নেতিবাচক অ্যারে স্লাইসিংয়ের আচরণ পরিবর্তন করেছে (উদাহরণ:
[-2:], [-1:]
)। পূর্বে, একটি অ্যারেতে একটি নেতিবাচক স্লাইস প্রয়োগ করার সময় (অ্যারের শেষ থেকে উপাদানগুলি নির্দেশ করে), পুরানো সংস্করণটি সেই স্লাইস থেকে শুধুমাত্র একটি আইটেম ভুলভাবে ফিরিয়ে দেবে। নতুন সংস্করণটি এখন সঠিকভাবে একটি তালিকা (অ্যারে) প্রদান করে যাতে নির্দিষ্ট নেতিবাচক পরিসরের মধ্যে পড়ে এমন সমস্ত উপাদান রয়েছে।যেমন
পূর্ববর্তী আচরণ:$.store.book[-2:]
বর্তমান আচরণ:{"price":12.99,"category":"fiction","author":"Evelyn Waugh"}
কর্ম:[ {"category":"fiction","author":"Evelyn Waugh","price":12.99}, {"category":"fiction","author":"Herman Melville","price":8.99} ]
ডাউনস্ট্রিম প্রসেসিং লজিকটি এখন কাঙ্ক্ষিত আউটপুট পেতে রিটার্ন করা JSON অ্যারের মাধ্যমে পুনরাবৃত্তি করতে আপডেট করা আবশ্যক।
- JSONPath আরও কঠোর পূর্ববর্তী বিন্দু
রুট থেকে সরাসরি অ্যাক্সেস করা উপাদানগুলির জন্য বাক্য গঠনের কঠোর প্রয়োগ রয়েছে। যখন কোনো পূর্ববর্তী বিন্দু (উদাহরণ:
$propertyelement
) ছাড়াই মূল থেকে সরাসরি উপাদানগুলি অ্যাক্সেস করা হয়, তখন এই ধরনের সিনট্যাক্সকে এখন একটি ত্রুটি হিসাবে বিবেচনা করা হয় এবং প্রক্সি স্থাপনা প্রতিরোধ করবে।উদাহরণস্বরূপ
$store
,{ "bicycle": { "color": "red", "book": [{"author": "Abc"}] }, "book": [ {"price": 8.95, "category": "reference", "author": "Nigel Rees"}, {"price": 12.99, "category": "fiction", "author": "Evelyn Waugh"}, {"price": 8.99, "category": "fiction", "author": "Herman Melville"} ] }
বর্তমান আচরণ:
Proxy will fail to deploy.
কর্ম:
ডট অন্তর্ভুক্ত করতে আপনার JSONPath পরিবর্তন করুন:
$.propertyName
(উদাহরণ:$.store
)। এটি সঠিকভাবে লক্ষ্যবস্তু করবে এবং মানটি পুনরুদ্ধার করবে। - ডায়নামিক JSONPath এক্সপ্রেশন
নীতিগুলিতে গভীর মনোযোগ দিন যেখানে JSONPath এক্সপ্রেশন নিজেই একটি ভেরিয়েবল দ্বারা সরবরাহ করা হয় (উদাহরণ:
বা{myJsonPathVariable}
) এই ভেরিয়েবলগুলির মান উপরে বর্ণিত সম্ভাব্য আচরণগত পরিবর্তনগুলির বিরুদ্ধেও পরীক্ষা করা আবশ্যক।{dynamicPath}
প্রশমন
প্রশমিত করার জন্য, একটি ব্যাপক কৌশল প্রয়োজন। এই প্রক্রিয়ার মধ্যে উপযুক্ত আপডেট পাথের সিদ্ধান্ত নেওয়া এবং JSONPath এক্সপ্রেশন ভাঙার জন্য প্রয়োজনীয় ফিক্স প্রয়োগ করা জড়িত।
আপগ্রেড পাথ পদ্ধতি বেছে নিন যা আপনার জন্য সবচেয়ে ভালো কাজ করে:
- জিরো ডাউনটাইম মাইগ্রেশন
এই কৌশলটিতে এক বা একাধিক নতুন পরিবেশ সংগ্রহ করা জড়িত যাতে আপনি এটিতে পৃথক বার্তা প্রসেসর নোড সংযুক্ত করতে পারেন। এই ধরনের বার্তা প্রসেসর নোড 4.53.01 ইনস্টল করতে সেট করা যেতে পারে এবং আধুনিক JSONPath এক্সপ্রেশন সহ প্রক্সি থাকতে পারে। এগুলি আপগ্রেডের সময় ব্যবহার করা যেতে পারে এবং আপগ্রেড সম্পূর্ণ হওয়ার পরে ডিকমিশন করা যেতে পারে। এই কৌশলটি নিরবচ্ছিন্ন কিন্তু একটি মসৃণ আপগ্রেড সমর্থন করার জন্য অস্থায়ীভাবে অতিরিক্ত বার্তা-প্রসেসর নোড সংগ্রহ করা জড়িত। নিচে বিস্তারিত:
- একটি নতুন পরিবেশ তৈরি করুন এবং এই নতুন পরিবেশে সংস্করণ 4.53.01-এর নতুন বার্তা-প্রসেসর নোড যোগ করুন ।
- নতুন পরিবেশে প্রভাবিত প্রক্সিগুলির জন্য প্রক্সি বান্ডেল আপলোড করুন এবং প্রতিকার বিভাগে ব্যাখ্যা করা প্রয়োজনীয় সংশোধনগুলি প্রয়োগ করুন এবং আপডেট করা প্রক্সি বান্ডেলটিকে নতুন পরিবেশে স্থাপন করুন৷
- ট্র্যাফিককে নতুন পরিবেশে পুনঃনির্দেশিত করুন এবং পুরানো পরিবেশ থেকে প্রভাবিত প্রক্সিগুলিকে আন-ডিপ্লয় করুন।
- মূল বার্তা প্রসেসর নোড 4.53.01 এ আপগ্রেড করুন। মূল পরিবেশে JSONPath-এর জন্য সংশোধন করা আছে এমন প্রক্সি স্থাপন করুন।
- পুরানো পরিবেশে ট্র্যাফিক ফিরে যান, যেখানে এখন 4.53.01-এ মেসেজ প্রসেসর রয়েছে এবং নতুন jsonpath এক্সপ্রেশনের জন্য আধুনিকীকৃত প্রক্সি রয়েছে।
- নতুন পরিবেশ এবং সংশ্লিষ্ট নোডগুলি মুছুন এবং ডিকমিশন করুন।
- ডাউনটাইম এবং আপগ্রেড
এই কৌশলটিতে ত্রুটিপূর্ণ JSON পাথ এক্সপ্রেশন ব্যবহার করে API প্রক্সিগুলির জন্য ডাউনটাইম সংগ্রহ করা জড়িত। এটি অতিরিক্ত বার্তা প্রসেসর নোডগুলি সংগ্রহ করার প্রয়োজন করে না তবে প্রভাবিত প্রক্সিগুলির জন্য API ট্র্যাফিকের বিঘ্ন ঘটায়।
- প্রভাবিত নীতিগুলির সাথে প্রভাবিত প্রক্সিগুলি সনাক্ত করুন এবং সমস্ত প্রভাবিত প্রক্সিগুলির জন্য একটি নতুন সংশোধন তৈরি করুন৷
- প্রক্সির একটি নতুন সংশোধনে প্রতিকার বিভাগে ব্যাখ্যা করা সংশোধনগুলি বাস্তবায়ন করে প্রয়োজনীয় সংশোধনগুলি প্রয়োগ করুন৷ এটি এখনও স্থাপন করবেন না।
- প্রভাব সহ প্রক্সি/প্রক্সিগুলির জন্য ডাউনটাইম সংগ্রহ করুন।
- ব্যক্তিগত ক্লাউড সংস্করণ 4.53.01-এর জন্য সমস্ত বার্তা প্রসেসর এজ-এ আপগ্রেড করুন। মনে রাখবেন যে বিদ্যমান প্রক্সিগুলি নতুন আপগ্রেড করা বার্তা প্রসেসরগুলিতে ব্যর্থ হতে পারে৷
- সমস্ত বার্তা প্রসেসর প্রাইভেট ক্লাউড সংস্করণ 4.53.01-এর জন্য এজ-এ আপগ্রেড হয়ে গেলে, স্থির JSONPath এক্সপ্রেশন সহ নতুন তৈরি প্রক্সি রিভিশন স্থাপন করুন।
- এই ধরনের প্রক্সিগুলিতে ট্রাফিক পুনরায় শুরু করুন।
- আপগ্রেড করার আগে প্রক্সি পুনরায় ডিজাইন করুন
প্রাইভেট ক্লাউড 4.53.01-এর জন্য এজ-এ আপগ্রেড করার আগে আপনি নিজেই প্রক্সিটিকে পুনরায় ডিজাইন করতে পারেন। নির্দিষ্ট JSON পাথ এক্সপ্রেশনের উপর নির্ভর করার পরিবর্তে, আপনি একটি ভিন্ন পদ্ধতি ব্যবহার করে একই ফলাফল পেতে পারেন।
উদাহরণ স্বরূপ, আপনি যদি JSON পাথের সাথে এক্সট্র্যাক্ট ভেরিয়েবল পলিসি ব্যবহার করেন, তাহলে আপনি জাভাস্ক্রিপ্ট পলিসি দিয়ে পলিসিটি প্রতিস্থাপন করতে পারেন যা নতুন সংস্করণে আপগ্রেড করার আগে একই ধরনের ডেটা বের করে। আপগ্রেড সম্পূর্ণ হওয়ার পরে, আপনি নতুন ফর্ম্যাটগুলির সাথে JSON পাথগুলি ব্যবহার করতে আপনার প্রক্সিটি আবার পরিবর্তন করতে পারেন৷
JavaCallout পরিবর্তন
প্রসঙ্গ
প্রাইভেট ক্লাউড 4.53.00 এর জন্য এজ এবং এর আগে ডিপ্রেকেটেড ( $APIGEE_ROOT/edge-message-processor/lib/deprecated
) নামে একটি ডিরেক্টরি ধারণ করত যেটিতে একগুচ্ছ JAR লাইব্রেরি রয়েছে। এই লাইব্রেরিগুলি JavaCallout নীতিতে জাভা কোডে ব্যবহারের জন্য উপলব্ধ ছিল এবং আপনার কাস্টম জাভা কোড প্রত্যক্ষ বা পরোক্ষভাবে ব্যবহার করতে পারত।
পরিবর্তন
প্রাইভেট ক্লাউড সংস্করণ 4.53.01-এর জন্য এজ-এ অপসারিত ডিরেক্টরিটি এখন সরানো হয়েছে। যদি আপনার জাভা কোড এই ধরনের লাইব্রেরির উপর নির্ভর করে, বার্তা প্রসেসরগুলি 4.53.01 সংস্করণে আপগ্রেড করা হলে এই ধরনের জাভা কলআউট ব্যবহার করে প্রক্সিগুলি ব্যর্থ হবে৷ এই ধরনের ব্যর্থতা এড়াতে, বার্তা-প্রসেসরগুলিকে সংস্করণ 4.53.01-এ আপগ্রেড করার আগে নীচের প্রশমনের পদক্ষেপগুলি অনুসরণ করুন।
প্রশমন
- আপনার জাভা-কলআউট নীতিগুলি এবং সংশ্লিষ্ট জারগুলি পর্যালোচনা করুন এবং তাদের মধ্যে যেকোনও আপনার বর্তমান বার্তা-প্রসেসরগুলির "অবঞ্চিত" ডিরেক্টরিতে উপস্থিত কোনো লাইব্রেরি উল্লেখ বা ব্যবহার করে কিনা তা চিহ্নিত করুন। মনে রাখবেন জাভা কলআউটগুলি প্রতিষ্ঠান বা পরিবেশ স্তরের সংস্থান হিসাবে আপলোড করা জার ব্যবহার করতে পারে। এই লাইব্রেরিগুলিও বিবেচনা করুন।
- একবার আপনি এই ধরনের অবহেলিত লাইব্রেরিগুলি চিহ্নিত করার পরে, আপনি সমস্যাটি কমানোর জন্য নীচের পদ্ধতিগুলির মধ্যে একটি অনুসরণ করতে পারেন৷
- রিসোর্স প্লেসমেন্ট (জাভা-কলআউট জার দ্বারা রেফারেন্স করা অবহেলিত ডিরেক্টরি থেকে আপনার কাছে অল্প সংখ্যক জার/লাইব্রেরি থাকলে প্রস্তাবিত)
- পছন্দসই স্তরে একটি সংস্থান হিসাবে চিহ্নিত অপ্রচলিত জারগুলি আপলোড করুন: API প্রক্সি সংশোধন, পরিবেশ বা সংস্থা৷
- যথারীতি Apigee সফ্টওয়্যার আপগ্রেডের সাথে এগিয়ে যান।
- ম্যানুয়াল প্লেসমেন্ট (জাভা-কলআউট জার দ্বারা রেফারেন্স করা হয় এমন প্রচুর জার/লাইব্রেরি আপনার কাছে থাকলে প্রস্তাবিত)
- প্রতিটি বার্তা প্রসেসর নোডে,
$APIGEE_ROOT/data/edge-message-processor/
পথে external-lib নামে একটি নতুন ডিরেক্টরি তৈরি করুন। - এই বহিরাগত-লিব ডিরেক্টরিতে চিহ্নিত JAR গুলি অনুলিপি করুন অবহেলিত ডিরেক্টরি থেকে:
cp $APIGEE_ROOT/edge-message-processor/lib/deprecated/some.jar
$APIGEE_ROOT/data/edge-message-processor/external-lib/some.jar
- নিশ্চিত করুন যে ডিরেক্টরি এবং অন্তর্নিহিত জারগুলি Apigee ব্যবহারকারী দ্বারা পাঠযোগ্য:
chown -R apigee:apigee
$APIGEE_ROOT/data/edge-message-processor/external-lib
- যথারীতি Apigee সফ্টওয়্যার আপগ্রেডের সাথে এগিয়ে যান।
- প্রতিটি বার্তা প্রসেসর নোডে,
- রিসোর্স প্লেসমেন্ট (জাভা-কলআউট জার দ্বারা রেফারেন্স করা অবহেলিত ডিরেক্টরি থেকে আপনার কাছে অল্প সংখ্যক জার/লাইব্রেরি থাকলে প্রস্তাবিত)
OpenLDAP পরিবর্তন
প্রসঙ্গ
ওপেনএলডিএপি প্রমাণীকরণ এবং অনুমোদন উভয়ের জন্য এজ প্রাইভেট ক্লাউডে ব্যবহার করা যেতে পারে। এজ ফর প্রাইভেট ক্লাউড 4.53.01-এ, Apigee দ্বারা পাঠানো OpenLDAP সফ্টওয়্যারটি সংস্করণ 2.4 থেকে 2.6 তে আপগ্রেড করা হয়েছে।
পরিবর্তন
OpenLDAP 2.6-এ, আপেক্ষিক বিশিষ্ট নাম (RDN) প্রায় 241 বাইট/অক্ষরের মধ্যে সীমাবদ্ধ। এই সীমাবদ্ধতা একটি হার্ড ক্যাপ বলবৎ এবং সংশোধন করা যাবে না.
প্রভাব- অত্যধিক বড় RDN সহ এন্ট্রিগুলির জন্য প্রতিলিপি বা আমদানি ব্যর্থতা ঘটে।
- সংস্থা, পরিবেশ, কাস্টম ভূমিকা, অনুমতি ইত্যাদির মতো একটি সত্তা তৈরি করার চেষ্টা করলে ত্রুটির বার্তা আসতে পারে:
"message": "[LDAP: error code 80 - Other]"
। - Apigee-এর LDAP-এ 241 বাইটের বেশি যেকোন DN প্রভাবিত হয়। এই ধরনের DNগুলি Apigee OpenLDAP সফ্টওয়্যারের সফল আপগ্রেড প্রতিরোধ করবে এবং আপগ্রেডের সাথে এগিয়ে যাওয়ার আগে আপনাকে এই ধরনের আইটেমগুলির জন্য প্রশমন কৌশলগুলি অনুসরণ করতে হবে।
সাধারণত, Apigee-এর LDAP-এ, দীর্ঘ DNগুলি অনুমতির সাথে সম্পর্কিত কারণ সেগুলি একাধিক সত্তাকে একত্রিত করে তৈরি করা হয়। এই ধরনের অনুমতি এন্ট্রি বিশেষ করে আপগ্রেড সমস্যা প্রবণ হয়.
যেমন,
dn: cn=@@@environments@@@*@@@applications@@@*@@@revisions@@@*@@@debugsessions,ou=resources,cn=businessuser,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
সাধারণত, আপনার দৈর্ঘ্যের সংগঠন, পরিবেশ এবং ভূমিকার নাম থাকবে যাতে LDAP-এ RDN 241 বাইটের থেকে ছোট হয়।
প্রশমন
4.53.01 এ আপগ্রেড করার আগে:
নিম্নলিখিত পদক্ষেপগুলি আপনার বিদ্যমান LDAP 2.4 ক্লাস্টারে দীর্ঘ RDN-এর উপস্থিতি যাচাই করতে সাহায্য করবে।
#1 - LDAP ডেটা বের করুন
বিশিষ্ট নাম (dn) খুঁজে পেতে ldapsearch কমান্ড ব্যবহার করুন এবং একটি ফাইলে আউটপুট পুনঃনির্দেশ করুন:
ldapsearch -o ldif-wrap=no -b "dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w LDAP_PASSWORD dn > /tmp/DN.ldif
উপরের DN.ldif ফাইলটিতে LDAP এন্ট্রি রয়েছে তা নিশ্চিত করুন৷
#2 - দীর্ঘ RDN চিহ্নিত করুন
উপরের DN.ldif ফাইল থেকে 241 বাইট/অক্ষরের বেশি RDN খুঁজুন:
cat /tmp/DN.ldif | grep '^dn:' | gawk -F',|dn: ' '{ rdn = $2; char_count = length(rdn); cmd = "echo -n \"" rdn "\" | wc -c"; cmd | getline byte_count; close(cmd); if (char_count > 241 || byte_count > 241) { print rdn, "(chars: " char_count ") (bytes: " byte_count ")"; }}' o=VeryLongOrgNameWithMoreThan241Chars.... (chars: 245) (bytes: 245) cn=VeryLongCustomRoleNameWithMoreThan241Chars.... (chars: 258) (bytes: 258)
যদি উপরের কমান্ডটি কোন আউটপুট তৈরি না করে, তাহলে বিদ্যমান LDAP সেটআপে কোন RDN 241 বাইট/অক্ষরের বেশি হবে না। আপনি যথারীতি আপগ্রেডের সাথে এগিয়ে যেতে নিরাপদ।
যদি উপরের কমান্ডটি একটি আউটপুট তৈরি করে, এটি 241 বাইট/অক্ষরের বেশি RDN-এর উপস্থিতি নির্দেশ করে। এই ধরনের আইটেমগুলির জন্য, প্রাইভেট ক্লাউড 4.53.01 আপগ্রেডের জন্য এজ নিয়ে এগিয়ে যাওয়ার আগে ধাপ #3 এ বর্ণিত প্রশমনের পদক্ষেপগুলি অনুসরণ করুন।
#3 - দীর্ঘ RDN গুলি পরিচালনা করুন
যদি ধাপ #2 থেকে আউটপুট পাওয়া যায়, তাহলে এটি 241 বাইট/অক্ষরের বেশি RDN-এর উপস্থিতি নির্দেশ করে এবং নিচের প্রশমনের পদক্ষেপগুলি অনুসরণ করুন:
241 বাইটের বেশি LDAP এন্ট্রি পর্যালোচনা করুন।
- যদি এটি কাস্টম ভূমিকার নাম, অ্যাপ, এপিআই পণ্য বা অন্যান্য সত্তা যা প্রাথমিক ফ্যাক্টর যার RDN দীর্ঘ হয়, তাহলে একটি সংক্ষিপ্ত নাম সহ একটি বিকল্প সত্তা ব্যবহার করতে স্থানান্তর করুন৷
- যদি এটি প্রতিষ্ঠানের নাম বা পরিবেশের নাম হয় যা দীর্ঘ RDN-এর প্রাথমিক অবদানকারী হয়, তাহলে আপনাকে একটি ছোট নাম দিয়ে একটি ভিন্ন সংস্থা বা পরিবেশে স্থানান্তর করতে হবে।
উপরের ধাপগুলো পুনরাবৃত্তি করতে থাকুন যতক্ষণ না আপনার LDAP-এর 241 বাইটের বেশি আরডিএন না থাকে। একবার আপনি এই অবস্থায় পৌঁছে গেলে, প্রাইভেট ক্লাউড সংস্করণ আপগ্রেডের সাথে যথারীতি এগিয়ে যান।
ক্রিপ্টোগ্রাফি প্রদানকারী পরিবর্তন
প্রসঙ্গ
এই পরিবর্তনটি প্রাইভেট ক্লাউড 4.53.00-এর জন্য এজ থেকে একটি ক্যারি-ওভার। প্রাইভেট ক্লাউড 4.53.00-এর জন্য এজ-এ, FIPS সমর্থন সক্রিয় করতে অভ্যন্তরীণ ক্রিপ্টোগ্রাফি প্রদানকারীকে Bouncy Castle (BC) থেকে Bouncy Castle FIPS (BC FIPS) এ আপডেট করা হয়েছে।
পরিবর্তন
যদি JavaCallout নীতিগুলি মূল BC প্রদানকারী ব্যবহার করার উপর নির্ভর করে, বিশেষ করে যখন নিরাপত্তা কার্যকারিতা ব্যবহার করে যা BC FIPS প্রদানকারীতে কঠোর করা হয়েছে (উদাহরণস্বরূপ, এনক্রিপশন এবং সাইনিং উভয়ের জন্য একটি সাধারণ কী জোড়া ব্যবহার করে), এই ধরনের JavaCallout নীতিগুলিকে আধুনিকীকরণ করতে হবে। BC নামটি ব্যবহার করে বাউন্সি ক্যাসল ক্রিপ্টোগ্রাফি প্রদানকারীকে লোড করার চেষ্টা করা JavaCallout নীতিগুলি ব্যর্থ হতে পারে কারণ ডিফল্ট প্রদানকারী পরিবর্তিত হয়েছে৷ BC প্রদানকারী ব্যবহার করে এই ধরনের নীতিগুলি পরবর্তীতে ভেঙ্গে যেতে পারে। পুরানো BC প্রদানকারীর উপর নির্ভর করে কোনো কাস্টম বাস্তবায়ন আর অ্যাক্সেসযোগ্য হবে না এবং পর্যালোচনা এবং পুনরায় প্রয়োগ করতে হবে।
প্রশমন
প্রস্তাবিত সমাধান হল BCFIPS প্রদানকারী ব্যবহার করা। কাস্টম জাভাকলআউট বাস্তবায়ন যা পুরানো প্রদানকারীর উপর নির্ভর করে সেগুলিকে বাউন্সি ক্যাসল FIPS প্রদানকারী ব্যবহার করে পর্যালোচনা এবং পুনরায় প্রয়োগ করতে হবে, যা "BCFIPS" স্ট্রিং ব্যবহার করে অ্যাক্সেস করা যেতে পারে।
স্বয়ংক্রিয় পরিবর্তন সনাক্তকরণ টুল
একটি পরিবর্তন সনাক্তকরণ টুল শীঘ্রই প্রকাশ করার পরিকল্পনা করা হয়েছে। এই টুলটিতে API প্রক্সি, শেয়ার্ড ফ্লো, রিসোর্স এবং LDAP RDN স্ক্যান করার এবং শনাক্ত করার ক্ষমতা থাকবে যা এই নিবন্ধে বর্ণিত বিভিন্ন পরিবর্তন দ্বারা সম্ভাব্যভাবে প্রভাবিত। এই টুলটি প্রাইভেট ক্লাউড 4.53.01-এর জন্য এজ-এ আপগ্রেড করার সময় বা পরে ব্যর্থতার প্রবণ বিভিন্ন সত্তা চিহ্নিত করতে সাহায্য করবে।