مروری بر تغییرات
Edge for Private Cloud 4.53.01 تغییرات متعددی را معرفی می کند که وضعیت امنیتی پلتفرم را بهبود می بخشد و نسخه های به روز شده نرم افزار و کتابخانه های مورد نیاز را در خود جای می دهد. این تغییرات بر انواع سیاست های زیر تأثیر می گذارد:
- خط مشی اعتبارسنجی OAS (مشخصات OpenAPI).
- خطمشیهایی که از جستارهای JSONPath پشتیبانی میکنند
- خطمشیهای فراخوانی جاوا که به کتابخانههای قدیمی متکی هستند.
- OpenLDAP
- تغییرات ارائه دهنده رمزنگاری
همچنین میتوانید از ابزار تشخیص تغییر برای شناسایی تغییرات در پراکسیها، جریانهای مشترک یا سایر مصنوعات در خوشه خود استفاده کنید که ممکن است در نتیجه این ارتقا باعث اختلال شوند.
شرح تفصیلی تغییرات
این بخش تغییرات ارائه شده در نسخه 4.53.01 را توضیح می دهد که می تواند در جریان کار شما در حین یا پس از ارتقاء اختلال ایجاد کند. روشهای شناسایی حوزههای مشکل بالقوه و روشهای کاهش یا راهحلها نیز پوشش داده شدهاند.
خط مشی اعتبارسنجی OAS (مشخصات OpenAPI).
زمینه
خط مشی اعتبارسنجی OAS درخواست ها یا پاسخ های دریافتی را بر اساس قوانین تعریف شده در مشخصات OpenAPI 3.0 (JSON یا YAML) تأیید می کند. Edge for Private Cloud 4.53.01 بهبودهایی را در خط مشی OAS (مشخصات OpenAPI) ارائه می دهد که بر اعتبارسنجی دقیق تر و دقیق تر بدنه های پاسخ API تمرکز دارد.
تغییرات
Edge for Private Cloud 4.53.01 دو تغییر مهم را در نحوه اعتبارسنجی پاسخهای API توسط خطمشی OAS معرفی میکند و از همسویی نزدیکتر با مشخصات 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 تأیید پاسخ از هر خط مشی دیگری است که یک پاسخ ایجاد می کند.
در صورت استفاده از ابزار، خروجی را با فرمت زیر تولید می کند:
سازمان | محیط زیست | نام مصنوع | نوع مصنوع | تجدید نظر | نام خط مشی | نوع خط مشی | نوع تاثیر | میدان ویژه ضربه | قطعیت تاثیر | مستندات |
---|---|---|---|---|---|---|---|---|---|---|
org2 | توسعه دهنده | پروکسی 2 | پروکسی | 4 | oas-validateresponse | OAS Validation | oas_content_type_handling | منبع = calloutresponse | متوسط | سیاست اعتبارسنجی OAS |
org1 | تولید | پروکسی 3 | جریان مشترک | 1 | oas-spec-validation | OAS Validation | oas_content_type_handling | منبع=پاسخ | متوسط | سیاست اعتبارسنجی OAS |
برای توضیح دقیق ستونهای جدول خروجی، به بخش Understand the tool output مراجعه کنید.
هنگامی که یک پروکسی یا جریان مشترک شناسایی شد، مطمئن شوید که پاسخ و مشخصات OAS شما در مورد وجود یا عدم وجود یک بدنه پاسخگویی در یک راستا هستند. می توانید از ردیابی استاندارد Apigee برای بررسی الگوهای ترافیکی خود استفاده کنید. اگر هدف به طور متناوب پاسخی را برمیگرداند، قبل از اینکه پاسخ به خطمشی اعتبارسنجی OAS ارسال شود، از سیاستهای دیگر برای اعتبارسنجی پاسخ استفاده کنید.
- اگر فایل مشخصات OAS شما یک بدنه پاسخ را تعریف می کند، پاسخ از خط مشی هدف یا بالادست همیشه باید یکی را ارائه کند.
- اگر فایل مشخصات OAS شما بدنه پاسخگویی را تعریف نمی کند، خط مشی هدف یا بالادست نباید آن را ارسال کند.
قبل از اینکه بخواهید به Private Cloud 4.53.01 ارتقا دهید، سیاست اعتبارسنجی OAS یا رفتار هدف خود را در صورت لزوم به روز کنید. برای به حداقل رساندن خطر اختلال در طول ارتقاء خوشه تولید، ابتدا باید چنین جریان های کاری شناسایی شده را در محیط های غیر تولیدی خود تأیید کنید.
مسیر JSON
زمینه
Edge for Private Cloud 4.53.01 تغییراتی را در نحوه استفاده از عبارات مسیر JSON در خط مشی های مختلف ایجاد کرده است. عبارات JSONPath را می توان در خط مشی هایی مانند سیاست ExtractVariable ، خط مشی RegularExpressionProtection ، پوشش داده برای تجزیه محتوای JSON یا ذخیره مقادیر در متغیرها استفاده کرد. عبارات JSONPath همچنین می توانند در قالب پیام های عمومی برای جایگزینی متغیرها با مقادیر به صورت پویا در طول اجرای پروکسی استفاده شوند. عبارات و قالب های جدید JSONPath از آخرین استانداردهای عبارت JSON پیروی می کنند.
تغییرات
بررسی پروکسیهای API موجود/جریانهای مشترک برای خطمشیهایی که از عبارات JSONPath استفاده میکنند، مهم است. این شامل خطمشی Extract Variables، خطمشی حفاظت از بیان منظم یا هر خطمشی با الگوی پیام با استفاده از 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"}] } ]
عبارت JSONPath را تغییر دهید تا به سادگی شی والد (مثال:
$.store
) را هدف قرار دهد تا مستقیماً مواردی را که قبلاً بازیابی شده اند مورد هدف قرار دهد. - نقطه انتهایی 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}
کاهش
با استفاده از ابزار تشخیص تغییر یا بررسی دستی پراکسیهای API خود برای جستجوی الگوهای توصیفشده، هر پراکسی یا جریان مشترکی را که ممکن است تحت تأثیر ارتقا قرار گیرد، شناسایی کنید. اگر از این ابزار استفاده میکنید، خروجی پروکسی تأثیرگذار یا جریان مشترک، خطمشی مربوطه و هر مسیر مشکلساز JSON را شناسایی میکند، همانطور که در خروجی مثال زیر نشان داده شده است:
سازمان | محیط زیست | نام مصنوع | نوع مصنوع | تجدید نظر | نام خط مشی | نوع خط مشی | نوع تاثیر | میدان ویژه ضربه | قطعیت تاثیر | مستندات |
---|---|---|---|---|---|---|---|---|---|---|
org1 | توسعه دهنده | پروکسی 1 | پروکسی | 4 | EV-ExtractRequestParams | ExtractVariables | JSONPath Wildcard [*] تغییر رفتار برای مقادیر شی | $.store[*] | بالا | JSONPath Wildcard [*] تغییر رفتار برای مقادیر شی |
org2 | تولید | پروکسی 2 | جریان مشترک | 1 | EV-ExtractResponseParams | ExtractVariables | JSONPath Trailing Dot (.) در Paths Now باعث خطا می شود | $.store.book. | بالا | نقطه انتهایی JSONPath (.) در مسیرها باعث ایجاد خطا می شود |
org3 | توسعه دهنده | پروکسی 3 | پروکسی | 3 | SC-FetchUserProfile | ServiceCallout | تغییر ساختار خروجی JSONPath بازگشتی (..). | $..کتاب | بالا | تغییر ساختار خروجی نزول بازگشتی JSONPath (..). |
org4 | تولید | پروکسی 4 | جریان مشترک | 2 | RF-InvalidAuthToken | Raise Fault | نمایه سازی JSONPath پس از انتخاب چند مورد یا فیلتر اکنون آرایه خالی را برمی گرداند | $.store.book[*][0] | بالا | نمایه سازی JSONPath پس از انتخاب چند مورد یا فیلتر، آرایه خالی را برمی گرداند |
org5 | تست کنید | پروکسی 5 | پروکسی | 6 | SC-FetchProfileDetails | ServiceCallout | تغییر خروجی برش آرایه منفی JSONPath | $.store.book[-2:] | بالا | تغییر خروجی برش آرایه منفی JSONPath |
org6 | تولید | پروکسی 6 | پروکسی | 2 | ML-LogRequestDetails | MessageLogging | JSONPath Stricter Preceding Dot | فروشگاه $ | بالا | JSONPath نقطه قبل سخت تر است |
org7 | تست کنید | پروکسی 7 | پروکسی | 5 | RF-InvalidTokenDetails | Raise Fault | عبارات پویا JSONPath | myJsonPathVariable | متوسط | عبارات پویا JSONPath |
برای توضیح دقیق ستونها در جدول خروجی بالا، قسمت Output tool را درک کنید .
برای کاهش، یک استراتژی جامع ضروری است. این فرآیند شامل تصمیم گیری در مورد مسیر به روز رسانی مناسب و اعمال اصلاحات لازم برای عبارات JSONPath شناسایی شده است.
روش ارتقای مسیر را انتخاب کنید که برای شما بهترین کار را دارد:
- مهاجرت صفر
این استراتژی شامل تهیه یک یا چند محیط جدید است تا بتوانید گرههای پردازشگر پیام جداگانه را به آن متصل کنید. چنین گره های پردازشگر پیام را می توان برای نصب 4.53.01 تنظیم کرد و دارای پراکسی هایی با عبارات مدرن JSONPath باشد. اینها را می توان در حین ارتقا استفاده کرد و پس از تکمیل ارتقاء می توان آنها را از رده خارج کرد. این استراتژی یکپارچه است اما شامل تهیه موقت گرههای پردازشگر پیام اضافی برای پشتیبانی از یک ارتقاء روان است. جزئیات زیر:
- یک محیط جدید ایجاد کنید و گره های پردازشگر پیام جدید نسخه 4.53.01 را به این محیط جدید اضافه کنید .
- بسته پروکسی را برای پراکسی های آسیب دیده در محیط جدید آپلود کنید و اصلاحات لازم را که در بخش اصلاح توضیح داده شده است اعمال کنید و بسته پراکسی به روز شده را در محیط جدید مستقر کنید.
- ترافیک را به محیط جدید هدایت کنید و پراکسی های آسیب دیده را از محیط قدیمی خارج کنید.
- نودهای پردازشگر پیام اصلی را به 4.53.01 ارتقا دهید. پراکسی هایی را که برای JSONPath اصلاحاتی دارند در محیط اصلی مستقر کنید.
- ترافیک را به محیط قدیمی برگردانید، که اکنون دارای پردازشگر پیام در 4.53.01 و پروکسی است که برای عبارات جدید jsonpath مدرن شده است.
- محیط جدید و گره های مرتبط را حذف و از کار خارج کنید.
- خرابی و ارتقا
این استراتژی شامل تهیه خرابی برای پراکسی های API با استفاده از عبارات مسیر JSON معیوب است. این نیازی به تهیه گره های پردازشگر پیام اضافی ندارد، اما باعث اختلال در ترافیک API برای پراکسی های تحت تأثیر می شود.
- پروکسیهای آسیبدیده را با خطمشیهای تحتتأثیر شناسایی کنید و یک تجدیدنظر جدید برای همه پراکسیهای آسیبدیده ایجاد کنید.
- با اجرای اصلاحات توضیح داده شده در بخش اصلاح در یک ویرایش جدید از پروکسی، اصلاحات لازم را اعمال کنید. هنوز این را مستقر نکنید.
- برای پراکسی/پراکسی های تاثیرگذار، زمان خرابی را تهیه کنید.
- همه پردازشگرهای پیام را برای نسخه ابر خصوصی 4.53.01 به Edge ارتقا دهید. توجه داشته باشید که پراکسی های موجود ممکن است در پردازشگرهای پیام که به تازگی ارتقا یافته اند، از کار بیفتند.
- هنگامی که همه پردازشگرهای پیام برای نسخه ابر خصوصی 4.53.01 به Edge ارتقا یافتند، نسخه پروکسی جدید ایجاد شده را با عبارت JSONPath ثابت اجرا کنید.
- از سرگیری ترافیک در چنین پراکسی هایی.
- طراحی مجدد پروکسی قبل از ارتقا
میتوانید قبل از ارتقا به Edge برای Private Cloud 4.53.01، خود پراکسی را دوباره طراحی کنید. بهجای تکیه بر عبارات مسیر JSON خاص، میتوانید با استفاده از روشی متفاوت به همان نتیجه برسید.
برای مثال، اگر از یک Extract Variable Policy با مسیر JSON استفاده میکنید، میتوانید خطمشی را با یک خطمشی جاوا اسکریپت جایگزین کنید که دادههای مشابه را قبل از ارتقا به نسخه جدیدتر استخراج میکند. پس از تکمیل ارتقا، میتوانید پروکسی خود را به استفاده از مسیرهای JSON با فرمتهای جدیدتر تغییر دهید.
JavaCallout تغییر می کند
زمینه
Edge برای ابر خصوصی 4.53.00 و قبل از آن حاوی دایرکتوری به نام deprecated ( $APIGEE_ROOT/edge-message-processor/lib/deprecated
) بود که حاوی مجموعهای از کتابخانههای JAR بود. این کتابخانه ها برای استفاده در کد جاوا در خط مشی JavaCallout در دسترس بودند و می توانستند توسط کد جاوا سفارشی شما به طور مستقیم یا غیرمستقیم استفاده شوند.
تغییرات
دایرکتوری منسوخ شده اکنون در Edge برای نسخه ابر خصوصی 4.53.01 حذف شده است. در صورتی که کد جاوا شما به چنین کتابخانههایی متکی باشد، پراکسیهایی که از چنین فراخوانهای جاوا استفاده میکنند، زمانی که پردازشگرهای پیام به نسخه 4.53.01 ارتقاء مییابند، از کار میافتند. برای جلوگیری از چنین خرابیهایی، قبل از ارتقاء پردازندههای پیام به نسخه 4.53.01، مراحل کاهش دهنده زیر را دنبال کنید.
کاهش
با استفاده از ابزار تشخیص تغییر یا به صورت دستی، خطمشیهای Java Callout و jarهای مرتبط خود را مرور کنید. بررسی کنید که آیا هر یک از کتابخانه های مرجع خط مشی ها در فهرست "منسوخ" پردازنده های پیام فعلی شما وجود دارد یا خیر.
اگر از ابزار ارائه شده توسط Apigee برای تشخیص های بالا استفاده می کنید، این ابزار گزارشی را مطابق جدول زیر ایجاد می کند. به طور خاص، خطمشیهایی را هدف قرار میدهد که به JARهای موجود در فهرست راهنمای
$APIGEE_ROOT/edge-message-processor/lib/deprecated
Edge قدیمیتر برای نسخههای Private Cloud اشاره میکنند.این ابزار گزارش هایی را در قالب زیر تولید می کند:
سازمان محیط زیست نام مصنوع نوع مصنوع تجدید نظر نام خط مشی نوع خط مشی نوع تاثیر میدان ویژه ضربه قطعیت تاثیر مستندات org1 هیچ کدام هیچ کدام org-level-jar هیچ کدام هیچ کدام java-callout کتابخانه منسوخ شده برای simple-javacallout-o1-jar-1.jar
شناسایی شد['استفاده از کلاس org.apache.commons.io.FileUtils
ازcommons-io-2.5.jar
, 'استفاده شناسایی شده از کلاسorg.apache.commons.io.input.XmlStreamReaderException
ازcommons-io-2.5.jar
']بالا JavaCallout تغییر می کند org3 env3 هیچ کدام env-level-jar هیچ کدام هیچ کدام java-callout کتابخانه منسوخ شده برای fat-javacallout-e3-jar-1.jar
شناسایی شد['استفاده از کلاس org.apache.http.impl.auth.NTLMSchemeFactory
ازhttpclient-4.5.2.jar
شناسایی شد']بالا JavaCallout تغییر می کند org1 env1 p1 پروکسی-سطح-jar 1 هیچ کدام java-callout کتابخانه منسوخ شده برای simple-javacallout-p1-jar-1.jar
شناسایی شد['استفاده شناسایی شده از کلاس org.apache.commons.lang3.builder.ToStringBuilder
ازcommons-lang3-3.4.jar
'، 'استفاده شناسایی شده از کلاسorg.apache.commons.lang3.Validate
اعتبارسنجی ازcommons-lang3-3.4.jar
']بالا JavaCallout تغییر می کند برای توضیح دقیق ستونهای جدول خروجی بالا، قسمت Understand the tool output را ببینید.
- هنگامی که چنین کتابخانه های منسوخ را شناسایی کردید، می توانید یکی از روش های زیر را برای کاهش مشکل دنبال کنید.
- قرار دادن منبع (توصیه میشود اگر تعداد کمی از jar/کتابخانههای دایرکتوری منسوخ دارید که توسط جاوا-Callout ارجاع داده میشوند)
- شیشه های منسوخ شده شناسایی شده را به عنوان منبع در سطح مورد نظر بارگذاری کنید: ویرایش پروکسی API، محیط یا سازمان.
- به روز رسانی نرم افزار Apigee را طبق معمول ادامه دهید.
- قرار دادن دستی (توصیه می شود اگر تعداد زیادی شیشه/کتابخانه دارید که توسط جاوا-Callout ارجاع داده می شود)
- در هر گره پردازشگر پیام، یک دایرکتوری جدید به نام external-lib در مسیر
$APIGEE_ROOT/data/edge-message-processor/
ایجاد کنید. - 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 را طبق معمول ادامه دهید.
- در هر گره پردازشگر پیام، یک دایرکتوری جدید به نام external-lib در مسیر
- قرار دادن منبع (توصیه میشود اگر تعداد کمی از jar/کتابخانههای دایرکتوری منسوخ دارید که توسط جاوا-Callout ارجاع داده میشوند)
تغییر OpenLDAP
زمینه
OpenLDAP را می توان در Edge Private Cloud هم برای احراز هویت و هم برای مجوز استفاده کرد. در Edge for Private Cloud 4.53.01، نرم افزار OpenLDAP ارسال شده توسط Apigee از نسخه 2.4 به 2.6 ارتقا یافت.
تغییرات
در OpenLDAP 2.6، نام متمایز نسبی (RDN) به تقریباً 241 بایت / کاراکتر محدود شده است. این محدودیت یک سقف سخت است و قابل تغییر نیست.
تاثیر- خطاهای تکرار یا وارد کردن برای ورودیهایی با RDN بسیار بزرگ رخ میدهد.
- تلاش برای ایجاد موجودی مانند سازمانها، محیطها، نقشهای سفارشی، مجوزها و غیره ممکن است به پیام خطا منجر شود:
"message": "[LDAP: error code 80 - Other]"
. - هر DN بیش از 241 بایت در LDAP Apigee تحت تأثیر قرار می گیرد. چنین DN هایی از ارتقای موفقیت آمیز نرم افزار Apigee OpenLDAP جلوگیری می کند و قبل از اینکه بتوانید به ارتقاء ادامه دهید، باید استراتژی های کاهش را برای چنین مواردی دنبال کنید.
به طور کلی، در LDAP Apigee، DN های طولانی به مجوزها مرتبط هستند، زیرا آنها با به هم پیوستن چندین موجودیت ایجاد می شوند. چنین ورودی های مجوز به ویژه در معرض مشکلات ارتقا هستند.
به عنوان مثال،
dn: cn=@@@environments@@@*@@@applications@@@*@@@revisions@@@*@@@debugsessions,ou=resources,cn=businessuser,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
به طور معمول، شما باید سازمان، محیط و نام نقش با طول داشته باشید که RDN ها در LDAP در نهایت کوچکتر از 241 بایت باشند.
کاهش
قبل از ارتقا به 4.53.01:
مراحل زیر به تأیید وجود RDN های طولانی در خوشه LDAP 2.4 موجود شما کمک می کند.
شماره 1 - داده های LDAP را استخراج کنید
از دستور ldapsearch برای یافتن نام متمایز (dn) استفاده کنید و خروجی را به یک فایل هدایت کنید:
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 های طولانی را شناسایی کنید
ابزار تشخیص تغییر از یک فایل LDIF تولید شده برای شناسایی RDN های LDAP بیش از 241 بایت/نویسه استفاده می کند.
این ابزار گزارش هایی را در قالب زیر تولید می کند:
سازمان | محیط زیست | نام مصنوع | نوع مصنوع | تجدید نظر | نام خط مشی | نوع خط مشی | نوع تاثیر | میدان ویژه ضربه | قطعیت تاثیر | مستندات |
---|---|---|---|---|---|---|---|---|---|---|
هیچ کدام | هیچ کدام | cn= really-long-name ، ou=کاربر، o=edge-platform،ou=سازمان ها،dc=apigee،dc=com | فایل ldif | هیچ کدام | هیچ کدام | هیچ کدام | LDap RDN بیش از 241 کاراکتر است | cn= really-long-name | بالا | تغییر OpenLDAP |
برای توضیح دقیق ستونها در جدول خروجی بالا، به بخش Understand the tool output مراجعه کنید.
اگر دستور بالا هیچ خروجی تولید نمی کند، هیچ RDN در راه اندازی LDAP موجود بیش از 241 بایت/نویسه نیست. شما می توانید طبق معمول به ارتقاء ادامه دهید.
اگر دستور بالا خروجی ایجاد کند، نشان دهنده وجود RDN های بیش از 241 بایت / کاراکتر است. برای چنین مواردی، قبل از ادامه ارتقاء Edge for Private Cloud 4.53.01، مراحل کاهش را همانطور که در مرحله 3 توضیح داده شده است، دنبال کنید.
شماره 3 - RDN های طولانی را مدیریت کنید
اگر خروجی از مرحله 2 دریافت شود، نشان دهنده وجود RDN های بیش از 241 بایت/نویسه است و مراحل کاهش زیر را دنبال کنید:
ورودی های LDAP که بیش از 241 بایت هستند را مرور کنید.
- اگر نام نقش سفارشی، برنامه، محصول API یا موجودیتهای دیگر است که عامل اصلی طولانی شدن RDN است، به استفاده از یک موجودیت جایگزین با نام کوتاهتر بروید.
- اگر نام سازمان یا نام محیط است که عامل اصلی RDN طولانی است، باید به سازمان یا محیط دیگری با نام کوتاهتر مهاجرت کنید.
به تکرار مراحل بالا ادامه دهید تا زمانی که LDAP شما دارای RDN بیشتر از 241 بایت نباشد. هنگامی که به این وضعیت رسیدید، طبق معمول نسخه ابر خصوصی را ارتقا دهید.
تغییرات ارائه دهنده رمزنگاری
زمینه
این تغییر انتقالی از Edge برای Private Cloud 4.53.00 است. در Edge for Private Cloud 4.53.00، ارائهدهنده رمزنگاری داخلی از Bouncy Castle (BC) به Bouncy Castle FIPS (BCFIPS) بهروزرسانی شد تا پشتیبانی FIPS را فعال کند.
تغییرات
اگر خطمشیهای JavaCallout متکی به استفاده از ارائهدهنده اصلی BC است، بهویژه هنگام استفاده از عملکرد امنیتی که در ارائهدهنده BCFIPS سختتر شده است (به عنوان مثال، استفاده از یک جفت کلید مشترک برای رمزگذاری و امضا)، چنین خطمشیهای JavaCallout باید مدرنسازی شوند. خطمشیهای JavaCallout در تلاش برای بارگیری ارائهدهنده رمزنگاری Bouncy Castle با استفاده از نام BC ممکن است شکست بخورند زیرا ارائهدهنده پیشفرض تغییر کرده است. چنین خطمشیهایی با استفاده از ارائهدهنده BC میتوانند متعاقباً شکسته شوند. هر گونه پیاده سازی سفارشی که به ارائه دهنده قدیمی BC متکی باشد دیگر قابل دسترسی نخواهد بود و نیاز به بررسی و پیاده سازی مجدد دارد.
کاهش
راه حل پیشنهادی استفاده از ارائه دهنده BCFIPS است. پیادهسازیهای سفارشی JavaCallout که به ارائهدهنده قدیمی متکی هستند، باید با استفاده از ارائهدهنده Bouncy Castle FIPS، که با استفاده از رشته «BCFIPS» قابل دسترسی است، بازبینی و پیادهسازی شوند.
ابزار تشخیص تغییر
یک ابزار تشخیص تغییر برای شناسایی پراکسیهای Apigee، خطمشیها، جریانهای مشترکی که ممکن است در طول و پس از انتقال به Edge برای Private Cloud 4.53.01 تحت تأثیر قرار گیرند، ساخته شده است. این ابزار گزارشی را ایجاد میکند که جزئیات پراکسیهای مستقر شده، جریانهای مشترک، و OpenLDAP را که تحتتاثیر تغییرات قرار گرفتهاند، ارائه میکند و برای راهنماها و استراتژیهای خاص مرتبط با آن پراکسیهای شناساییشده یا جریانهای مشترک، جهت میدهد.
پیش نیازها
- برای اجرای این ابزار به یک ماشین مبتنی بر RHEL نیاز است.
- JRE 8 باید بر روی ماشین مجازی میزبان نصب و به درستی پیکربندی شود تا اسکریپت های ابزار اجرا شوند.
- این ابزار به نقطه پایانی (URL) صحیح سرور مدیریت و اعتبار اداری معتبر برای احراز هویت و بازیابی داده ها نیاز دارد.
- ابزار نیاز به دسترسی به دایرکتوری کاری تعیین شده (مثلا
/tmp
) برای استخراج بستهها، تولید گزارشها و ذخیره خروجی دارد. اطمینان حاصل کنید که این فهرست دارای فضای دیسک کافی و مجوزهای خواندن/نوشتن مناسب است. - این ابزار به فایل LDIF با استفاده از دستور
ldapsearch
در تغییر OpenLDAP - Extract LDAP data نیاز دارد تا RDN های طولانی بیش از 241 کاراکتر / بایت را شناسایی کند.
در حال اجرا ابزار
پس از برآورده شدن همه پیش نیازهای ذکر شده در بالا، ابزار را دانلود کنید و در عین حال نام کاربری و رمز عبور را از Apigee که برای دسترسی به مخزن Apigee استفاده میکنید، تهیه کنید. پس از دانلود، آرشیو دانلود شده را استخراج کنید.
curl -u uName:pWord https://software.apigee.com/apigee/change-detector/change-detector-for-4.53.01_1.0.0.zip -o /tmp/change-detector-for-4.53.01_1.0.0.zip
unzip /tmp/change-detector-for-4.53.01_1.0.0.zip
پس از اتمام دانلود، می توانید دستور زیر را اجرا کنید تا تمام گزینه های موجود برای ابزار را مشاهده کنید:
./change-detector --help
برای اجرای ابزار، از دستور زیر استفاده کنید و اطلاعات خود را جایگزین مکانها کنید:
export APIGEE_PASSWORD=[your_password] ./change-detector --username [your_username] --mgmt-url [MGMT url]
برای شناسایی ورودی های بزرگ RDN LDAP، دستور زیر را اجرا کنید:
./change-detector --username [your_username] --mgmt-url [MGMT url] --ldif-file [LDIF_file]
این ابزار خروجی را در قالب json یا csv تولید می کند که می تواند مستقیماً مصرف شود یا به ابزاری قابل خواندن برای انسان، مانند Google Sheets وارد شود.
خروجی ابزار را درک کنید
سازمان
به نام سازمانی اشاره می کند که مصنوع در آن قرار دارد. برای تغییر OpenLDAP، این None
خواهد بود.
محیط زیست
محیط خاص (به عنوان مثال، توسعه، تست، تولید) در سازمان. برای تغییر OpenLDAP، این None
خواهد بود.
برای تغییرات Java Callout، اگر Artifact Type= env-level-jar
باشد، این فیلد None
خواهد بود.
نام مصنوع
این فیلد در مورد نام پروکسی/جریان مشترک می گوید. برای تغییر OpenLDAP، این فیلد موجودیت LDAP RDN را نشان می دهد.
برای تغییرات Java Callout، اگر Artifact Type= env-level-jar
یا org-level-jar
باشد، این فیلد None
خواهد بود.
نوع مصنوع
- برای تغییرات OAS و JSON، این ستون نوع مصنوع، پروکسی یا جریان مشترک را مشخص می کند.
- برای تغییر جاوا Callout، این ستون جزئیاتی را در مورد مکان یا سطحی که jar آسیب دیده آپلود شده است ارائه می دهد. منابع (JARs) را می توان در یکی از سه سطح ذخیره کرد :
org-level
،env-level
،proxy-level
. - برای تغییر OpenLDAP، این فیلد فایل LDIF مورد استفاده در ابزار را نشان می دهد.
تجدید نظر
این به تجدید نظر مستقر در جریان پراکسی/مشترک آسیب دیده اشاره می کند. برای تغییر OpenLDAP، None
خواهد بود.
نام خط مشی
نام خط مشی خاصی که به عنوان یک موضوع بالقوه شناسایی شده است. برای تغییر OpenLDAP، None
خواهد بود.
نوع خط مشی
به نوع سیاست اشاره می کند. برای تغییر OpenLDAP، None
خواهد بود.
نوع تاثیر- این فیلد نوع خاصی از تغییر شناسایی شده در یک پروکسی/جریان مشترک را توصیف می کند.
- برای تغییر Java Callout، شناسایی تغییرات مربوط به java-callout، ابزار به جاوا-callout آسیبدیده اشاره میکند که به JARهای موجود در
$APIGEE_ROOT/edge-message-processor/lib/deprecated
دایرکتوری نسخههای قدیمیتر Edge برای Private Cloud به روش زیر در این ستون خاص اشاره میکند. deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR
- برای تغییر OpenLDAP، این فیلد نشان میدهد که آیا RDN موجودیت LDAP از بیش از 241 بایت یا کاراکتر فراتر رفته است.
زمینه خاص تاثیر- برای تغییر OAS، این فیلد نام متغیر مورد استفاده در تگ منبع سیاست است.
- برای تغییر JSON، این فیلد دقیقا عبارت یا عنصر JSONPath را نشان می دهد که به عنوان یک مشکل بالقوه پرچم گذاری شده است.
- برای تغییر Java Callout، این فیلد دارای جزئیات کلاسهای دقیق و نام JAR مربوطه است (در فهرست
$APIGEE_ROOT/edge-message-processor/lib/deprecated
نسخههای Private Cloud قدیمی) که توسط jar JavaCallout آسیبدیده استفاده شده/ارجاع شده است که در صورت عدم ارتقاء نسخه 1.30 منجر به خرابی میشود. ['Detected use of class CLASS_NAME_1 from JAR_NAME_1',
Detected use of class CLASS_NAME_2 from JAR_NAME_2',
.. , .. , ]
- برای تغییر OpenLDAP، این فیلد RDN موجودیت LDAP را نشان می دهد که همگی بیش از 241 بایت یا کاراکتر هستند.
قطعیت تاثیر این فیلد در مورد میزان اطمینانی که ابزار با آن یک مورد خاص را شناسایی کرده است، می گوید. مقادیر این ستون می تواند زیاد یا متوسط باشد (ممکن است بعداً مقادیر بیشتری اضافه شود).
مقدار High به این معنی است که ابزار تشخیص داده است که احتمال بسیار بالایی وجود دارد که آیتم پس از ارتقاء به نسخه 4.53.01 باعث خرابی برنامه شود. یک مقدار متوسط نشان میدهد که ابزار در مورد تشخیص نامشخص است و استراتژیهای بیشتری برای تعیین مورد نیاز است (به عنوان مثال، ضبط ردیابی برای مشاهده متغیرهای حلشده در طول اجرای پروکسی).
- تشخیص های مربوط به تغییرات JavaCallout و OpenLDAP همیشه ارزش بالایی برای ستون های قطعیت تاثیر دارند.
مستندات
$APIGEE_ROOT/edge-message-processor/lib/deprecated
دایرکتوری نسخههای قدیمیتر Edge برای Private Cloud به روش زیر در این ستون خاص اشاره میکند. deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR
- برای تغییر OAS، این فیلد نام متغیر مورد استفاده در تگ منبع سیاست است.
- برای تغییر JSON، این فیلد دقیقا عبارت یا عنصر JSONPath را نشان می دهد که به عنوان یک مشکل بالقوه پرچم گذاری شده است.
- برای تغییر Java Callout، این فیلد دارای جزئیات کلاسهای دقیق و نام JAR مربوطه است (در فهرست
$APIGEE_ROOT/edge-message-processor/lib/deprecated
نسخههای Private Cloud قدیمی) که توسط jar JavaCallout آسیبدیده استفاده شده/ارجاع شده است که در صورت عدم ارتقاء نسخه 1.30 منجر به خرابی میشود. - برای تغییر OpenLDAP، این فیلد RDN موجودیت LDAP را نشان می دهد که همگی بیش از 241 بایت یا کاراکتر هستند.
['Detected use of class CLASS_NAME_1 from JAR_NAME_1', Detected use of class CLASS_NAME_2 from JAR_NAME_2', .. , .. , ]
قطعیت تاثیر این فیلد در مورد میزان اطمینانی که ابزار با آن یک مورد خاص را شناسایی کرده است، می گوید. مقادیر این ستون می تواند زیاد یا متوسط باشد (ممکن است بعداً مقادیر بیشتری اضافه شود).
مقدار High به این معنی است که ابزار تشخیص داده است که احتمال بسیار بالایی وجود دارد که آیتم پس از ارتقاء به نسخه 4.53.01 باعث خرابی برنامه شود. یک مقدار متوسط نشان میدهد که ابزار در مورد تشخیص نامشخص است و استراتژیهای بیشتری برای تعیین مورد نیاز است (به عنوان مثال، ضبط ردیابی برای مشاهده متغیرهای حلشده در طول اجرای پروکسی).
- تشخیص های مربوط به تغییرات JavaCallout و OpenLDAP همیشه ارزش بالایی برای ستون های قطعیت تاثیر دارند.
مستندات
این فیلد در مورد میزان اطمینانی که ابزار با آن یک مورد خاص را شناسایی کرده است، می گوید. مقادیر این ستون می تواند زیاد یا متوسط باشد (ممکن است بعداً مقادیر بیشتری اضافه شود).
مقدار High به این معنی است که ابزار تشخیص داده است که احتمال بسیار بالایی وجود دارد که آیتم پس از ارتقاء به نسخه 4.53.01 باعث خرابی برنامه شود. یک مقدار متوسط نشان میدهد که ابزار در مورد تشخیص نامشخص است و استراتژیهای بیشتری برای تعیین مورد نیاز است (به عنوان مثال، ضبط ردیابی برای مشاهده متغیرهای حلشده در طول اجرای پروکسی).
این ستون یک پیوند به اسناد Apigee (بخش های مربوطه این مقاله) ارائه می دهد که این مشکل و مراحل کاهش آن را توضیح می دهد.