Azure-sdk-for-java: [BUG] ستحمل طريقة KeyVaultPropertySource Class / getPropertyNames جميع الأسرار (بما في ذلك أسرار التعطيل) في خزنة المفاتيح

تم إنشاؤها على ١٣ أغسطس ٢٠٢٠  ·  10تعليقات  ·  مصدر: Azure/azure-sdk-for-java

صف الخلل
يقوم قبو المفاتيح حاليًا بتمكين ميزة الحذف الناعم افتراضيًا. إذا تم إنشاء / حذف الشهادة ، فسوف يتسبب ذلك في تعطل تطبيق Jave لأنه يقوم بتحميل السر المعطل.
تقوم فئة KeyVaultPropertySource بتحميل كافة الأسرار الموجودة في KeyVault. يجب ألا يتم تحميل الأسرار المعطلة في طريقة getPropertyNames
بالمناسبة ، يتم إزالة الحل البديل الشهادة. ولكن لا يزال من الأفضل تحسينه في جزء SDK لأنه لا يوجد طلب لتحميل السر المحذوف

استثناء أو تتبع المكدس
قم بإضافة سجل الاستثناءات وتتبع المكدس إذا كان ذلك متاحًا

لإعادة إنتاج
خطوات إعادة إنتاج السلوك:
أ. إنشاء شهادات KeyVault (ليست سرية) وحذف الشهادات بعد أن تعطل تطبيق java.
ج. تُنشئ الشهادات مُعرّفًا سريًا تلقائيًا عند إنشاء شهادات جديدة
D. وبعد حذف الشهادة يقوم نظام Azure بتعطيل المعرف السري
E. في هذه الحالة ، حاول تطبيق java قراءة سر تعطيل في وقت التشغيل
أنا. ثم تعطل تطبيق جافا.
المكتبة هي com.microsoft. اللازوردية: أزور-كييفولت : 1.2.2
مقتطف الرمز
أضف مقتطف الشفرة الذي يسبب المشكلة.

Value ("$ {cluster-app-sb-connection-string}")
سلسلة اتصال
Value ("$ {cluster-app.sb.topic-name}")
سلسلة topicName ؛
سلوك متوقع
وصف واضح ومختصر لما توقعت حدوثه.

لقطات
إذا أمكن ، أضف لقطات شاشة للمساعدة في شرح مشكلتك.

الإعداد (يرجى استكمال المعلومات التالية):

  • نظام التشغيل: [مثل iOS]
  • IDE: [مثل IntelliJ]
  • نسخة المكتبة المستخدمة

سياق إضافي
أضف أي سياق آخر حول المشكلة هنا.

قائمة التحقق من المعلومات
يرجى التأكد من أنك قد أضفت جميع المعلومات التالية أعلاه وتحقق من الحقول المطلوبة وإلا فسوف نتعامل مع المصدر على أنه تقرير غير مكتمل

  • [x] تمت إضافة وصف الخطأ
  • [] تمت إضافة خطوات Repro
  • [] تمت إضافة معلومات الإعداد
Client azure-spring azure-spring-keyvault customer-reported question

التعليق الأكثر فائدة

ترجع المشكلة إلى كيفية عمل Spring Boot starter for Key Vault Secrets. لم نقم بتصفية الأسرار المعطلة. الآن أقوم بإنشاء علاقات عامة لإصلاح المشكلة

ال 10 كومينتر

@ TonySh127-ms هل تستخدم مفتاح قبو المفاتيح أو sdk مباشرة؟

تمت مناقشته مع @ TonySh127-ms في وضع عدم الاتصال واستخدم العميل بداية التشغيل الربيعي للمفتاح. تحتاج إلى تأكيد من جانب SDK على ما إذا كانت SDK الجديدة تحل هذا النوع من المشكلات.

AlexGhiondea @ vcolin7 هل يمكنك المتابعة من فضلك؟

شكرا joshfree و @ saragluna. في انتظار التحديث من AlexGhiondea و @ vcolin7 . يرجى إعلامي إذا كان لا يمكن إصلاحه على المدى القصير. يمكنني شرح ذلك إلى جانب العميل. شكرا جزيلا على وقتك مرة أخرى!

مرحبًا @ TonySh127-ms ،

قضيت بعض الوقت في البحث في هذه المشكلة ووجدت ما يلي: السلوك الذي يراه العميل ناتج عن كيفية عمل بداية Spring Boot لأسرار Key Vault. في الأساس ، عندما يتم تشغيل تطبيق Spring الذي يستخدم هذا المبدئ ، فإنه سيحصل على أسماء جميع الأسرار الموجودة في قبو معين عن طريق استدعاء / secrets endpoint ، والذي يقوم بتحميل جميع الأسرار الممكّنة والمعطلة (وليس الأسرار المحذوفة) ، فسيقوم التطبيق بعد ذلك استرجاع تفاصيل أسرار محددة إذا لزم الأمر. إنها ليست مشكلة في خدمة Key Vault أو SDK ولكنها مجرد نتيجة لكيفية تشفير بداية Spring Boot.

الحل قصير المدى ليس استخدام بداية Spring Boot ولكن Key Vault SDK نفسها مباشرة. بهذه الطريقة ، سيكون لدى العميل مزيد من التحكم في تحديد الأسرار التي يتم تحميلها ومتى يتم ذلك أثناء دورة حياة التطبيقات.

بالإضافة إلى ذلك ، لم أتمكن من إعادة إنتاج حالة تعطل فيها تطبيقي من تحميل الكثير من الأسرار فقط عن طريق إنشاء وحذف شهادة في قبو. من أجل القيام بشيء من هذا القبيل ، سأحتاج إلى مزيد من المعلومات من العميل: ما هي التبعيات التي يستخدمونها في مشروعهم بما في ذلك الإصدارات وعينة التعليمات البرمجية حيث يمكن إعادة إنتاج ذلك.

@ vcolin7 هل لدينا خيار يمكن أن ينتقل إلى SDK الذي يقوم بتحميل الأسرار الممكّنة فقط؟ يبدو أنه لا ينبغي لنا تحميل الأسرار المعطلة في تكامل Spring.

saragluna للأسف ، لا توجد معلمة يمكننا تمرير الخدمة لها لإعطائنا الأسرار الممكّنة فقط: /

ترجع المشكلة إلى كيفية عمل Spring Boot starter for Key Vault Secrets. لم نقم بتصفية الأسرار المعطلة. الآن أقوم بإنشاء علاقات عامة لإصلاح المشكلة

تضمين التغريدة
نحن نبني حزمة مطورة ، يمكنك تجربتها.
اتبع هذه الصفحة لتنزيل حزمة المطورين

مرحبًا أيها الفريق ، تم تأكيد حل المشكلة. يمكننا إغلاق هذا الموضوع الآن. شكرا جزيلا للجميع على الجهد والوقت !!!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات