تغییرات در Edge برای Private Cloud 4.53.01

مروری بر تغییرات

Edge for Private Cloud 4.53.01 تغییرات متعددی را معرفی می کند که وضعیت امنیتی پلتفرم را بهبود می بخشد و نسخه های به روز شده نرم افزار و کتابخانه های مورد نیاز را در خود جای می دهد. این تغییرات بر انواع سیاست های زیر تأثیر می گذارد:

همچنین می‌توانید از ابزار تشخیص تغییر برای شناسایی تغییرات در پراکسی‌ها، جریان‌های مشترک یا سایر مصنوعات در خوشه خود استفاده کنید که ممکن است در نتیجه این ارتقا باعث اختلال شوند.

شرح تفصیلی تغییرات

این بخش تغییرات ارائه شده در نسخه 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"}
      ]
    }
  }
}
  1. تغییر رفتار کارت عام 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 ) را هدف قرار دهد تا مستقیماً مواردی را که قبلاً بازیابی شده اند مورد هدف قرار دهد.

  2. نقطه انتهایی 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 .

  3. تغییر ساختار خروجی نزول بازگشتی 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 داخلی تکرار کنید تا به عناصر جداگانه دسترسی داشته باشید.

  4. نمایه سازی JSONPath پس از انتخاب چند مورد یا فیلتر، آرایه خالی را برمی گرداند

    هنگامی که یک شاخص (مثال: [0] ) بلافاصله پس از انتخابگر چند موردی (مانند [*] ) یا فیلتر ( [?(condition)] ] اعمال می شود، رفتار تغییر می کند. قبلاً، چنین عباراتی سعی می‌کردند آیتم را در شاخص مشخص شده از نتایج ترکیبی انتخاب کنند. با نسخه جدید، این عبارات اکنون یک آرایه خالی ( [] ) برمی گرداند.

    به عنوان مثال، $.store.book[*][0]

    رفتار قبلی:
    {"category": "reference", "price": 8.95, "author": "Nigel Rees"}
    
    رفتار فعلی:
    []
    
    اقدام:

    اگر نیاز به فیلتر کردن و سپس دریافت یک مورد خاص از مجموعه فیلتر شده وجود دارد، آرایه فیلتر شده ای را که توسط JSONPath برگردانده شده است پردازش کنید، به عنوان مثال $..book[?(@.category == 'fiction')] و سپس [0] را از نتیجه قبلی بگیرید.

  5. تغییر خروجی برش آرایه منفی 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 برگشتی تکرار شود تا خروجی مورد نظر به دست آید.

  6. 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 ) را در آن لحاظ کند. این مقدار را به درستی هدف قرار داده و بازیابی می کند.

  7. عبارات پویا 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 باشد. اینها را می توان در حین ارتقا استفاده کرد و پس از تکمیل ارتقاء می توان آنها را از رده خارج کرد. این استراتژی یکپارچه است اما شامل تهیه موقت گره‌های پردازشگر پیام اضافی برای پشتیبانی از یک ارتقاء روان است. جزئیات زیر:

  • خرابی و ارتقا

    این استراتژی شامل تهیه خرابی برای پراکسی های 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، مراحل کاهش دهنده زیر را دنبال کنید.

کاهش

  1. با استفاده از ابزار تشخیص تغییر یا به صورت دستی، خط‌مشی‌های 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 را ببینید.

  2. هنگامی که چنین کتابخانه های منسوخ را شناسایی کردید، می توانید یکی از روش های زیر را برای کاهش مشکل دنبال کنید.
    • قرار دادن منبع (توصیه می‌شود اگر تعداد کمی از 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 را طبق معمول ادامه دهید.

تغییر 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 را که تحت‌تاثیر تغییرات قرار گرفته‌اند، ارائه می‌کند و برای راهنماها و استراتژی‌های خاص مرتبط با آن پراکسی‌های شناسایی‌شده یا جریان‌های مشترک، جهت می‌دهد.

پیش نیازها

  1. برای اجرای این ابزار به یک ماشین مبتنی بر RHEL نیاز است.
  2. JRE 8 باید بر روی ماشین مجازی میزبان نصب و به درستی پیکربندی شود تا اسکریپت های ابزار اجرا شوند.
  3. این ابزار به نقطه پایانی (URL) صحیح سرور مدیریت و اعتبار اداری معتبر برای احراز هویت و بازیابی داده ها نیاز دارد.
  4. ابزار نیاز به دسترسی به دایرکتوری کاری تعیین شده (مثلا /tmp ) برای استخراج بسته‌ها، تولید گزارش‌ها و ذخیره خروجی دارد. اطمینان حاصل کنید که این فهرست دارای فضای دیسک کافی و مجوزهای خواندن/نوشتن مناسب است.
  5. این ابزار به فایل 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 (بخش های مربوطه این مقاله) ارائه می دهد که این مشکل و مراحل کاهش آن را توضیح می دهد.