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, a szolgáltatás engedélyt ad 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és 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élyre van szüksége 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. A következő 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ára, képek írására és Azure Storage-fiókok elérésére. Ön megadja az identitásengedélyt, hogy bizonyos műveleteket hajtson végre az előfizetésében.
Feljegyzés
A felhasználó által hozzárendelt felügyelt identitás a megfelelő módja annak, hogy engedélyeket adjon a képerőforrás-csoportoknak. Az egyszerű szolgáltatásnév 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ásait 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 terjesztsen, 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 azon az erőforráscsoporton, 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 meghibásodá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ágát 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 Galleryben 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ő rendszerképek testreszabásának engedélyezése
Ahhoz, hogy a VM Image Builder képeket hozzon létre a forrás egyéni rendszerképeiből, a szolgáltatásnak engedélyeznie kell a képek olvasását ezekben az erőforráscsoportokban. 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 azon az erőforráscsoporton, ahol a rendszerkép található.
Egy meglévő egyéni rendszerképből az alábbiakat hozhatja létre:
Microsoft.Compute/images/read
Az alábbiak szerint hozhat létre egy meglévő Azure Compute Gallery-verziót:
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 egy meglévő virtuális hálózat üzembe helyezésére és használatára az előfizetésben, így lehetővé téve a testreszabások hozzáférését a csatlakoztatott erőforrásokhoz.
A virtuális gépek 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 a VM Image Builder számára, hogy képeket olvasson az erőforráscsoport example-rg-1 erőforráscsoportjából, és képeket írjon az erőforráscsoport example-rg-2 erőforráscsoportba.
Példa egyéni rendszerkép Azure-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.
Ha egyszerűsíteni szeretné a példában szereplő értékek cseréjét, először állítsa be a következő változókat. Cserélje le a helyőrző beállításait 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örének példája
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.
Ha egyszerűsíteni szeretné a példában szereplő értékek cseréjét, először állítsa be a következő változókat. Cserélje le a helyőrző beállításait 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