استخدام Azure Key Vault مع جهاز ظاهري في Python.
يساعدك Azure Key Vault على حماية المفاتيح والأسرار والشهادات، مثل مفاتيح واجهة برمجة التطبيقات وسلاسل اتصال قاعدة البيانات.
في هذا البرنامج التعليمي، يمكنك إعداد تطبيق Python لقراءة المعلومات من Azure Key Vault باستخدام الهويات المدارة لموارد Azure. ستتعلم كيفية:
- إنشاء مخزن رئيسي
- تخزين بيانات سرية في Key Vault
- إنشاء جهاز ظاهري Azure Linux
- تمكين هوية مدارة للجهاز الظاهري
- منح الأذونات المطلوبة لتطبيق وحدة التحكم لقراءة البيانات من Key Vault
- استرجع سراً من Key Vault
قبل البدء، اقرأ المفاهيم الأساسية لـ Key Vault.
إذا لم يكن لديك اشتراك Azure، فأنشئ حسابًا مجانًا.
المتطلبات الأساسية
بالنسبة Windows, Mac, and Linux:
- بوابه
- يتطلب هذا البرنامج التعليمي تشغيل Azure CLI محليًا. يجب أن يكون لديك الإصدار 2.0.4 من Azure CLI أو تثبيت أحدث. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI2 2.0.
تسجيل الدخولِ إلى Azure
لتسجيل الدخول إلى Azure باستخدام Azure CLI، أدخل:
az login
إنشاء مجموعة موارد ومخزن رئيسي
يستخدم هذا التشغيل السريع مخزن مفاتيح Azure تم إنشاؤه مسبقا. يمكنك إنشاء مخزن بيانات سرية باتباع الخطوات الواردة في بداية سريعة إلى Azure CLI أو بداية سريعة إلى Azure PowerShell أو بداية سريعة إلى مدخل Microsoft Azure.
بدلا من ذلك، يمكنك تشغيل أوامر Azure CLI أو Azure PowerShell هذه.
هام
يجب أن يكون لكل مخزن رئيسي اسم فريد. استبدل <your-unique-keyvault-name> باسم المخزن الرئيس في الأمثلة التالية.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization
ملء key vault الخاص بك ببيانات سرية
لنقم بإنشاء سر يسمى mySecret، بقيمة Success!. قد يكون السر عبارة عن كلمة مرور أو سلسلة اتصال SQL أو أي معلومات أخرى تحتاجها للحفاظ على أمانها وإتاحتها لتطبيقك.
لإضافة سر إلى مخزن المفاتيح الذي أنشأته حديثاً، استخدم الأمر التالي:
az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"
إنشاء جهاز ظاهري
إنشاء جهاز ظاهري VM يسمى myVM باستخدام إحدى الطرق التالية:
Linux | Windows |
---|---|
Azure CLI | Azure CLI |
بوويرشيل | بوويرشيل |
مدخل Microsoft Azure | مدخل Azure |
لإنشاء جهاز Linux VM باستخدام Azure CLI، استخدم الأمر az vm create. يضيف المثال التالي حساب مستخدم يسمى azureuser. يتم استخدام المعلمة --generate-ssh-keys
لإنشاء مفتاح "SSH" تلقائياً، ووضعه في موقع المفتاح الافتراضي ( ~ / .ssh ).
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
لاحظ قيمة publicIpAddress
في المخرجات.
تعيين هوية لجهاز VM
قم بإنشاء هوية معينة من قِبل النظام للجهاز الظاهري باستخدام الأمر az vm identity assign في Azure CLI:
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
لاحظ الهوية المعينة من قبل النظام التي يتم عرضها في التعليمات البرمجية التالية. مخرج الأمر السابق سيكون:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
تعيين أذونات إلى هوية VM
لمنح أذونات التطبيق إلى مخزن المفاتيح الخاص بك من خلال التحكم في الوصول استنادا إلى الدور (RBAC)، قم بتعيين دور باستخدام الأمر Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
استبدل <app-id>
و <resource-group-name>
<subscription-id>
و <your-unique-keyvault-name>
بقيمك الفعلية. <app-id>
هو معرف التطبيق (العميل) للتطبيق المسجل في Microsoft Entra.
تسجيل الدخول إلى VM
لتسجيل الدخول إلى الجهاز الظاهري، اتبع الإرشادات الواردة في الاتصال بجهاز Azure الظاهري الذي يعمل بنظام التشغيل Linux وتسجيل الدخول إليه أو الاتصال بجهاز Azure الظاهري الذي يعمل بنظام التشغيل Windows وتسجيل الدخول إليه.
لتسجيل الدخول إلى جهاز Linux الظاهري، يمكنك استخدام الأمر ssh مع <publicIpAddress> المحدد في الخطوة إنشاء جهاز افتراضي:
ssh azureuser@<PublicIpAddress>
تثبيت مكتبات Python على الجهاز الظاهري
على الجهاز الظاهري، قم بتثبيت المكتبتين الخاصتين بـ Python واللتين سنستخدمهما في برنامج Python النصي: azure-keyvault-secrets
وazure.identity
.
على Linux VM، على سبيل المثال، يمكنك تثبيت هذه باستخدام pip3
:
pip3 install azure-keyvault-secrets
pip3 install azure.identity
قم بإنشاء وتحرير نموذج البرنامج النصي Python
على الجهاز الظاهري، قم بإنشاء ملف Python يسمى sample.py. حرر الملف لاحتواء التعليمات البرمجية التالية، استبدل <your-unique-keyvault-name> باسم مخزن المفاتيح:
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
key_vault_name = "<your-unique-keyvault-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 '<your-unique-keyvault-name>' is: 'Success!'
تنظيف الموارد
عندما لا تكون هناك حاجة إليها، احذف الجهاز الظاهري وخزنة المفاتيح الخاصة بك. يمكنك القيام بذلك بسرعة عن طريق حذف مجموعة الموارد التي تنتمي إليها:
az group delete -g myResourceGroup