التشغيل السريع: إنشاء جهاز ظاهري سري باستخدام Azure CLI
ينطبق على: ✔️ أجهزة ظاهرية بنظام التشغيل Linux ✔️ أجهزة ظاهرية بنظام التشغيل Windows
يوضح لك هذا التشغيل السريع كيفية استخدام واجهة سطر الأوامر Azure (Azure CLI) لنشر جهاز ظاهري سري (VM سري) في Azure. يتم استخدام Azure CLI لإنشاء موارد Azure وإدارتها إما من سطر الأوامر أو في البرامج النصية.
المتطلبات الأساسية
إذا لم تكن مشتركًا في Azure، فيمكنك إنشاء حساب مجاني على Azure قبل البدء.
إطلاق Azure Cloud Shell
Azure Cloud Shell هو واجهة تفاعلية مجانية يمكنك استخدامه لتشغيل الخطوات الموجودة في هذه المقالة. يحتوي على أدوات Azure الشائعة المثبتة مسبقًا والمهيئة للاستخدام مع حسابك.
لفتح Cloud Shell، ما عليك سوى تحديد جربه من الزاوية اليمنى العليا من مجموعة التعليمات البرمجية. يمكنك أيضًا تشغيل Cloud Shell في علامة تبويب متصفح منفصلة من خلال الانتقال إلى https://shell.azure.com/bash. حدد "نسخ" لنسخ مجموعات التعليمات البرمجية، والصقها في "Cloud Shell"، ثم حدد "إدخال" لتشغيلها.
إذا كنت تفضل تثبيت CLI واستخدامه محليا، يتطلب هذا التشغيل السريع إصدار Azure CLI 2.38.0 أو أحدث. قم بتشغيل az--version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
إنشاء مجموعة موارد
أنشئ مجموعة موارد باستخدام الأمر az group create. مجموعة موارد Azure هي حاوية منطقية يتم بها نشر موارد Azure وإدارتها. ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في موقع northeurope :
إشعار
الأجهزة الظاهرية السرية غير متوفرة في جميع المواقع. بالنسبة للمواقع المدعومة حاليا، راجع منتجات الجهاز الظاهري المتوفرة بواسطة منطقة Azure.
az group create --name myResourceGroup --location northeurope
إنشاء جهاز ظاهري سري باستخدام مفتاح مدار بواسطة النظام الأساسي
إنشاء جهاز افتراضي من خلال أمر إنشاء "az vm" .
يعمل المثال التالي على إنشاء جهاز افتراضي باسم myVM وإضافة حساب مستخدم باسم azureuser. --generate-ssh-keys
يتم استخدام المعلمة لإنشاء مفتاح SSH تلقائيا، ووضعه في موقع المفتاح الافتراضي (~/.ssh). لاستخدام مجموعة محددة من المفاتيح بدلاً من ذلك، استخدم الخيار --ssh-key-values
.
بالنسبة إلى size
، حدد حجم جهاز ظاهري سري. لمزيد من المعلومات، راجع عائلات الأجهزة الظاهرية السرية المدعومة.
اختر VMGuestStateOnly
من دون تشفير سري لقرص نظام التشغيل. أو اختر DiskWithVMGuestState
للتشفير السري لقرص نظام التشغيل باستخدام مفتاح مدار بواسطة النظام الأساسي. يتم تمكين التمهيد الآمن بشكل افتراضي، ولكنه اختياري ل VMGuestStateOnly
. لمزيد من المعلومات، راجع التمهيد الآمن وvTPM. لمزيد من المعلومات حول تشفير القرص والتشفير في المضيف، راجع تشفير قرص نظام التشغيل السري والتشفير في المضيف.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4es_v5 \
--admin-username <azure-username> \
--admin-password <azure-password> \
--enable-vtpm true \
--image "Canonical:0001-com-ubuntu-confidential-vm-jammy:22_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type VMGuestStateOnly \
--enable-secure-boot true
يستغرق الأمر بضع دقائق لإنشاء الجهاز الظاهري ودعم الموارد. يظهر المثال الناتج التالي عملية إنشاء VM بنجاح.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "northeurope",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
قم بتدوين ملاحظة publicIpAddress
لاستخدامها لاحقاً.
إنشاء جهاز ظاهري سري باستخدام مفتاح مدار من قبل العميل
لإنشاء مجموعة تشفير قرص سرية، لديك خياران: استخدام Azure Key Vault أو وحدة أمان الأجهزة (HSM) المدارة في Azure Key Vault. بناء على احتياجات الأمان والتوافق الخاصة بك، يمكنك اختيار أي خيار. ومع ذلك، من المهم ملاحظة أن SKU القياسية غير مدعومة. يستخدم المثال التالي Azure Key Vault Premium.
- امنح كيان
Confidential VM Orchestrator
خدمة الجهاز الظاهري السري للمستأجر. لهذه الخطوة، يجب أن تكون مسؤولا عاما أو تحتاج إلى أن يكون لديك دور التحكم في الوصول استنادا إلى الدور لمسؤول وصول المستخدم. تثبيت Microsoft Graph SDK لتنفيذ الأوامر أدناه.
Connect-Graph -Tenant "your tenant ID" Application.ReadWrite.All
New-MgServicePrincipal -AppId bf7b6499-ff71-4aa2-97a4-f372087be7f0 -DisplayName "Confidential VM Orchestrator"
- إنشاء Azure Key Vault باستخدام الأمر az keyvault create . بالنسبة إلى مستوى التسعير، حدد Premium (بما في ذلك دعم المفاتيح المدعومة من HSM). تأكد من أن لديك دور مالك في مخزن المفاتيح هذا.
az keyvault create -n keyVaultName -g myResourceGroup --enabled-for-disk-encryption true --sku premium --enable-purge-protection true --enable-rbac-authorization false
- منح
Confidential VM Orchestrator
أذونات إلىget
وrelease
key vault.
$cvmAgent = az ad sp show --id "bf7b6499-ff71-4aa2-97a4-f372087be7f0" | Out-String | ConvertFrom-Json
az keyvault set-policy --name keyVaultName --object-id $cvmAgent.Id --key-permissions get release
- إنشاء مفتاح في مخزن المفاتيح باستخدام az keyvault key create. بالنسبة لنوع المفتاح، استخدم RSA-HSM.
az keyvault key create --name mykey --vault-name keyVaultName --default-cvm-policy --exportable --kty RSA-HSM
- إنشاء مجموعة تشفير القرص باستخدام az disk-encryption-set create. تعيين نوع التشفير إلى
ConfidentialVmEncryptedWithCustomerKey
.
$keyVaultKeyUrl=(az keyvault key show --vault-name keyVaultName --name mykey--query [key.kid] -o tsv)
az disk-encryption-set create --resource-group myResourceGroup --name diskEncryptionSetName --key-url $keyVaultKeyUrl --encryption-type ConfidentialVmEncryptedWithCustomerKey
- امنح مورد مجموعة تشفير القرص حق الوصول إلى مخزن المفاتيح باستخدام az key vault set-policy.
$desIdentity=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [identity.principalId] -o tsv)
az keyvault set-policy -n keyVaultName -g myResourceGroup --object-id $desIdentity --key-permissions wrapkey unwrapkey get
- استخدم معرف مجموعة تشفير القرص لإنشاء الجهاز الظاهري.
$diskEncryptionSetID=(az disk-encryption-set show -n diskEncryptionSetName -g myResourceGroup --query [id] -o tsv)
- إنشاء جهاز افتراضي من خلال أمر إنشاء "az vm" . اختر
DiskWithVMGuestState
للتشفير السري لقرص نظام التشغيل باستخدام مفتاح يديره العميل. تمكين التمهيد الآمن اختياري، ولكن يوصى به. لمزيد من المعلومات، راجع التمهيد الآمن وvTPM. لمزيد من المعلومات حول تشفير القرص، راجع تشفير قرص نظام التشغيل السري.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--size Standard_DC4as_v5 \
--admin-username <azure-user> \
--admin-password <azure-password> \
--enable-vtpm true \
--enable-secure-boot true \
--image "Canonical:0001-com-ubuntu-confidential-vm-focal:20_04-lts-cvm:latest" \
--public-ip-sku Standard \
--security-type ConfidentialVM \
--os-disk-security-encryption-type DiskWithVMGuestState \
--os-disk-secure-vm-disk-encryption-set $diskEncryptionSetID \
يستغرق الأمر بضع دقائق لإنشاء الجهاز الظاهري ودعم الموارد. يظهر المثال الناتج التالي عملية إنشاء VM بنجاح.
{
"fqdns": "",
"id": "/subscriptions/<guid>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
"location": "eastus",
"macAddress": "<MAC-address>",
"powerState": "VM running",
"privateIpAddress": "10.20.255.255",
"publicIpAddress": "192.168.255.255",
"resourceGroup": "myResourceGroup",
"zones": ""
}
قم بتدوين ملاحظة publicIpAddress
لاستخدامها لاحقاً.
الاتصال والمصادقة على CVM المستندة إلى AMD من خلال Microsoft Azure Attestation Sample App
لاستخدام نموذج تطبيق في C++ للاستخدام مع واجهات برمجة تطبيقات تصديق الضيف، استخدم الخطوات التالية. يستخدم هذا المثال جهازا ظاهريا سريا لنظام Linux. بالنسبة إلى Windows، راجع إرشادات إنشاء Windows.
سجل الدخول إلى جهازك الظاهري السري باستخدام عنوان IP العام الخاص به.
استنساخ نموذج تطبيق Linux.
ثبّت حزمة
build-essential
. تقوم هذه الحزمة بتثبيت كل ما هو مطلوب لتجميع نموذج التطبيق.
sudo apt-get install build-essential
- تثبيت الحزم أدناه.
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libjsoncpp-dev
sudo apt-get install libboost-all-dev
sudo apt install nlohmann-json3-dev
sudo dpkg -i azguestattestation1_<latest-version>_amd64.deb
- بمجرد تثبيت الحزم أعلاه، استخدم الخطوات التالية لإنشاء التطبيق وتشغيله.
cd confidential-computing-cvm-guest-attestation/cvm-attestation-sample-app
sudo cmake . && make
sudo ./AttestationClient -o token
- لتحويل رمز الويب المميز إلى JSON، استخدم الخطوات أدناه.
sudo ./AttestationClient -o token>> /attestation_output
JWT=$(cat /attestation_output)
echo -n $JWT | cut -d "." -f 1 | base64 -d 2>/dev/null | jq .
echo -n $JWT | cut -d "." -f 2 | base64 -d 2>/dev/null | jq .