Azure CLI kullanarak Azure VM Image Builder izinlerini yapılandırma

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Azure VM Image Builder'a kaydolurken aboneliğiniz bir VM Görüntü Oluşturucusu hizmet asıl adına (SPN) erişir. Bu kayıt ayrıca hizmet iznini hazırlama kaynak grubu oluşturma, yönetme ve silme yetkisi verir. Görüntü oluşturma işlemi için hazırlama kaynak grubunda Katkıda Bulunan rolü ataması da gereklidir.

VM Image Builder'ın görüntüleri dağıtmasını istiyorsanız, Azure'da görüntü okuma ve yazma izinlerine sahip kullanıcı tarafından atanan bir kimlik oluşturmanız gerekir. Örneğin, görüntüleri yönetilen görüntülere veya Azure İşlem Galerisi'ne dağıtmak isteyebilirsiniz. Azure depolamaya erişiyorsanız, oluşturduğunuz kullanıcı tarafından atanan kimliğin özel veya genel kapsayıcıları okuma iznine sahip olması gerekir.

Görüntü oluşturmadan önce izinleri ve ayrıcalıkları ayarlamanız gerekir. Aşağıdaki bölümlerde, Azure CLI kullanarak olası senaryoların nasıl yapılandırılır ayrıntılarıyla anlatılır.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Kullanıcı tarafından atanan yönetilen kimlik oluşturma

VM Görüntü Oluşturucusu, Azure kullanıcı tarafından atanan yönetilen kimlik oluşturmanızı gerektirir. VM Görüntü Oluşturucusu görüntüleri okumak, görüntü yazmak ve Azure depolama hesaplarına erişmek için bu kimliği kullanır. Kimliğe aboneliğinizde belirli eylemleri gerçekleştirme izni verirsiniz.

Dekont

Kullanıcı tarafından atanan yönetilen kimlik, görüntü kaynak gruplarına izin vermenin doğru yoludur. SPN bu amaçla kullanım dışıdır.

Aşağıdaki örnekte, Azure kullanıcı tarafından atanan yönetilen kimliğin nasıl oluşturulacağı gösterilmektedir. Değişkenlerinizi ayarlamak için yer tutucu ayarlarını değiştirin.

Ayar Açıklama
<Kaynak grubu> Kullanıcı tarafından atanan yönetilen kimliği oluşturmak istediğiniz kaynak grubu.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

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

Daha fazla bilgi için bkz . Azure kullanıcı tarafından atanan yönetilen kimlik.

VM Görüntü Oluşturucusu'nın görüntüleri dağıtmasına izin ver

VM Görüntü Oluşturucusu'nın görüntüleri dağıtabilmesi için hizmetin görüntüleri kaynak gruplarına eklemesine izin verilmelidir. Gerekli izinleri vermek için, kullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve görüntünün oluşturulduğu kaynak grubunda bu kimliğin haklarını verin. VM Görüntü Oluşturucusu'nun abonelikteki diğer kaynak gruplarındaki kaynaklara erişme izni yoktur. Derlemelerinizin başarısız olmasını önlemek için erişime izin vermek için açık eylemler gerçekleştirmeniz gerekir.

Görüntüleri dağıtmak için kaynak grubunda kullanıcı tarafından atanan yönetilen kimlik katkıda bulunanı hakları vermeniz gerekmez. Ancak, kullanıcı tarafından atanan yönetilen kimliğin dağıtım kaynak grubunda aşağıdaki Azure Actions izinlerine sahip olması gerekir:

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

Azure İşlem Galerisi'ne dağıtmak istiyorsanız şunları da yapmanız gerekir:

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

Mevcut görüntüleri özelleştirme izni

VM Görüntü Oluşturucusu'nın kaynak özel görüntülerden görüntü oluşturması için hizmetin görüntüleri bu kaynak gruplarına okumasına izin verilmelidir. Gerekli izinleri vermek için, kullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve görüntünün bulunduğu kaynak grubunda bu kimliğin haklarını verin.

Mevcut bir özel görüntüden şu şekilde derleyebilirsiniz:

Microsoft.Compute/images/read

Var olan bir Azure İşlem Galerisi sürümünden şu şekilde derleme yapabilirsiniz:

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

Sanal ağlarınızdaki görüntüleri özelleştirme izni

VM Görüntü Oluşturucusu, aboneliğinizde mevcut bir sanal ağı dağıtma ve kullanma özelliğine sahiptir, böylece özelleştirmelerin bağlı kaynaklara erişmesine izin verir.

Vm'yi var olan bir sanal ağa dağıtmak için kaynak grubunda kullanıcı tarafından atanan yönetilen kimlik katkıda bulunanı hakları vermeniz gerekmez. Ancak, kullanıcı tarafından atanan yönetilen kimliğin sanal ağ kaynak grubunda aşağıdaki Azure Actions izinlerine sahip olması gerekir:

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

Azure rol tanımı oluşturma

Aşağıdaki örnekler, önceki bölümlerde açıklanan eylemlerden bir Azure rol tanımı oluşturur. Örnekler kaynak grubu düzeyinde uygulanır. Örneklerin gereksinimleriniz için yeterince ayrıntılı olup olmadığını değerlendirin ve test edin.

Görüntü eylemleri okuma ve yazma işlemlerine izin verir. Ortamınız için neyin uygun olduğuna karar verin. Örneğin, VM Görüntü Oluşturucusu'nun example-rg-1 kaynak grubundan görüntüleri okumasına ve example-rg-2 kaynak grubuna görüntü yazmasına izin veren bir rol oluşturun.

Özel görüntü Azure rolü örneği

Aşağıdaki örnek, bir kaynak özel görüntüyü kullanmak ve dağıtmak için bir Azure rolü oluşturur. Ardından VM Görüntü Oluşturucusu için kullanıcı tarafından atanan yönetilen kimliğe özel rol verirsiniz.

Örnekteki değerlerin değiştirilmesini basitleştirmek için önce aşağıdaki değişkenleri ayarlayın. Değişkenlerinizi ayarlamak için yer tutucu ayarlarını değiştirin.

Ayar Açıklama
<Abonelik kimliği> Azure abonelik kimliğiniz.
<Kaynak grubu> Özel görüntü için kaynak grubu.
# 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

Mevcut sanal ağ Azure rolü örneği

Aşağıdaki örnek, mevcut bir sanal ağ görüntüsünü kullanmak ve dağıtmak için bir Azure rolü oluşturur. Ardından VM Görüntü Oluşturucusu için kullanıcı tarafından atanan yönetilen kimliğe özel rol verirsiniz.

Örnekteki değerlerin değiştirilmesini basitleştirmek için önce aşağıdaki değişkenleri ayarlayın. Değişkenlerinizi ayarlamak için yer tutucu ayarlarını değiştirin.

Ayar Açıklama
<Abonelik kimliği> Azure abonelik kimliğiniz.
<Kaynak grubu> Sanal ağ kaynak grubu
# 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 Depolama erişimi için yönetilen kimlik kullanma

Azure Depolama kimlik doğrulaması yapmak ve özel kapsayıcılar kullanmak istiyorsanız, VM Görüntü Oluşturucusu'na kullanıcı tarafından atanan bir yönetilen kimlik gerekir. VM Görüntü Oluşturucusu, Kimliği kullanarak Azure Depolama ile kimlik doğrulaması yapar.

Dekont

VM Görüntü Oluşturucusu yalnızca görüntü şablonunu gönderdiğiniz sırada kimliği kullanır. Derleme VM'sinin görüntü derlemesi sırasında kimliğe erişimi yoktur.

Kullanıcı tarafından atanan yönetilen kimliği oluşturmak için Azure CLI'yi kullanın:

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 Görüntü Oluşturucusu şablonunda kullanıcı tarafından atanan yönetilen kimliği sağlayın:

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

Aşağıdaki yer tutucu ayarlarını değiştirin:

Ayar Açıklama
<Bölge> Şablon bölgesi
<Kaynak grubu> Kaynak grubu
<hesap kapsayıcısı Depolama> Depolama hesabı kapsayıcı adı
<Abonelik kimliği> Azure aboneliği

Daha fazla bilgi için bkz. Azure Depolama'daki dosyalara erişmek için görüntü oluşturma ve kullanıcı tarafından atanan yönetilen kimliği kullanma. Depolama hesabına erişmek için kullanıcı tarafından atanan yönetilen kimliği oluşturmayı ve yapılandırmayı öğrenirsiniz.

Sonraki adımlar

Azure VM Image Builder'a genel bakış