الدرس: استخدام Azure Key Vault مع آلة افتراضية في Python

يساعدك Azure Key Vault على حماية المفاتيح والأسرار والشهادات مثل مفاتيح API وسلاسل اتصال قاعدة البيانات.

في هذا الدرس، تقوم بإعداد تطبيق Python لقراءة المعلومات من Azure Key Vault باستخدام هوية مدارة لموارد Azure. تتعلم كَيفِيةِ:

  • إنشاء مخزن رئيسي
  • تخزين سر في Key Vault
  • إنشاء آلة افتراضية على Azure Linux
  • تمكين هوية مدارة للجهاز الظاهري
  • امنح الأذونات المطلوبة لتطبيق وحدة التحكم لقراءة البيانات من Key Vault
  • استرجع سرا من Key Vault

قبل أن تبدأ، اقرأ Key Vault المفاهيم الأساسية.

إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني.

المتطلبات الأساسية

لأنظمة Windows وMac وLinux:

  • بوابه
  • إصدار حالي من Azure CLI. قم بالعمل az --version لفحص النسخة المثبتة.

تسجيل الدخول إلى Azure

سجل الدخول إلى Azure باستخدام Azure CLI:

az login

إنشاء مجموعة موارد ومخزن رئيسي

يستخدم هذا البدء السريع خزنة مفاتيح Azure مسبقا. يمكنك إنشاء مخزن مفاتيح باتباع الخطوات الواردة في هذه قوالب التشغيل السريع:

بدلا من ذلك، يمكنك تشغيل أوامر Azure CLI أو Azure PowerShell هذه.

هام

يجب أن يكون لكل مخزن رئيسي اسم فريد. استبدلها <vault-name> باسم خزنة المفاتيح في الأمثلة التالية.

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

ملء key vault الخاص بك ببيانات سرية

لنقم بإنشاء سر يسمى mySecret، بقيمة Success!. قد يكون السر كلمة مرور، أو سلسلة سلسلة الاتصال في SQL، أو أي معلومات أخرى تحتاجها للحفاظ على أمان وتوفرها لتطبيقك.

لإضافة سر إلى مخزن المفاتيح الذي أنشأته حديثاً، استخدم الأمر التالي:

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell
az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

إنشاء جهاز ظاهري

إنشاء جهاز افتراضي باسم myVM باستخدام إحدى الطرق التالية:

Linux Windows
واجهة سطر الأوامر Azure (Azure CLI) واجهة سطر الأوامر Azure (Azure CLI)
بوويرشيل بوويرشيل
مدخل Azure مدخل Azure

لإنشاء آلة افتراضية لينكس باستخدام Azure CLI، استخدم أمر az vm create. يضيف المثال التالي حساب مستخدم يسمى azureuser. يتم استخدام المعلمة --generate-ssh-keys لإنشاء مفتاح "SSH" تلقائياً، ووضعه في موقع المفتاح الافتراضي ( ~ / .ssh ).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

لاحظ قيمة publicIpAddress في المخرجات.

تعيين هوية لجهاز VM

أنشئ هوية مدارة مخصصة للنظام للجهاز الافتراضي باستخدام أمر az vm identity assign :

az vm identity assign --name "myVM" --resource-group "<resource-group>"

لاحظ الهوية المعينة من قبل النظام في المخرج:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

تعيين أذونات إلى هوية VM

  • واجهة سطر الأوامر Azure (Azure CLI)
  • Azure PowerShell

للحصول على صلاحيات لخزنة المفاتيح الخاصة بك عبر Role-Based Access Control (RBAC)، قم بتعيين دور إلى "اسم المستخدم الرئيسي" (UPN) باستخدام أمر Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

استبدل <upn>، <subscription-id>، ومع <vault-name> قيمك الفعلية. إذا استخدمت اسم مجموعة موارد مختلف، استبدل "myResourceGroup" أيضا. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).

تسجيل الدخول إلى الجهاز الافتراضي

لتسجيل الدخول إلى الجهاز الافتراضي، اتبع التعليمات في Connect وسجل الدخول إلى جهاز افتراضي Azure يعمل بنظام Linux أو Connect وتسجيل الدخول إلى جهاز افتراضي Azure يعمل بنظام Windows.

لتسجيل الدخول إلى جهاز افتراضي في لينكس، استخدم ssh مع <public-ip-address> خطوة إنشاء آلة افتراضية :

ssh azureuser@<public-ip-address>

تثبيت مكتبات Python على الجهاز الافتراضي

على الجهاز الافتراضي، قم بتثبيت مكتبتي Python اللتين يستخدمهما السكربت النموذجي: azure-keyvault-secrets و azure-identity.

على جهاز افتراضي لينكس، قم بتثبيتها ب pip3:

pip3 install azure-keyvault-secrets azure-identity

إنشاء وتحرير نموذج سكريبت Python

على الجهاز الافتراضي، أنشئ ملف Python باسم sample.py. الصق الكود التالي في الملف، واستبداله <vault-name> باسم خزنة المفاتيح الخاصة بك:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<vault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

شغل نموذج تطبيق Python

شغّل sample.py. إذا تم إعداد كل شيء بشكل صحيح، يطبع التطبيق القيمة السرية:

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

تنظيف الموارد

عندما لا تحتاجها، احذف الجهاز الافتراضي وخزنة المفتاح. أسرع طريقة هي حذف مجموعة الموارد التي تنتمي إليها:

az group delete -g "myResourceGroup"

الخطوات التالية

Azure Key Vault REST API