Azure VM Image Builder-engedélyek konfigurálása a PowerShell használatával

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

Amikor regisztrál az Azure-beli virtuálisgép-rendszerkép-készítőre, ez engedélyt ad a szolgáltatásnak egy átmeneti erőforráscsoport létrehozására, kezelésére és törlésére. A szolgáltatás jogosult erőforrások hozzáadására is egy erőforráscsoporthoz, amely a rendszerkép összeállításához szükséges. A sikeres regisztráció során az előfizetése hozzáférést kap a VM Image Builder szolgáltatásnévhez (SPN).

Ha azt szeretné, hogy a VM Image Builder lemezképeket terjesszen, létre kell hoznia egy felhasználó által hozzárendelt identitást az Azure-ban, amely jogosult képek olvasására és írására. Előfordulhat például, hogy lemezképeket szeretne terjeszteni felügyelt képekre vagy az Azure Compute Gallerybe. Ha az Azure Storage-hoz fér hozzá, akkor a létrehozott felhasználó által hozzárendelt identitásnak engedélyekkel kell rendelkeznie a privát vagy nyilvános tárolók olvasásához.

A rendszerkép létrehozása előtt be kell állítania az engedélyeket és a jogosultságokat. Az alábbi szakaszok ismertetik, hogyan konfigurálhatók a lehetséges forgatókönyvek a PowerShell használatával.

Felhasználó által hozzárendelt felügyelt identitás létrehozása

A VM Image Builder használatához létre kell hoznia egy Azure-felhasználó által hozzárendelt felügyelt identitást. A VM Image Builder ezt az identitást használja képek olvasásához, képek írásához és Azure Storage-fiókok eléréséhez. Engedélyt ad az identitásnak arra, hogy adott műveleteket hajtson végre az előfizetésben.

Megjegyzés

A felhasználó által hozzárendelt felügyelt identitás a megfelelő módja annak, hogy engedélyeket adjon a rendszerkép-erőforráscsoportoknak. Az SPN elavult erre a célra.

Az alábbi példa bemutatja, hogyan hozhat létre azure-beli felhasználó által hozzárendelt felügyelt identitást. Cserélje le a helyőrző beállításokat a változók beállításához.

Beállítás Leírás
<Erőforráscsoport> Az az erőforráscsoport, amelyben létre szeretné hozni a felhasználó által hozzárendelt felügyelt identitást.
## Add AZ PS module to support AzUserAssignedIdentity
Install-Module -Name Az.ManagedServiceIdentity

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

További információ: Azure felhasználó által hozzárendelt felügyelt identitás.

Képek terjesztésének engedélyezése a VM Image Builder számára

Ahhoz, hogy a VM Image Builder lemezképeket terjesszen, a szolgáltatásnak engedélyeznie kell a képek erőforráscsoportokba való beszúrását. A szükséges engedélyek megadásához hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, és adjon neki jogosultságokat abban az erőforráscsoportban, ahol a rendszerkép létrejön. A VM Image Builder nem rendelkezik engedéllyel az előfizetés más erőforráscsoportjaiban lévő erőforrások eléréséhez. Explicit műveleteket kell végrehajtania a hozzáférés engedélyezéséhez, hogy megakadályozza a buildek meghiúsulását.

A rendszerképek terjesztéséhez nem kell megadnia a felhasználó által hozzárendelt felügyelt identitás közreműködői jogosultságokat az erőforráscsoporton. A felhasználó által hozzárendelt felügyelt identitásnak azonban a következő Azure-engedélyekre Actions van szüksége a terjesztési erőforráscsoportban:

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

Ha az Azure Compute Gallerybe szeretne terjeszteni, a következőkre is szüksége van:

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

Meglévő lemezképek testreszabásának engedélyezése

Ahhoz, hogy a VM Image Builder képeket állítson össze a forrás egyéni rendszerképeiből, a szolgáltatásnak engedélyeznie kell a képek beolvasását ezekbe az erőforráscsoportokba. A szükséges engedélyek megadásához hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, és adjon neki jogosultságokat abban az erőforráscsoportban, ahol a rendszerkép található.

Az alábbiak szerint hozhat létre egy meglévő egyéni rendszerképet:

Microsoft.Compute/images/read

A buildelés egy meglévő Azure Compute Gallery-verzióból történik:

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

Képek testreszabásának engedélyezése a virtuális hálózatokon

A VM Image Builder képes üzembe helyezni és használni egy meglévő virtuális hálózatot az előfizetésben, így lehetővé téve a testreszabások számára a csatlakoztatott erőforrásokhoz való hozzáférést.

A virtuális gép meglévő virtuális hálózaton való üzembe helyezéséhez nem kell a felhasználó által hozzárendelt felügyelt identitás közreműködői jogosultságokat biztosítani az erőforráscsoporton. A felhasználó által hozzárendelt felügyelt identitásnak azonban a következő Azure-engedélyekre Actions van szüksége a virtuális hálózati erőforráscsoporton:

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

Azure-szerepkördefiníció létrehozása

Az alábbi példák egy Azure-szerepkördefiníciót hoznak létre az előző szakaszokban ismertetett műveletekből. A példákat az erőforráscsoport szintjén alkalmazza a rendszer. Értékelje ki és tesztelje, hogy a példák elég részletesek-e a követelményekhez.

A képműveletek lehetővé teszik az olvasást és az írást. Döntse el, hogy mi felel meg a környezetének. Hozzon létre például egy szerepkört, amely lehetővé teszi, hogy a VM Image Builder beolvassa a example-rg-1 erőforráscsoport képeit, és képeket írjon a example-rg-2 erőforráscsoportba.

Példa egyéni rendszerkép azure-beli szerepkörre

Az alábbi példa létrehoz egy Azure-szerepkört egy egyéni forrásrendszerkép használatához és terjesztéséhez. Ezután adja meg az egyéni szerepkört a VM Image Builder felhasználó által hozzárendelt felügyelt identitásának.

A példában szereplő értékek cseréjének egyszerűsítéséhez először állítsa be a következő változókat. Cserélje le a helyőrző beállításokat a változók beállításához.

Beállítás Leírás
<Előfizetés azonosítója> Az Azure-előfizetés azonosítója.
<Erőforráscsoport> Az egyéni rendszerkép erőforráscsoportja.
$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

Meglévő virtuális hálózat azure-beli szerepköre – példa

Az alábbi példa létrehoz egy Azure-szerepkört egy meglévő virtuális hálózati rendszerkép használatához és terjesztéséhez. Ezután adja meg az egyéni szerepkört a VM Image Builder felhasználó által hozzárendelt felügyelt identitásának.

A példában szereplő értékek cseréjének egyszerűsítéséhez először állítsa be a következő változókat. Cserélje le a helyőrző beállításokat a változók beállításához.

Beállítás Leírás
<Előfizetés azonosítója> Az Azure-előfizetés azonosítója.
<Erőforráscsoport> A virtuális hálózati erőforráscsoport.
$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

Következő lépések

Az Azure-beli VM Image Builder áttekintése