أخطاء خزنة المفتاح الشائعة في عبارة Azure Application Gateway
تمكن بوابة التطبيق العملاء من تخزين شهادات TLS بأمان في Azure Key Vault. عند استخدام مورد key vault، من المهم أن يكون للبوابة دائما حق الوصول إلى مخزن المفاتيح المرتبط. إذا كانت بوابة التطبيق غير قادرة على إحضار الشهادة، وضع مستمعي HTTPS المقترنين في حالة تعطيل. اعرف المزيد.
تساعدك هذه المقالة على فهم تفاصيل رموز الخطأ والخطوات لحل هذه التكوينات الخاطئة لمخزن المفاتيح.
تلميح
استخدم معرفًا سريًا لا يحدد إصدارًا. بهذه الطريقة، ستقوم Azure Application Gateway تلقائيًا بتدوير الشهادة، في حالة توفر إصدار أحدث في Azure Key Vault. مثال على URI السري بدون إصدار هو https://myvault.vault.azure.net/secrets/mysecret/
.
رموز خطأ Azure Advisor
تصف الأقسام التالية الأخطاء المختلفة التي قد تواجهها. يمكنك التحقق مما إذا كانت بوابتك تحتوي على أي مشكلة من هذا القبيل من خلال زيارة Azure Advisor لحسابك، واستخدام مقالة استكشاف الأخطاء وإصلاحها هذه لإصلاح المشكلة. نوصي بتكوين تنبيهات Azure Advisor للبقاء على اطلاع عند اكتشاف مشكلة في key vault للبوابة الخاصة بك.
إشعار
يقوم Azure Application Gateway بإنشاء سجلات لتشخيصات الخزنة الرئيسية كل أربع ساعات. إذا استمر التشخيص لإظهار الخطأ بعد إصلاح التكوين، قد تضطر إلى الانتظار حتى يتم تحديث السجلات.
رمز الخطأ: UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault
الوصف: الهوية المدارة المرتبطة التي يعينها المستخدم ليس لديها الإذن المطلوب.
الحل: تكوين نهج الوصول لمخزن المفاتيح لمنح إذن الهوية المدارة المعينة من قبل المستخدم على الأسرار. يمكنك القيام بذلك بأي من الطرق التالية:
نهج الوصول إلى المخزن
- انتقل إلى مخزن المفاتيح المرتبط في مدخل Microsoft Azure.
- افتح شفرة نهج الوصول.
- بالنسبة لنموذج الإذن، حدد نهج الوصول إلى Vault.
- ضمن عمليات الإدارة السرية، حدد الحصول على إذن.
- حدد حفظ.
لمزيد من المعلومات، راجع تعيين نهج الوصول إلى مفتاح Vault باستخدام مدخل Microsoft Azure.
التحكم في الوصول المستند إلى الدور في Azure
- انتقل إلى مخزن المفاتيح المرتبط في مدخل Microsoft Azure.
- افتح شفرة نهج الوصول.
- بالنسبة لنموذج الإذن، حدد التحكم في الوصول المستند إلى الدور في Azure.
- انتقل إلى شفرة التحكم في الوصول (IAM) لتكوين الأذونات.
- إضافة تعيين دور لهويتك المدارة عن طريق اختيار ما يلي
أ. الدور: مستخدم Key Vault Secrets
ب. تعيين الوصول إلى: الهوية المدارة
جـ. الأعضاء: حدد الهوية المدارة المعينة من قبل المستخدم التي قمت بإقرانها ببوابة التطبيق. - حدد مراجعة + تعيين.
لمزيد من المعلومات، راجع التحكم في الوصول المستند إلى الدور في Azure في Key Vault.
إشعار
لا يتوفر دعم المدخل لإضافة شهادة جديدة تستند إلى مخزن المفاتيح حاليا عند استخدام التحكم في الوصول المستند إلى الدور في Azure. يمكنك إنجاز ذلك باستخدام قالب ARM أو CLI أو PowerShell. تفضل بزيارة هذه الصفحة للحصول على إرشادات.
رمز الخطأ: SecretDisabled
الوصف : تم تعطيل الشهادة المقترنة في Key Vault.
الدقة: إعادة تمكين إصدار الشهادة قيد الاستخدام حاليًا لعبارة التطبيق.
- انتقل إلى مخزن المفاتيح المرتبط في مدخل Microsoft Azure.
- افتح جزء الشهادات.
- حدد اسم الشهادة المطلوبة، ثم حدد الإصدار المعطل.
- في صفحة الإدارة، استخدم التبديل لتمكين إصدار الشهادة هذا.
رمز الخطأ: SecretDeletedFromKeyVault
الوصف : تم حذف الشهادة المقترنة في Key Vault.
الدقة: لاسترداد شهادة محذوفة:
- انتقل إلى مخزن المفاتيح المرتبط في مدخل Microsoft Azure.
- افتح جزء الشهادات.
- استخدم علامة التبويب الشهادات المحذوفة المدارة لاسترداد شهادة محذوفة.
من ناحية أخرى، إذا تم حذف كائن شهادة نهائيا، فستحتاج إلى إنشاء شهادة جديدة وتحديث Application Gateway بتفاصيل الشهادة الجديدة. عند التكوين من خلال Azure CLI أو Azure PowerShell استخدم معرف سري URI بدون إصدار. يسمح هذا الاختيار للمثيلات باسترداد إصدار مجدد من الشهادة، إذا كان موجودًا.
رمز الخطأ: UserAssignedManagedIdentityNotFound
الوصف: تم حذف المعرف المرتبط المُدار والذي تم تعيينه بواسطة المستخدم.
الحل: إنشاء هوية مدارة جديدة واستخدامها مع key vault.
- أعد إنشاء هوية مدارة بنفس الاسم الذي تم استخدامه مسبقا، وتحت نفس مجموعة الموارد. (تلميح: راجع سجلات نشاط المورد للحصول على تفاصيل التسمية).
- انتقل إلى مورد key vault المطلوب، وقم بتعيين نهج الوصول الخاصة به لمنح هذه الهوية المدارة الجديدة الإذن المطلوب. يمكنك اتباع نفس الخطوات المذكورة ضمن UserAssignedIdentityDoesNotHaveGetPermissionOnKeyVault.
رمز الخطأ: KeyVaultHasRestrictedAccess
الوصف : هناك إعداد شبكة مقيد لـ Key Vault.
الحل: ستواجه هذا الخطأ عند تمكين جدار حماية Key Vault للوصول المقيد. لا يزال بإمكانك تكوين Application Gateway في شبكة مقيدة من Key Vault باتباع الخطوات التالية:
- في Key Vault، افتح جزء الشبكات.
- في علامة التبويب جدران الحماية والشبكات الظاهرية، حدد نقطة النهاية الخاصة والشبكات المحددة.
- ثم، باستخدام الشبكات الظاهرية، إضافة الشبكة الظاهرية و الشبكة الفرعية لبوابة التطبيق. أثناء العملية، أيضًا تكوين نقطة نهاية خدمة 'Microsoft.KeyVault' عن طريق تحديد خانة الاختيار الخاصة به.
- وأخيرًا، حدد نعم للسماح للخدمات الموثوق بها بتجاوز جدار حماية Key Vault.
رمز الخطأ: KeyVaultSoftDeleted
الوصف : مخزن المفاتيح المقترن في حالة الحذف الناعم.
الدقة: في مدخل Microsoft Azure ابحث عن key vault. ضمن الخدمات، حدد خزائن المفاتيح.
حدد الخزائن المحذوفة المدارة. من هنا، يمكنك العثور على مورد Key Vault المحذوف واسترداده.
رمز الخطأ: CustomerKeyVaultSubscriptionDisabled
الوصف : تم تعطيل الاشتراك في Key Vault.
الدقة: يمكن تعطيل اشتراك Azure لأسباب مختلفة. لاتخاذ الإجراء اللازم لحل المشكلة، راجع إعادة تنشيط اشتراك Azure معطل.
رموز خطأ بوابة التطبيق
رمز الخطأ: ApplicationGatewayCertificateDataOrKeyVaultSecretIdMustBeSpecified / ApplicationGatewaySslCertificateDataMustBeSpecified
الوصف: قد تواجه هذا الخطأ عند محاولة تحديث شهادة وحدة استماع. عند حدوث هذا الخطأ، سيتم تجاهل التغيير لتحديث الشهادة، وسيستمر المستمع في معالجة نسبة استخدام الشبكة مع التكوين المحدد مسبقا.
الحل: لحل هذه المشكلة، يرجى محاولة تحميل الشهادة مرة أخرى. على سبيل المثال، يمكن استخدام أوامر PowerShell التالية لتحديث الشهادات التي تم تحميلها إلى بوابة التطبيق أو الرجوع إليها عبر Azure Key Vault.
تحديث الشهادة التي تم تحميلها مباشرة إلى بوابة التطبيق:
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$password = ConvertTo-SecureString -String "<password>" -Force -AsPlainText
Set-AzApplicationGatewaySSLCertificate -Name "<oldcertname>" -ApplicationGateway $appgw -CertificateFile "<newcertPath>" -Password $password
Set-AzApplicationGateway -ApplicationGateway $appgw
تحديث الشهادة المشار إليها من Azure Key Vault:
$appgw = Get-AzApplicationGateway -ResourceGroupName "<ResourceGroup>" -Name "<AppGatewayName>"
$secret = Get-AzKeyVaultSecret -VaultName "<KeyVaultName>" -Name "<CertificateName>"
$secretId = $secret.Id.Replace($secret.Version, "")
$cert = Set-AzApplicationGatewaySslCertificate -ApplicationGateway $AppGW -Name "<CertificateName>" -KeyVaultSecretId $secretId
Set-AzApplicationGateway -ApplicationGateway $appgw
الخطوات التالية
قد تكون هذه المقالات استكشاف الأخطاء وإصلاحها مفيدة أثناء متابعة استخدام Application Gateway: