Azure VM Image Builder-machtigingen configureren met behulp van de Azure CLI

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

Wanneer u zich registreert voor Azure VM Image Builder, krijgt uw abonnement toegang tot een SERVICE PRINCIPAL-naam (SPN) van VM Image Builder. Met deze registratie wordt ook de servicemachtiging geautoriseerd voor het maken, beheren en verwijderen van een faseringsresourcegroep. Voor het proces voor het bouwen van afbeeldingen is de roltoewijzing Inzender ook vereist in de faseringsresourcegroep.

Als u wilt dat VM Image Builder installatiekopieën distribueert, moet u een door de gebruiker toegewezen identiteit maken in Azure, met machtigingen voor het lezen en schrijven van installatiekopieën. U kunt bijvoorbeeld installatiekopieën distribueren naar beheerde installatiekopieën of naar azure Compute Gallery. Als u toegang hebt tot Azure Storage, heeft de door de gebruiker toegewezen identiteit die u maakt machtigingen nodig voor het lezen van privé- of openbare containers.

U moet machtigingen en bevoegdheden instellen voordat u een installatiekopieën maakt. In de volgende secties wordt beschreven hoe u mogelijke scenario's configureert met behulp van de Azure CLI.

Vereisten

Een door de gebruiker toegewezen beheerde identiteit maken

Voor VM Image Builder moet u een door de gebruiker toegewezen beheerde Identiteit van Azure maken. VM Image Builder gebruikt deze identiteit om installatiekopieën te lezen, installatiekopieën te schrijven en toegang te krijgen tot Azure-opslagaccounts. U verleent de identiteit toestemming om specifieke acties in uw abonnement uit te voeren.

Notitie

Door de gebruiker toegewezen beheerde identiteit is de juiste manier om machtigingen te verlenen aan de resourcegroepen van de installatiekopieën. De SPN is hiervoor afgeschaft.

In het volgende voorbeeld ziet u hoe u een door de gebruiker toegewezen beheerde azure-identiteit maakt. Vervang de instellingen van de tijdelijke aanduidingen om uw variabelen in te stellen.

Instelling Beschrijving
<Resourcegroep> De resourcegroep waaraan u de door de gebruiker toegewezen beheerde identiteit wilt maken.
identityName="aibIdentity"
imageResourceGroup=<Resource group>

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

Zie De door de gebruiker toegewezen beheerde identiteit van Azure voor meer informatie.

VM Image Builder toestaan om installatiekopieën te distribueren

Voor VM Image Builder om installatiekopieën te distribueren, moet de service de installatiekopieën mogen injecteren in resourcegroepen. Als u de vereiste machtigingen wilt verlenen, maakt u een door de gebruiker toegewezen beheerde identiteit en verleent u deze rechten voor de resourcegroep waarin de installatiekopie is gemaakt. VM Image Builder is niet gemachtigd om toegang te krijgen tot resources in andere resourcegroepen in het abonnement. U moet expliciete acties uitvoeren om toegang toe te staan, om te voorkomen dat uw builds mislukken.

U hoeft de door de gebruiker toegewezen inzenderrechten voor beheerde identiteiten niet toe te kennen aan de resourcegroep om afbeeldingen te distribueren. De door de gebruiker toegewezen beheerde identiteit heeft echter de volgende Azure-machtigingen Actions nodig in de distributieresourcegroep:

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

Als u wilt distribueren naar azure Compute Gallery, hebt u ook het volgende nodig:

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

Machtiging voor het aanpassen van bestaande installatiekopieën

De service moet de installatiekopieën in deze resourcegroepen mogen lezen om installatiekopieën te bouwen op basis van aangepaste broninstallatiekopieën. Als u de vereiste machtigingen wilt verlenen, maakt u een door de gebruiker toegewezen beheerde identiteit en verleent u deze rechten voor de resourcegroep waar de installatiekopieën zich bevinden.

U bouwt als volgt vanuit een bestaande aangepaste installatiekopieën:

Microsoft.Compute/images/read

U bouwt als volgt op basis van een bestaande versie van de Azure Compute Gallery:

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

Machtiging voor het aanpassen van installatiekopieën in uw virtuele netwerken

VM Image Builder biedt de mogelijkheid om een bestaand virtueel netwerk in uw abonnement te implementeren en te gebruiken, waardoor aanpassingen toegang hebben tot verbonden resources.

U hoeft de door de gebruiker toegewezen inzenderrechten voor beheerde identiteiten niet toe te kennen aan de resourcegroep om een virtuele machine te implementeren in een bestaand virtueel netwerk. De door de gebruiker toegewezen beheerde identiteit heeft echter de volgende Azure-machtigingen Actions nodig voor de resourcegroep van het virtuele netwerk:

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

Een Azure-roldefinitie maken

In de volgende voorbeelden wordt een Azure-roldefinitie gemaakt op basis van de acties die in de vorige secties zijn beschreven. De voorbeelden worden toegepast op het niveau van de resourcegroep. Evalueer en test of de voorbeelden gedetailleerd genoeg zijn voor uw vereisten.

De afbeeldingsacties staan lezen en schrijven toe. Bepaal wat geschikt is voor uw omgeving. Maak bijvoorbeeld een rol om VM Image Builder toe te staan installatiekopieën te lezen uit resourcegroep example-rg-1 en installatiekopieën te schrijven naar resourcegroep example-rg-2.

Voorbeeld van aangepaste azure-rol van installatiekopieën

In het volgende voorbeeld wordt een Azure-rol gemaakt voor het gebruik en distribueren van een aangepaste broninstallatiekopieën. Vervolgens verleent u de aangepaste rol aan de door de gebruiker toegewezen beheerde identiteit voor VM Image Builder.

Als u de vervanging van waarden in het voorbeeld wilt vereenvoudigen, stelt u eerst de volgende variabelen in. Vervang de instellingen van de tijdelijke aanduidingen om uw variabelen in te stellen.

Instelling Beschrijving
<Abonnements-id> Uw Azure-abonnements-id.
<Resourcegroep> Resourcegroep voor de aangepaste installatiekopieën.
# 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

Voorbeeld van een bestaande Azure-rol van een virtueel netwerk

In het volgende voorbeeld wordt een Azure-rol gemaakt voor het gebruik en distribueren van een bestaande installatiekopieën van een virtueel netwerk. Vervolgens verleent u de aangepaste rol aan de door de gebruiker toegewezen beheerde identiteit voor VM Image Builder.

Als u de vervanging van waarden in het voorbeeld wilt vereenvoudigen, stelt u eerst de volgende variabelen in. Vervang de instellingen van de tijdelijke aanduidingen om uw variabelen in te stellen.

Instelling Beschrijving
<Abonnements-id> Uw Azure-abonnements-id.
<Resourcegroep> De resourcegroep van het virtuele netwerk
# 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

Beheerde identiteit gebruiken voor Toegang tot Azure Storage

Als u wilt verifiëren met Azure Storage en privécontainers wilt gebruiken, heeft VM Image Builder een door de gebruiker toegewezen beheerde identiteit nodig. VM Image Builder gebruikt de identiteit voor verificatie met Azure Storage.

Notitie

VM Image Builder gebruikt alleen de identiteit op het moment dat u de installatiekopieënsjabloon verzendt. De build-VM heeft geen toegang tot de identiteit tijdens het bouwen van de installatiekopieën.

Gebruik de Azure CLI om de door de gebruiker toegewezen beheerde identiteit te maken:

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>

Geef in de VM Image Builder-sjabloon de door de gebruiker toegewezen beheerde identiteit op:

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

Vervang de volgende instellingen voor tijdelijke aanduidingen:

Instelling Beschrijving
<Regio> Sjabloonregio
<Resourcegroep> Resourcegroep
<Opslagaccountcontainer> Containernaam voor het opslagaccount
<Abonnements-id> Azure-abonnement

Zie Een installatiekopieën maken en een door de gebruiker toegewezen beheerde identiteit gebruiken voor toegang tot bestanden in Azure Storage voor meer informatie. U leert hoe u de door de gebruiker toegewezen beheerde identiteit maakt en configureert voor toegang tot een opslagaccount.

Volgende stappen

Overzicht van Azure VM Image Builder