البرنامج التعليمي: اتصال الخدمة المعرفية الآمنة من .NET App Service باستخدام Key Vault
يمكن لخدمة تطبيقات Azure استخدام الهويات المدارة للاتصال بالخدمات الخلفية بدون سلسلة اتصال، مما يؤدي إلى إزالة أسرار الاتصال لإدارة الاتصال الخلفي والإبقاء على الاتصال الخلفي آمنا في بيئة الإنتاج. بالنسبة للخدمات الخلفية التي لا تدعم الهويات المدارة والتي لا تزال تتطلب أسرار الاتصال، يمكنك استخدام Key Vault لإدارة أسرار الاتصال. يستخدم هذا البرنامج التعليمي خدمات Azure الذكاء الاصطناعي كمثال يوضح لك كيفية القيام بذلك في الممارسة العملية. عند الانتهاء، يكون لديك تطبيق يقوم بإجراء مكالمات برمجية لخدمات Azure الذكاء الاصطناعي، دون تخزين أي أسرار اتصال داخل App Service.
تلميح
تدعم خدمات Azure الذكاء الاصطناعي المصادقة من خلال الهويات المدارة، ولكن يستخدم هذا البرنامج التعليمي مصادقة مفتاح الاشتراك لتوضيح كيفية الاتصال بخدمة Azure التي لا تدعم الهويات المدارة من App Services.
من خلال هذا البناء:
- يُؤمن الاتصال بـ Key Vault بواسطة الهويات المدارة
- تصل خدمة التطبيقات إلى الأسرار باستخدام مراجع Key Vault باعتبارها إعدادات للتطبيق.
- يقتصر الوصول إلى Key Vault على التطبيق. قد يكون للمساهمين في التطبيقات، مثل المسؤولين، سيطرة كاملة على موارد خدمة التطبيقات، في حين قد لا يمكنهم الوصول في الوقت ذاته إلى أسرار Key Vault.
- إذا كان رمز التطبيق يصل بالفعل إلى أسرار الاتصال مع إعدادات التطبيق، فلا يلزم إجراء أي تغيير.
سوف تتعلم ما يلي:
- تمكين هويات مُدارة
- استخدام الهويات المدارة للاتصال بـ Key Vault
- استخدام مراجع Key Vault
- الوصول إلى خدمات Azure الذكاء الاصطناعي
المتطلبات الأساسية
تحضير البيئة الخاصة بك لـAzure CLI.
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
إنشاء تطبيق مع الاتصال بخدمات Azure الذكاء الاصطناعي
إنشاء مجموعة موارد لاحتواء كافة مواردك:
# Save resource group name as variable for convenience groupName=myKVResourceGroup region=westeurope az group create --name $groupName --location $region
إنشاء مورد خدمات Azure الذكاء الاصطناعي. استبدال <cs-resource-name> مع اسم فريد من اختيارك.
# Save resource name as variable for convenience. csResourceName=<cs-resource-name> az cognitiveservices account create --resource-group $groupName --name $csResourceName --location $region --kind TextAnalytics --sku F0 --custom-domain $csResourceName
إشعار
--sku F0
ينشئ مورد خدمات Azure الذكاء الاصطناعي من المستوى المجاني. يقتصر كل اشتراك على حصة نسبية من مورد واحدTextAnalytics
حر المستوى. إذا تجاوزتَ الحصة النسبية بالفعل، فاستخدمها--sku S
بدلا من ذلك.
تكوين تطبيق .NET
استنسخ نموذج مستودع محليا ووزع نموذج التطبيق على خدمة التطبيقات. استبدال <app-name> باسم فريد.
# Save app name as variable for convenience
appName=<app-name>
# Clone sample application
git clone https://github.com/Azure-Samples/app-service-language-detector.git
cd app-service-language-detector/dotnet
az webapp up --sku F1 --resource-group $groupName --name $appName --plan $appName --location $region
تكوين البيانات السرية كإعدادات للتطبيق
تكوين أسرار خدمات Azure الذكاء الاصطناعي كإعدادات
CS_ACCOUNT_NAME
تطبيق وCS_ACCOUNT_KEY
.# Get subscription key for Cognitive Services resource csKey1=$(az cognitiveservices account keys list --resource-group $groupName --name $csResourceName --query key1 --output tsv) az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="$csResourceName" CS_ACCOUNT_KEY="$csKey1"
في المستعرض، انتقل إلى تطبيق التوزيع
<app-name>.azurewebsites.net
وافحص كاشف اللغة مع السلاسل بلغات مختلفة.إذا نظرت إلى التعليمات البرمجية للتطبيق، قد تلاحظ أن إخراج التصحيح لنتائج الكشف قد نُفِّذ بنفس لون الخط المستخدم في الخلفية. يمكنك رؤيتها من خلال محاولة تمييز المساحة البيضاء أسفل النتيجة مباشرة.
اتصال خلفي آمن
في الوقت الحالي، تُخزن أسرار الاتصال كإعدادات للتطبيق في تطبيق خدمة التطبيقات. يؤمن هذا الأسلوب بالفعل أسرار الاتصال من القاعدة البرمجية للتطبيق. ومع ذلك، يمكن لأي مساهم بمقدوره إدارة تطبيقك مشاهدة إعدادات التطبيق. في هذه الخطوة، يمكنك نقل أسرار الاتصال إلى Key Vault وتأمين الوصول بحيث يمكنك إدارتها، في حين يمكن لتطبيق خدمة التطبيقات فقط قراءتها باستخدام هويته المدارة.
إنشاء مخزن رئيسي. استبدال <vault-name> باسم فريد.
# Save app name as variable for convenience vaultName=<vault-name> az keyvault create --resource-group $groupName --name $vaultName --location $region --sku standard --enable-rbac-authorization
--enable-rbac-authorization
تُعين المعلمةُ عنصر التحكم في الوصول المستند إلى دور Azure (RBAC) كنموذج تصريح. يُبطل هذا الإعداد المنفذ بشكل افتراضي كافة أذونات سياسات الوصول.أعطِ لنفسك دور عنصر التحكم في الوصول المستند إلى دور Azure (RBAC) Key Vault Secrets Officer للمخزن.
vaultResourceId=$(az keyvault show --name $vaultName --query id --output tsv) myId=$(az ad signed-in-user show --query id --output tsv) az role assignment create --role "Key Vault Secrets Officer" --assignee-object-id $myId --assignee-principal-type User --scope $vaultResourceId
مكِّن الهوية المدارة والمحددة من قبل النظام لتطبيقك، وأعطه دور RBAC Key Vault Secrets User للمخزن.
az webapp identity assign --resource-group $groupName --name $appName --scope $vaultResourceId --role "Key Vault Secrets User"
أضف اسم مورد خدمات Azure الذكاء الاصطناعي ومفتاح الاشتراك كأسرار إلى المخزن، واحفظ معرفاتها كمتغيرات بيئة للخطوة التالية.
csResourceKVUri=$(az keyvault secret set --vault-name $vaultName --name csresource --value $csResourceName --query id --output tsv) csKeyKVUri=$(az keyvault secret set --vault-name $vaultName --name cskey --value $csKey1 --query id --output tsv)
عيّنت في السابق الأسرار كإعدادات للتطبيق
CS_ACCOUNT_NAME
وCS_ACCOUNT_KEY
في تطبيقك. الآن، عيّنها كمراجع Key Vault بدلا من ذلك.az webapp config appsettings set --resource-group $groupName --name $appName --settings CS_ACCOUNT_NAME="@Microsoft.KeyVault(SecretUri=$csResourceKVUri)" CS_ACCOUNT_KEY="@Microsoft.KeyVault(SecretUri=$csKeyKVUri)"
في مستعرض ويب، انتقل إلى
<app-name>.azurewebsites.net
مرة أخرى. إذا حصلت على نتائج الكشف مرة أخرى، فأنت تتصل بنقطة نهاية خدمات Azure الذكاء الاصطناعي مع مراجع مخزن المفاتيح.
تهانينا، يتصل تطبيقك الآن بخدمات Azure الذكاء الاصطناعي باستخدام الأسرار المحفوظة في مخزن المفاتيح الخاص بك، دون أي تغييرات على التعليمات البرمجية للتطبيق الخاص بك.
تنظيف الموارد
في الخطوات السابقة، أنشأت موارد Azure في إحدى مجموعات الموارد. إذا لم تتوقع احتياجك لهذه الموارد في المستقبل، فاحذف مجموعة الموارد من خلال تشغيل الأمر التالي في Cloud Shell:
az group delete --name $groupName
ربما يستغرق الأمر بضع دقائق للتشغيل.