Delen via


Azure VM Image Builder-machtigingen configureren met behulp van PowerShell

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

Wanneer u zich registreert voor Azure VM Image Builder, verleent dit de servicemachtiging voor het maken, beheren en verwijderen van een faseringsresourcegroep. De service heeft ook rechten om resources toe te voegen aan een resourcegroep, vereist voor de build van de installatiekopieën. Tijdens een geslaagde registratie krijgt uw abonnement toegang tot een SERVICE PRINCIPAL-naam (SPN) van vm Image Builder.

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 PowerShell.

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 Storage-accounts. 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.
## Add AZ PS module to support AzUserAssignedIdentity
Install-Module -Name Az.ManagedServiceIdentity

$parameters = @{
    Name = 'aibIdentity'
    ResourceGroupName = '<Resource group>'
}
# create identity
New-AzUserAssignedIdentity @parameters

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.
$sub_id = "<Subscription ID>"
# 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 a web request to download the sample JSON description
$sample_uri="https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleImageCreation.json"
$role_definition="aibRoleImageCreation.json"

Invoke-WebRequest -Uri $sample_uri -Outfile $role_definition -UseBasicParsing

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

# Update the JSON definition placeholders with variable values
((Get-Content -path $role_definition -Raw) -replace '<subscriptionID>',$sub_id) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace '<rgName>', $imageResourceGroup) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace 'Azure Image Builder Service Image Creation Role', $imageRoleDefName) | Set-Content -Path $role_definition

# Create a custom role from the aibRoleImageCreation.json description file. 
New-AzRoleDefinition -InputFile $role_definition

# Get the user-identity properties
$identityNameResourceId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).Id
$identityNamePrincipalId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).PrincipalId

# Grant the custom role to the user-assigned managed identity for Azure Image Builder.
$parameters = @{
    ObjectId = $identityNamePrincipalId
    RoleDefinitionName = $imageRoleDefName
    Scope = '/subscriptions/' + $sub_id + '/resourceGroups/' + $imageResourceGroup
}

New-AzRoleAssignment @parameters

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.
$sub_id = "<Subscription ID>"
$res_group = "<Resource group>"
$identityName = "aibIdentity"

# Use a web request to download the sample JSON description
$sample_uri="https://raw.githubusercontent.com/azure/azvmimagebuilder/master/solutions/12_Creating_AIB_Security_Roles/aibRoleNetworking.json"
$role_definition="aibRoleNetworking.json"

Invoke-WebRequest -Uri $sample_uri -Outfile $role_definition -UseBasicParsing

# Create a unique role name to avoid clashes in the same AAD domain
$timeInt=$(get-date -UFormat "%s")
$networkRoleDefName="Azure Image Builder Network Def"+$timeInt

# Update the JSON definition placeholders with variable values
((Get-Content -path $role_definition -Raw) -replace '<subscriptionID>',$sub_id) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace '<vnetRgName>', $res_group) | Set-Content -Path $role_definition
((Get-Content -path $role_definition -Raw) -replace 'Azure Image Builder Service Networking Role',$networkRoleDefName) | Set-Content -Path $role_definition

# Create a custom role from the aibRoleNetworking.json description file
New-AzRoleDefinition -InputFile $role_definition

# Get the user-identity properties
$identityNameResourceId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).Id
$identityNamePrincipalId=$(Get-AzUserAssignedIdentity -ResourceGroupName $imageResourceGroup -Name $identityName).PrincipalId

# Assign the custom role to the user-assigned managed identity for Azure Image Builder
$parameters = @{
    ObjectId = $identityNamePrincipalId
    RoleDefinitionName = $networkRoleDefName
    Scope = '/subscriptions/' + $sub_id + '/resourceGroups/' + $res_group
}

New-AzRoleAssignment @parameters

Volgende stappen

Overzicht van Azure VM Image Builder