ملاحظة
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ أجهزة Linux الظاهرية
لتأمين خوادم الويب، يُمكن استخدام شهادة بروتوكول أمان طبقة النقل (TLS)، المعروفة سابقاً باسم طبقة مآخذ التوصيل الآمنة (SSL)، لتشفير نسبة استخدام الشبكة. يمكن تخزين شهادات TLS/SSL هذه في Azure Key Vault، والسماح بعمليات نشر آمنة للشهادات إلى أجهزة Linux الظاهرية (VMs) في Azure. في هذا البرنامج التعليمي، ستتعرف على كيفية القيام بما يلي:
- إنشاء Azure Key Vault
- إنشاء شهادة أو تحميلها إلى Key Vault
- إنشاء جهاز ظاهري وتثبيت خادم ويب NGINX
- إدخال الشهادة إلى الجهاز الظاهري وتكوين NGINX باستخدام ربط شهادة بروتوكول أمان طبقة النقل (TLS)
يستخدم هذا البرنامج التعليمي CLI داخل Azure Cloud Shell، الذي يتم تحديثه باستمرار إلى أحدث إصدار. لفتح Cloud Shell، حدد Try it من الجزء العلوي لكتلة التعليمة البرمجية.
إذا اخترت تثبيت CLI واستخدامه محليا، يتطلب هذا البرنامج التعليمي تشغيل الإصدار 2.0.30 من Azure CLI أو إصدار أحدث. قم بتشغيل az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
نظرة عامة
يحمي Azure Key Vault مفاتيح التشفير وأسراره، مثل الشهادات أو كلمات المرور. يُساعد Key Vault على تسهيل عملية إدارة الشهادة ويُمكِّنك من الحفاظ على التحكّم في المفاتيح التي يُمكنها الوصول إلى تلك الشهادات. يُمكنك إنشاء شهادة موقعة ذاتيًا داخل Key Vault، أو تحميل شهادة موثوقة موجودة تملكها بالفعل.
بدلاً من استخدام صورة جهاز ظاهري مُخصصة تتضمّن شهادات تمت محاكاتها، يُمكنك إدخال الشهادات إلى جهاز ظاهري قيد التشغيل. تضمن هذه العملية تثبيت أحدث الشهادات على خادم ويب في أثناء النشر. إذا قمت بتجديد شهادة ما أو استبدالها، فلن تضطر أيضًا إلى إنشاء صورة جهاز ظاهري مُخصصة جديدة. يتم إدخال أحدث الشهادات تلقائيا أثناء إنشاء المزيد من الأجهزة الظاهرية. أثناء العملية بأكملها، لا تترك الشهادات النظام الأساسي لـ Azure مطلقًا أو يتم كشفها في برنامج نصي، أو محفوظات سطر الأوامر أو قالب ما.
إنشاء Azure Key Vault
قبل أن تتمكّن من إنشاء Key Vault والشهادات، أنشئ مجموعة موارد باستخدام az group create. ينشئ المثال التالي مجموعة موارد باسم myResourceGroupSecureWeb في الموقع eastus:
az group create --name myResourceGroupSecureWeb --location eastus
أولاً، أنشئ Key Vault مع إنشاءaz keyvault وتمكينه للاستخدام عند نشر جهاز ظاهري. يتطلّب كل Key Vault اسمًا فريدًا، ويجب أن يكون بأحرف صغيرة بأكمله. استبدل <mykeyvault> في المثال التالي باسم Key Vault الفريد الخاص بك:
keyvault_name=<mykeyvault>
az keyvault create \
--resource-group myResourceGroupSecureWeb \
--name $keyvault_name \
--enabled-for-deployment
إنشاء شهادة والتخزين في Key Vault
لأغراض استخدام الإنتاج، يجب عليك استيراد شهادة صالحة مُوقَّعة من قِبَل موفّر موثوق به باستخدام az keyvault certificate import. بالنسبة لهذا البرنامج التعليمي، يوضّح المثال التالي كيف يُمكنك إنشاء شهادة موقعة ذاتيًا باستخدام az keyvault certificate create الذي يستخدم سياسة المصادقة الافتراضية:
az keyvault certificate create \
--vault-name $keyvault_name \
--name mycert \
--policy "$(az keyvault certificate get-default-policy)"
إعداد شهادة للاستخدام مع جهاز ظاهري
لاستخدام الشهادة أثناء عملية إنشاء الجهاز الظاهري، احصل على معرف شهادتك باستخدام إصدارات القائمة السرية من az keyvault. تحويل الشهادة عن طريق تنسيق سري az vm. يُعين المثال التالي إخراج هذه الأوامر إلى متغيرات لسهولة الاستخدام في الخطوات التالية:
secret=$(az keyvault secret list-versions \
--vault-name $keyvault_name \
--name mycert \
--query "[?attributes.enabled].id" --output tsv)
vm_secret=$(az vm secret format --secrets "$secret" -g myResourceGroupSecureWeb --keyvault $keyvault_name)
إنشاء تكوين cloud-init لتأمين NGINX
تُعَد Cloud-init طريقة مستخدمة على نطاق واسع لتخصيص جهاز Linux ظاهري في أثناء تشغيله لأول مرة. يمكنك استخدام cloud-init لتثبيت الحزم وكتابة الملفات، أو لتكوين المستخدمين والأمان. أثناء تشغيل cloud-init أثناء عملية التمهيد الأولية، لا توجد خطوات إضافية أو عوامل مطلوبة لتطبيق التكوين الخاص بك.
عند إنشاء جهاز ظاهري، يتم تخزين الشهادات والمفاتيح في الدليل المحمي /var/lib/waagent/. لأتمتة إضافة الشهادة إلى الجهاز الظاهري وتكوين خادم الويب، استخدم cloud-init. في هذا المثال، تثبيت وتكوين خادم ويب NGINX. يمكنك استخدام العملية نفسها لتثبيت وتكوين Apache.
أنشئ ملفًا باسم cloud-init-web-server.txt والصق التكوين التالي:
#cloud-config
package_upgrade: true
packages:
- nginx
write_files:
- owner: www-data:www-data
- path: /etc/nginx/sites-available/default
content: |
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/mycert.cert;
ssl_certificate_key /etc/nginx/ssl/mycert.prv;
}
runcmd:
- secretsname=$(find /var/lib/waagent/ -name "*.prv" | cut -c -57)
- mkdir /etc/nginx/ssl
- cp $secretsname.crt /etc/nginx/ssl/mycert.cert
- cp $secretsname.prv /etc/nginx/ssl/mycert.prv
- service nginx restart
إنشاء جهاز ظاهري آمن
قم بإنشاء جهاز ظاهري باستخدام az vm create. يتم إدخال بيانات الشهادة من Key Vault مع المعلمة --secrets
. يمكنك التمرير في تكوين cloud-init مع المعلمة --custom-data
:
az vm create \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init-web-server.txt \
--secrets "$vm_secret"
يستغرق الأمر بضع دقائق لإنشاء الجهاز الظاهري، وتثبيت الحزم، وبدء التطبيق. عندما يتم إنشاء الجهاز الظاهري، قم بتدوينpublicIpAddress
ما يتم عرضه بواسطة Azure CLI. يُستخدم هذا العنوان للوصول إلى موقعك في مستعرض ويب.
للسماح لحركة مرور الويب بالوصول إلى الجهاز الظاهري، افتح المنفذ 443 من الإنترنت باستخدام منفذaz vm open-port
az vm open-port \
--resource-group myResourceGroupSecureWeb \
--name myVM \
--port 443
اختبار تطبيق الويب الآمن
والآن يُمكنك فتح مستعرض الويب وإدخال https://<publicIpAddress> في شريط العناوين. وفِّر عنوان IP العام الخاص بك من عملية إنشاء جهاز ظاهري. اقبل تحذير الأمان إذا استخدمت شهادة موقعة ذاتيًا:
ثم يتم عرض موقع NGINX الآمن الخاص بك كما في المثال التالي:
الخطوات التالية
في هذا البرنامج التعليمي، قمت بتأمين خادم ويب NGINX مع شهادة TLS/SSL المُخزنة في Azure Key Vault. لقد تعرفت على كيفية:
- إنشاء Azure Key Vault
- إنشاء شهادة أو تحميلها إلى Key Vault
- إنشاء جهاز ظاهري وتثبيت خادم ويب NGINX
- إدخال الشهادة إلى الجهاز الظاهري وتكوين NGINX باستخدام ربط شهادة بروتوكول أمان طبقة النقل (TLS)
اتبع هذا الارتباط لعرض نماذج البرنامج النصي للجهاز الظاهري التي تم إنشاؤها مسبقاً.