Share 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 service toestemming om een faseringsresourcegroep te maken, te beheren en te verwijderen. De service heeft ook rechten om resources toe te voegen aan een resourcegroep, die vereist zijn voor de build van de installatiekopie. Tijdens een geslaagde registratie krijgt uw abonnement toegang tot een VM Image Builder Service Principal Name (SPN).

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, moet de door de gebruiker toegewezen identiteit die u maakt machtigingen hebben voor het lezen van persoonlijke 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 Azure-gebruiker toegewezen beheerde identiteit 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 voor dit doel afgeschaft.

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

Instelling Beschrijving
<Resourcegroep> De resourcegroep waarin 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 Door de gebruiker toegewezen beheerde identiteit van Azure voor meer informatie.

VM Image Builder toestaan om installatiekopieën te distribueren

Vm Image Builder kan alleen installatiekopieën distribueren als de service de installatiekopieën in resourcegroepen mag injecteren. 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 gebouwd. VM Image Builder heeft geen machtiging voor toegang tot resources in andere resourcegroepen in het abonnement. U moet expliciete acties ondernemen om toegang toe te staan, om te voorkomen dat uw builds mislukken.

U hoeft de door de gebruiker toegewezen inzenderrechten voor beheerde identiteiten voor de resourcegroep niet te verlenen om installatiekopieën 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 om bestaande installatiekopieën aan te passen

Vm Image Builder kan alleen installatiekopieën maken van aangepaste broninstallatiekopieën als de service de installatiekopieën in deze resourcegroepen kan lezen. 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 zich bevindt.

U bouwt als volgt op 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 heeft 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.

Met de afbeeldingsacties kunt u lezen en schrijven. 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 voor installatiekopieën

In het volgende voorbeeld wordt een Azure-rol gemaakt om een aangepaste broninstallatiekopieën te gebruiken en te distribueren. 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 aanduiding om uw variabelen in te stellen.

Instelling Beschrijving
<Subscription 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 bestaande Azure-rol voor virtueel netwerk

In het volgende voorbeeld wordt een Azure-rol gemaakt om een bestaande installatiekopieën van een virtueel netwerk te gebruiken en te distribueren. 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 aanduiding om uw variabelen in te stellen.

Instelling Beschrijving
<Subscription 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