Mengonfigurasi izin Azure VM Image Builder dengan menggunakan Azure CLI

Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel

Saat Anda mendaftar untuk Azure VM Image Builder, langganan Anda mendapatkan akses ke nama perwakilan layanan (SPN) VM Image Builder. Pendaftaran ini juga mengotorisasi izin layanan untuk membuat, mengelola, dan menghapus grup sumber daya penahapan. Untuk proses pembuatan gambar, penetapan peran Kontributor juga diperlukan di grup sumber daya penahapan.

Jika Anda ingin VM Image Builder mendistribusikan gambar, Anda perlu membuat identitas yang ditetapkan pengguna di Azure, dengan izin untuk membaca dan menulis gambar. Misalnya, Anda mungkin ingin mendistribusikan gambar ke gambar terkelola atau ke Azure Compute Gallery. Jika Anda mengakses penyimpanan Azure, identitas yang ditetapkan pengguna yang Anda buat memerlukan izin untuk membaca kontainer privat atau publik.

Anda harus menyiapkan izin dan hak istimewa sebelum membangun gambar. Bagian berikut ini merinci cara mengonfigurasi skenario yang memungkinkan menggunakan Azure CLI.

Prasyarat

Membuat identitas terkelola yang ditetapkan pengguna

VM Image Builder mengharuskan Anda membuat identitas terkelola yang ditetapkan pengguna Azure. VM Image Builder menggunakan identitas ini untuk membaca gambar, menulis gambar, dan mengakses akun penyimpanan Azure. Anda memberikan izin identitas untuk melakukan tindakan tertentu pada langganan Anda.

Catatan

Identitas terkelola yang ditetapkan pengguna adalah cara yang benar untuk memberikan izin ke grup sumber daya gambar. SPN tidak digunakan lagi untuk tujuan ini.

Contoh berikut ini memperlihatkan kepada Anda cara membuat identitas terkelola yang ditetapkan pengguna Azure. Ganti pengaturan tempat penampung untuk mengatur variabel Anda.

Pengaturan Deskripsi
<Grup sumber daya> Grup sumber daya tempat Anda ingin membuat identitas terkelola yang ditetapkan pengguna.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

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

Untuk informasi selengkapnya, lihat Identitas terkelola yang ditetapkan pengguna Azure.

Izinkan VM Image Builder untuk mendistribusikan gambar

Agar VM Image Builder dapat mendistribusikan gambar, layanan harus diizinkan untuk memasukkan gambar ke grup sumber daya. Untuk memberikan izin yang diperlukan, Anda perlu membuat identitas terkelola yang ditetapkan pengguna, dan memberikannya hak pada grup sumber daya tempat gambar dibangun. VM Image Builder tidak memiliki izin untuk mengakses sumber daya di grup sumber daya lain dalam langganan. Anda perlu mengambil tindakan nyata untuk mengizinkan akses, agar pembangunan Anda tidak gagal.

Anda tidak perlu memberikan hak kontributor identitas terkelola yang ditetapkan pengguna pada grup sumber daya untuk mendistribusikan citra. Namun, identitas terkelola yang ditetapkan pengguna memerlukan izin Actions Azure berikut ini dalam grup sumber daya distribusi:

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

Jika Anda ingin mendistribusikan ke Azure Compute Gallery, Anda juga memerlukan:

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

Izin untuk mengkustomisasi citra yang sudah ada

Agar VM Image Builder membangun gambar dari gambar kustom sumber, layanan harus diizinkan untuk memasukkan gambar ke dalam grup sumber daya ini. Untuk memberikan izin yang diperlukan, Anda perlu membuat identitas terkelola yang ditetapkan pengguna, dan memberikannya hak pada grup sumber daya tempat gambar berada.

Berikut adalah cara Anda membangun dari gambar kustom yang sudah ada:

Microsoft.Compute/images/read

Berikut adalah cara Anda membangun dari versi Azure Compute Gallery yang sudah ada:

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

Izin untuk menyesuaikan gambar pada jaringan virtual Anda

VM Image Builder memiliki kemampuan untuk menyebarkan dan menggunakan jaringan virtual yang ada di langganan Anda, sehingga memungkinkan akses kustomisasi ke sumber daya yang tersambung.

Anda tidak perlu memberikan hak kontributor identitas terkelola yang ditetapkan pengguna pada grup sumber daya untuk menyebarkan mesin virtual ke jaringan virtual yang sudah ada. Namun, identitas terkelola yang ditetapkan pengguna memerlukan izin Azure Actions berikut ini pada grup sumber daya jaringan:

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

Membuat definisi peran Azure

Contoh berikut ini membuat definisi peran Azure dari tindakan yang dijelaskan di bagian sebelumnya. Contoh diterapkan di tingkat grup sumber daya. Evaluasi dan uji apakah contohnya cukup terperinci untuk kebutuhan Anda.

Tindakan citra memungkinkan baca dan tulis. Tentukan apa yang sesuai untuk lingkungan Anda. Contohnya, buat peran untuk mengizinkan VM Image Builder membaca gambar dari grup sumber daya example-rg-1 dan menulis gambar ke grup sumber daya example-rg-2.

Contoh peran Azure citra kustom

Contoh berikut membuat peran Azure untuk menggunakan dan mendistribusikan citra kustom sumber. Anda kemudian memberikan peran kustom ke identitas terkelola yang ditetapkan pengguna untuk VM Image Builder.

Untuk menyederhanakan penggantian nilai dalam contoh, atur variabel berikut terlebih dahulu. Ganti pengaturan tempat penampung untuk mengatur variabel Anda.

Pengaturan Deskripsi
<ID Langganan> ID langganan Azure Anda.
<Grup sumber daya> Grup sumber daya untuk gambar kustom.
# 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

Contoh peran Azure jaringan virtual yang sudah ada

Contoh berikut membuat peran Azure untuk menggunakan dan mendistribusikan gambar jaringan virtual yang sudah ada. Anda kemudian memberikan peran kustom ke identitas terkelola yang ditetapkan pengguna untuk VM Image Builder.

Untuk menyederhanakan penggantian nilai dalam contoh, atur variabel berikut terlebih dahulu. Ganti pengaturan tempat penampung untuk mengatur variabel Anda.

Pengaturan Deskripsi
<ID Langganan> ID langganan Azure Anda.
<Grup sumber daya> Grup sumber daya jaringan virtual
# 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

Menggunakan identitas terkelola untuk akses Azure Storage

Jika Anda ingin mengautentikasi dengan Azure Storage dan menggunakan kontainer privat, VM Image Builder memerlukan identitas terkelola yang ditetapkan pengguna. VM Image Builder menggunakan identitas untuk mengautentikasi dengan Azure Storage.

Catatan

VM Image Builder hanya menggunakan identitas pada saat Anda mengirimkan templat gambar. Mesin virtual build tidak memiliki akses ke identitas selama pembangunan gambar.

Gunakan Azure CLI untuk membuat identitas terkelola yang ditetapkan pengguna:

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>

Di templat VM Image Builder, Anda perlu menyediakan identitas terkelola yang ditetapkan pengguna:

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

Ganti pengaturan tempat penampung berikut ini:

Pengaturan Deskripsi
<Wilayah> Wilayah templat
<Grup sumber daya> Grup sumber daya
<Kontainer akun penyimpanan> Nama kontainer akun penyimpanan
<ID Langganan> Langganan Azure

Untuk informasi selengkapnya, lihat Membuat gambar dan menggunakan identitas terkelola yang ditetapkan pengguna untuk mengakses file di Azure Storage. Anda akan mempelajari cara membuat dan mengonfigurasi identitas terkelola yang ditetapkan pengguna untuk mengakses akun penyimpanan.

Langkah berikutnya

Gambaran umum Azure VM Image Builder