Konfigurera Azure VM Image Builder-behörigheter med hjälp av Azure CLI
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
När du registrerar dig för Azure VM Image Builder får din prenumeration åtkomst till ett SPN (VM Image Builder Service Principal Name). Den här registreringen ger även tjänsten behörighet att skapa, hantera och ta bort en mellanlagringsresursgrupp. För avbildningsskapandeprocessen krävs även rolltilldelningen Deltagare i resursgruppen för mellanlagring.
Om du vill att VM Image Builder ska distribuera avbildningar måste du skapa en användartilldelad identitet i Azure med behörighet att läsa och skriva avbildningar. Du kanske till exempel vill distribuera avbildningar till hanterade avbildningar eller till Azure Compute Gallery. Om du har åtkomst till Azure Storage behöver den användartilldelade identitet som du skapar behörighet att läsa privata eller offentliga containrar.
Du måste konfigurera behörigheter och behörigheter innan du skapar en avbildning. I följande avsnitt beskrivs hur du konfigurerar möjliga scenarier med hjälp av Azure CLI.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Skapa en användartilldelad hanterad identitet
Vm Image Builder kräver att du skapar en användartilldelad hanterad identitet i Azure. Vm Image Builder använder den här identiteten för att läsa avbildningar, skriva avbildningar och få åtkomst till Azure Storage-konton. Du ger identiteten behörighet att utföra specifika åtgärder i din prenumeration.
Kommentar
Användartilldelad hanterad identitet är rätt sätt att bevilja behörigheter till avbildningsresursgrupperna. SPN är inaktuellt för detta ändamål.
I följande exempel visas hur du skapar en azure-användartilldelad hanterad identitet. Ersätt platshållarinställningarna för att ange variablerna.
Inställning | beskrivning |
---|---|
<Resursgrupp> | Den resursgrupp där du vill skapa den användartilldelade hanterade identiteten. |
identityName="aibIdentity"
imageResourceGroup=<Resource group>
az identity create \
--resource-group $imageResourceGroup \
--name $identityName
Mer information finns i Användartilldelad hanterad identitet i Azure.
Tillåt att VM Image Builder distribuerar avbildningar
För att VM Image Builder ska kunna distribuera avbildningar måste tjänsten tillåtas att mata in avbildningarna i resursgrupper. Om du vill bevilja de behörigheter som krävs skapar du en användartilldelad hanterad identitet och ger den behörighet till den resursgrupp där avbildningen skapas. Vm Image Builder har inte behörighet att komma åt resurser i andra resursgrupper i prenumerationen. Du måste vidta explicita åtgärder för att tillåta åtkomst för att förhindra att dina versioner misslyckas.
Du behöver inte ge den användartilldelade hanterade identitetsdeltagaren behörighet för resursgruppen för att distribuera avbildningar. Den användartilldelade hanterade identiteten behöver dock följande Azure-behörigheter Actions
i distributionsresursgruppen:
Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete
Om du vill distribuera till Azure Compute Gallery behöver du också:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write
Behörighet att anpassa befintliga avbildningar
För att VM Image Builder ska kunna skapa avbildningar från anpassade källavbildningar måste tjänsten kunna läsa avbildningarna i dessa resursgrupper. Om du vill bevilja nödvändiga behörigheter skapar du en användartilldelad hanterad identitet och ger den behörighet för resursgruppen där avbildningen finns.
Så här skapar du från en befintlig anpassad avbildning:
Microsoft.Compute/images/read
Så här skapar du från en befintlig Azure Compute Gallery-version:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Behörighet att anpassa avbildningar i dina virtuella nätverk
Vm Image Builder har möjlighet att distribuera och använda ett befintligt virtuellt nätverk i din prenumeration, vilket ger anpassningar åtkomst till anslutna resurser.
Du behöver inte ge den användartilldelade hanterade identitetsdeltagaren behörighet för resursgruppen för att distribuera en virtuell dator till ett befintligt virtuellt nätverk. Den användartilldelade hanterade identiteten behöver dock följande Azure-behörigheter Actions
för resursgruppen för virtuella nätverk:
Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action
Skapa en Azure-rolldefinition
I följande exempel skapas en Azure-rolldefinition från de åtgärder som beskrivs i föregående avsnitt. Exemplen tillämpas på resursgruppsnivå. Utvärdera och testa om exemplen är tillräckligt detaljerade för dina behov.
Bildåtgärderna tillåter läsning och skrivning. Bestäm vad som är lämpligt för din miljö. Skapa till exempel en roll för att tillåta vm Image Builder att läsa avbildningar från resursgruppen example-rg-1 och skriva avbildningar till resursgruppen example-rg-2.
Exempel på anpassad avbildning av Azure-roll
I följande exempel skapas en Azure-roll för att använda och distribuera en anpassad källbild. Sedan beviljar du den anpassade rollen till den användartilldelade hanterade identiteten för VM Image Builder.
För att förenkla bytet av värden i exemplet anger du följande variabler först. Ersätt platshållarinställningarna för att ange variablerna.
Inställning | beskrivning |
---|---|
<Prenumerations-ID> | ditt prenumerations-ID för Azure |
<Resursgrupp> | Resursgrupp för den anpassade avbildningen. |
# 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-rollexempel för befintligt virtuellt nätverk
I följande exempel skapas en Azure-roll för att använda och distribuera en befintlig virtuell nätverksbild. Sedan beviljar du den anpassade rollen till den användartilldelade hanterade identiteten för VM Image Builder.
För att förenkla bytet av värden i exemplet anger du följande variabler först. Ersätt platshållarinställningarna för att ange variablerna.
Inställning | beskrivning |
---|---|
<Prenumerations-ID> | ditt prenumerations-ID för Azure |
<Resursgrupp> | Resursgruppen för virtuellt nätverk |
# 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
Använda hanterad identitet för Azure Storage-åtkomst
Om du vill autentisera med Azure Storage och använda privata containrar behöver VM Image Builder en användartilldelad hanterad identitet. Vm Image Builder använder identiteten för att autentisera med Azure Storage.
Kommentar
Vm Image Builder använder bara identiteten när du skickar avbildningsmallen. Den virtuella byggdatorn har inte åtkomst till identiteten under avbildningsversionen.
Använd Azure CLI för att skapa den användartilldelade hanterade identiteten:
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>
Ange den användartilldelade hanterade identiteten i mallen Image Builder för virtuell dator:
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2020-02-14",
"location": "<Region>",
..
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<Image Builder ID>": {}
}
Ersätt följande platshållarinställningar:
Inställning | beskrivning |
---|---|
<Region> | Mallregion |
<Resursgrupp> | Resursgrupp |
<Container för lagringskonto> | Namn på lagringskontocontainer |
<Prenumerations-ID> | Azure-prenumeration |
Mer information finns i Skapa en avbildning och använda en användartilldelad hanterad identitet för att komma åt filer i Azure Storage. Du lär dig hur du skapar och konfigurerar den användartilldelade hanterade identiteten för åtkomst till ett lagringskonto.