مشاركة عبر


تكوين أذونات Azure VM Image Builder باستخدام Azure CLI

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

عند التسجيل في Azure VM Image Builder، يحصل اشتراكك على حق الوصول إلى الاسم الأساسي لخدمة VM Image Builder (SPN). يخول هذا التسجيل أيضا إذن الخدمة لإنشاء مجموعة موارد مرحلية وإدارتها وحذفها. بالنسبة لعملية إنشاء الصور، مطلوب أيضا تعيين دور المساهم في مجموعة الموارد المرحلية.

إذا كنت تريد أن يقوم VM Image Builder بتوزيع الصور، فأنت بحاجة إلى إنشاء هوية معينة من قِبَل المستخدم في Azure، مع أذونات لقراءة الصور وكتابتها. على سبيل المثال، قد ترغب في توزيع الصور على الصور المدارة أو Azure Compute Gallery. إذا كنت تقوم بالوصول إلى Azure Storage، فإن الهوية التي أنشأتها من قِبَل المستخدم تحتاج إلى أذونات لقراءة الحاويات الخاصة أو العامة.

يجب عليك إعداد الأذونات والامتيازات قبل إنشاء الصورة. توضح الأقسام التالية بالتفصيل كيفية تكوين السيناريوهات المحتملة باستخدام Azure CLI.

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

إنشاء هوية مُدارة يعينها المستخدم

يتطلب منك VM Image Builder إنشاء هوية مُدارة يعينها مستخدم Azure. يستخدم VM Image Builder هذه الهوية لقراءة الصور وكتابة الصور والوصول إلى حسابات Azure Storage. يمكنك منح إذن الهوية لتنفيذ إجراءات محددة في اشتراكك.

إشعار

الهوية المُدارة التي يعيّنها المستخدم هي الطريقة الصحيحة لمنح الأذونات لمجموعات موارد الصور. تم إهمال SPN لهذا الغرض.

يوضح المثال التالي كيفية إنشاء هوية مدارة معينة من قبل المستخدم Azure. استبدل إعدادات العنصر النائب لتعيين المتغيرات.

الإعدادات ‏‏الوصف
<مجموعة الموارد> مجموعة الموارد حيث تريد إنشاء الهوية المُدارة المعينة من قبل المستخدم.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

az identity create \
    --resource-group $imageResourceGroup \
    --name $identityName

لمزيد من المعلومات، راجع الهوية المُدارة المعينة من قِبل مستخدم Azure.

السماح لـ VM Image Builder بتوزيع الصور

لكي يقوم VM Image Builder بتوزيع الصور، يجب السماح للخدمة بإدخال الصور في مجموعات الموارد. لمنح الأذونات المطلوبة، قم بإنشاء هوية مُدارة يعينها المستخدم، وامنحها حقوقاً على مجموعة الموارد حيث تم إنشاء الصورة. لا يمتلك VM Image Builder إذناً للوصول إلى الموارد في مجموعات الموارد الأخرى في الاشتراك. تحتاج إلى اتخاذ إجراءات واضحة للسماح بالوصول، لمنع فشل البنيات الخاصة بك.

لا تحتاج إلى منح مساهم الهوية المدارة المعين من قبل المستخدم حقوق في مجموعة الموارد لتوزيع الصور. ومع ذلك، تحتاج الهوية المدارة المعينة من قبل المستخدم إلى أذونات Azure Actions التالية في مجموعة موارد التوزيع:

Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete

إذا كنت تريد التوزيع في Azure Compute Gallery، فستحتاج أيضاً إلى:

Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write

إذن لتخصيص الصور الموجودة

لكي يقوم VM Image Builder بإنشاء صور من الصور المخصصة للمصدر، يجب السماح للخدمة بقراءة الصور في مجموعات الموارد هذه. لمنح الأذونات المطلوبة، قم بإنشاء هوية مُدارة يعينها المستخدم، وامنحها حقوقاً على مجموعة الموارد حيث توجد الصورة.

إليك كيفية الإنشاء من صورة مخصصة موجودة:

Microsoft.Compute/images/read

إليك كيفية الإنشاء من إصدار Azure Compute Gallery الحالي:

Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read

إذن لتخصيص الصور على الشبكات الظاهرية الخاصة بك

يتمتع VM Image Builder بالقدرة على توزيع واستخدام شبكة ظاهرية موجودة في اشتراكك، ما يسمح بالتخصيصات بالوصول إلى الموارد المتصلة.

لا تحتاج إلى منح حقوق المساهمين في الهوية المُدارة التي عيّنها المستخدم في مجموعة الموارد لتوزيع جهاز ظاهري على شبكة ظاهرية موجودة. ومع ذلك، تحتاج الهوية المُدارة المعينة من قبل المستخدم إلى أذونات Azure Actions التالية على مجموعة موارد الشبكة الظاهرية:

Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action

إنشاء تعريف دور Azure

تنشئ الأمثلة التالية تعريف دور Azure من الإجراءات الموضحة في الأقسام السابقة. يتم تطبيق الأمثلة على مستوى مجموعة الموارد. قم بتقييم واختبار ما إذا كانت الأمثلة دقيقة بما يكفي لمتطلباتك.

تسمح إجراءات الصورة بالقراءة والكتابة. حدد ما هو مناسب لبيئتك. على سبيل المثال، أنشئ دوراً للسماح لـ VM Image Builder بقراءة الصور من مجموعة الموارد example-rg-1، وكتابة الصور إلى مجموعة الموارد example-rg-2.

مثال على دور Azure للصورة المخصصة

ينشئ المثال التالي دور Azure لاستخدام صورة مخصصة مصدر وتوزيعها. ثم تقوم بمنح الدور المخصص للهوية المُدارة التي يعينها المستخدم لـ VM Image Builder.

لتبسيط استبدال القيم في المثال، قم بتعيين المتغيرات التالية أولًا. استبدل إعدادات العنصر النائب لتعيين المتغيرات.

الإعدادات ‏‏الوصف
<مُعرّف الاشتراك> معرّف اشتراك Azure.
<مجموعة الموارد> مجموعة الموارد للصورة المخصصة.
# Subscription ID - You can get this using `az account show | grep id` or from the Azure portal.
subscriptionID=$(az account show --query id --output tsv)
# Resource group - image builder will only support creating custom images in the same Resource Group as the source managed image.
imageResourceGroup=<Resource group>
identityName="aibIdentity"

# Use *cURL* to download the a sample JSON description 
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json -o aibRoleImageCreation.json

# Create a unique role name to avoid clashes in the same Azure Active Directory domain
imageRoleDefName="Azure Image Builder Image Def"$(date +'%s')

# Update the JSON definition using stream editor
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleImageCreation.json
sed -i -e "s/<rgName>/$imageResourceGroup/g" aibRoleImageCreation.json
sed -i -e "s/Azure Image Builder Service Image Creation Role/$imageRoleDefName/g" aibRoleImageCreation.json

# Create a custom role from the sample aibRoleImageCreation.json description file.
az role definition create --role-definition ./aibRoleImageCreation.json

# Get the user-assigned managed identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)

# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
az role assignment create \
    --assignee $imgBuilderCliId \
    --role $imageRoleDefName \
    --scope /subscriptions/$subscriptionID/resourceGroups/$imageResourceGroup

مثال دور الشبكة الظاهرية الحالية Azure

ينشئ المثال التالي دور Azure لاستخدام صورة شبكة ظاهرية موجودة وتوزيعها. ثم تقوم بمنح الدور المخصص للهوية المُدارة التي يعينها المستخدم لـ VM Image Builder.

لتبسيط استبدال القيم في المثال، قم بتعيين المتغيرات التالية أولًا. استبدل إعدادات العنصر النائب لتعيين المتغيرات.

الإعدادات ‏‏الوصف
<مُعرّف الاشتراك> معرّف اشتراك Azure.
<مجموعة الموارد> مجموعة موارد الشبكة الظاهرية
# Subscription ID - You can get this using `az account show | grep id` or from the Azure portal.
subscriptionID=$(az account show --query id --output tsv)
VnetResourceGroup=<Resource group>
identityName="aibIdentity"

# Use *cURL* to download the a sample JSON description 
curl https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json -o aibRoleNetworking.json

# Create a unique role name to avoid clashes in the same domain
netRoleDefName="Azure Image Builder Network Def"$(date +'%s')

# Update the JSON definition using stream editor
sed -i -e "s/<subscriptionID>/$subscriptionID/g" aibRoleNetworking.json
sed -i -e "s/<vnetRgName>/$VnetResourceGroup/g" aibRoleNetworking.json
sed -i -e "s/Azure Image Builder Service Networking Role/$netRoleDefName/g" aibRoleNetworking.json

# Create a custom role from the aibRoleNetworking.json description file.
az role definition create --role-definition ./aibRoleNetworking.json

# Get the user-assigned managed identity id
imgBuilderCliId=$(az identity show -g $imageResourceGroup -n $identityName --query clientId -o tsv)

# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
az role assignment create \
    --assignee $imgBuilderCliId \
    --role $netRoleDefName \
    --scope /subscriptions/$subscriptionID/resourceGroups/$VnetResourceGroup

استخدام الهوية المدارة للوصول إلى Azure Storage

إذا كنت تريد المصادقة باستخدام Azure Storage واستخدام الحاويات الخاصة، فإن VM Image Builder يحتاج إلى هوية مُدارة يعينها المستخدم. يستخدم VM Image Builder الهوية للمصادقة مع Azure Storage.

إشعار

يستخدم VM Image Builder الهوية فقط في الوقت الذي ترسل فيه قالب الصورة. لا يمتلك الجهاز الظاهري المبني حق الوصول إلى الهوية أثناء إنشاء الصورة.

استخدم Azure CLI لإنشاء هوية مُدارة يعينها المستخدم:

az role assignment create \
    --assignee <Image Builder client ID> \
    --role "Storage Blob Data Reader" \
    --scope /subscriptions/<Subscription ID>/resourceGroups/<Resource group>/providers/Microsoft.Storage/storageAccounts/$scriptStorageAcc/blobServices/default/containers/<Storage account container>

في قالب VM Image Builder، قم بتوفير الهوية المُدارة التي عيّنها المستخدم:

    "type": "Microsoft.VirtualMachineImages/imageTemplates",
    "apiVersion": "2020-02-14",
    "location": "<Region>",
    ..
    "identity": {
    "type": "UserAssigned",
          "userAssignedIdentities": {
            "<Image Builder ID>": {}     
        }

استبدل إعدادات العنصر النائب التالية:

الإعدادات ‏‏الوصف
<المنطقة> منطقة القالب
<مجموعة الموارد> مجموعة الموارد
<حاوية حساب التخزين> اسم حاوية حساب التخزين
<مُعرّف الاشتراك> اشتراك Azure

لمزيد من المعلومات، راجع إنشاء صورة واستخدام هوية مُدارة يعينها المستخدم للوصول إلى الملفات في Azure Storage. تتعلم كيفية إنشاء وتكوين الهوية المُدارة المعينة من قِبَل المستخدم للوصول إلى حساب التخزين.

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

نظرة عامة على Azure VM Image Builder