Konfigurieren von Azure VM Image Builder-Berechtigungen mithilfe der Azure CLI
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
Wenn Sie sich für Azure VM Image Builder registrieren, erhält Ihr Abonnement Zugriff auf einen Dienstprinzipalnamen (Service Principal Name, SPN) für den VM Image Builder-Dienst. Diese Registrierung gewährt auch die Dienstberechtigungen zum Erstellen, Verwalten und Löschen einer Ressourcengruppe für das Staging. Für die Imageerstellung ist auch die Rollenzuweisung „Mitwirkender“ in der Stagingressourcengruppe erforderlich.
Wenn Sie möchten, dass VM Image Builder Images verteilt, müssen Sie in Azure eine benutzerseitig zugewiesene Identität erstellen, die über Lese- und Schreibberechtigungen für Images verfügt. Sie können zum Beispiel Images an verwaltete Images oder an Azure Compute Gallery verteilen. Wenn Sie auf Azure Storage zugreifen, benötigt die von Ihnen erstellte benutzerseitig zugewiesene Identität Berechtigungen zum Lesen privater oder öffentlicher Container.
Vor dem Erstellen eines Images müssen Berechtigungen und Rechte eingerichtet werden. In den folgenden Abschnitten erfahren Sie, wie mögliche Szenarien mithilfe der Azure CLI konfiguriert werden.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
VM Image Builder erfordert, dass Sie eine in Azure benutzerseitig zugewiesene verwaltete Identität erstellen. VM Image Builder verwendet diese Identität, um Images zu lesen, Images zu schreiben und auf Azure-Speicherkonten zuzugreifen. Sie gewähren der Identität die Berechtigung, bestimmte Aktionen für Ihr Abonnement ausführen zu dürfen.
Hinweis
Die benutzerseitig zugewiesene verwaltete Identität ist die richtige Möglichkeit, Berechtigungen für die Imageressourcengruppen zu erteilen. Der SPN ist für diesen Zweck als veraltet markiert.
Im folgenden Beispiel sehen Sie, wie Sie eine in Azure benutzerseitig zugewiesene verwaltete Identität erstellen. Ersetzen Sie die Platzhaltereinstellungen, um Ihre Variablen festzulegen.
Einstellung | BESCHREIBUNG |
---|---|
<Ressourcengruppe> | Die Ressourcengruppe, in der die benutzerseitig verwaltete Identität erstellt werden soll. |
identityName="aibIdentity"
imageResourceGroup=<Resource group>
az identity create \
--resource-group $imageResourceGroup \
--name $identityName
Weitere Informationen finden Sie unter Benutzerseitig zugewiesene verwaltete Azure-Identität.
Berechtigungen für VM Image Builder zum Verteilen von Images
Damit VM Image Builder Images verteilen kann, muss der Dienst berechtigt sein, die Images in Ressourcengruppen einzufügen. Zum Gewähren der erforderlichen Berechtigungen erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität und erteilen ihr Rechte für die Ressourcengruppe, in der das Image erstellt wird. Azure VM Image Builder hat keine Berechtigung, auf Ressourcen in anderen Ressourcengruppen des Abonnements zuzugreifen. Sie müssen explizite Aktionen ausführen, um den Zugriff zu gestatten, damit Fehler für Ihre Builds verhindert werden.
Sie müssen der benutzerseitig zugewiesenen verwalteten Identität keine Berechtigungen eines Mitwirkenden für die Ressourcengruppe zuweisen, damit Images verteilt werden können. Die benutzerseitig zugewiesene verwaltete Identität benötigt jedoch die folgenden Actions
-Berechtigungen in Azure in der Verteilungsressourcengruppe:
Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete
Wenn Sie die Verteilung über Azure Compute Gallery vornehmen möchten, benötigen Sie auch Folgendes:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write
Berechtigung zum Anpassen vorhandener Images
Damit VM Image Builder Images aus benutzerdefinierten Quellimages erstellen kann, muss der Dienst über die Berechtigung verfügen, die Images in diese Ressourcengruppen zu lesen. Zum Gewähren der erforderlichen Berechtigungen erstellen Sie eine benutzerseitig zugewiesene verwaltete Identität und erteilen ihr Rechte für die Ressourcengruppe, in der sich das Image befindet.
So führen Sie den Buildvorgang aus einem vorhandenen benutzerdefinierten Image aus:
Microsoft.Compute/images/read
So führen Sie den Buildvorgang aus einer vorhandenen Azure Compute Gallery-Version aus:
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Berechtigung zum Anpassen von Images in Ihren virtuellen Netzwerken
VM Image Builder ist in der Lage, ein vorhandenes virtuelles Netzwerk in Ihrem Abonnement bereitzustellen und zu nutzen. Insofern ist der Zugriff für Anpassungen für verknüpfte Ressourcen möglich.
Sie müssen der benutzerseitig zugewiesenen verwalteten Identität keine Berechtigungen eines Mitwirkenden für die Ressourcengruppe zuweisen, damit eine VM für ein vorhandenes virtuelles Netzwerk bereitgestellt werden kann. Die benutzerseitig zugewiesene verwaltete Identität benötigt jedoch die folgenden Actions
-Berechtigungen in Azure für die Ressourcengruppe des virtuellen Netzwerks:
Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action
Erstellen einer Rollendefinition in Azure
Die folgenden Beispiele erstellen eine Rollendefinition in Azure auf Grundlage der Aktionen, die in den vorherigen Abschnitten beschrieben wurden. Diese Beispiele werden auf Ebene der Ressourcengruppe angewendet. Bewerten und testen Sie, ob die Granularität der Beispiele ausreichend für Ihre Anforderungen ist.
Die Aktionen für Images ermöglichen Lese- und Schreibvorgänge. Entscheiden Sie, was für Ihre Umgebung geeignet ist. Erstellen Sie beispielsweise eine Rolle, die es VM Image Builder ermöglicht, Images aus der Ressourcengruppe example-rg-1 zu lesen und Images in die Ressourcengruppe example-rg-2 zu schreiben.
Beispiel für eine benutzerdefinierte Rolle für ein Image in Azure
Im folgenden Beispiel wird eine Azure-Rolle erstellt, die für Verwendung und Verteilung eines benutzerdefinierten Quellimages verwendet wird. Dann weisen Sie die benutzerdefinierte Rolle der benutzerseitig zugewiesenen verwalteten Identität für VM Image Builder zu.
Zur Vereinfachung der Ersetzung der Werte im Beispiel legen Sie die folgenden Variablen zuerst fest. Ersetzen Sie die Platzhaltereinstellungen, um Ihre Variablen festzulegen.
Einstellung | BESCHREIBUNG |
---|---|
<Abonnement-ID> | die Azure-Abonnement-ID |
<Ressourcengruppe> | Ressourcengruppe für das benutzerdefinierte Image. |
# 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
Beispiel für eine vorhandene Azure-Rolle für das virtuelle Netzwerk
Im folgenden Beispiel wird eine Azure-Rolle erstellt, die für Verwendung und Verteilung eines vorhandenen Images des virtuellen Netzwerks verwendet wird. Dann weisen Sie die benutzerdefinierte Rolle der benutzerseitig zugewiesenen verwalteten Identität für VM Image Builder zu.
Zur Vereinfachung der Ersetzung der Werte im Beispiel legen Sie die folgenden Variablen zuerst fest. Ersetzen Sie die Platzhaltereinstellungen, um Ihre Variablen festzulegen.
Einstellung | BESCHREIBUNG |
---|---|
<Abonnement-ID> | die Azure-Abonnement-ID |
<Ressourcengruppe> | Die Ressourcengruppe für das virtuelle Netzwerk |
# 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
Verwenden der verwalteten Identität für den Zugriff auf Azure Storage
Wenn Sie Authentifizierung mit Azure Storage und die Verwendung privater Container wünschen, benötigt VM Image Builder eine benutzerseitig zugewiesene verwaltete Identität. VM Image Builder verwendet die Identität für die Authentifizierung mit Azure Storage.
Hinweis
VM Image Builder verwendet die Identität nur zu dem Zeitpunkt, zu dem Sie die Imagevorlage übermitteln. Die Build-VM verfügt während der Imageerstellung nicht über Zugriff auf den Imagebuild.
Verwenden Sie die Azure CLI, um die benutzerseitig zugewiesene verwaltete Identität zu erstellen:
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>
Geben Sie in der VM Image Builder-Vorlage die benutzerseitig zugewiesene verwaltete Identität an:
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2020-02-14",
"location": "<Region>",
..
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<Image Builder ID>": {}
}
Ersetzen Sie die folgenden Platzhaltereinstellungen:
Einstellung | BESCHREIBUNG |
---|---|
<Region> | Region der Vorlage |
<Ressourcengruppe> | Resource group |
<Speicherkontocontainer> | Name des Containers mit dem Speicherkonto |
<Abonnement-ID> | Azure-Abonnement |
Weitere Informationen finden Sie unterErstellen eines Images und Verwenden einer benutzerseitig zugewiesenen verwalteten Identität zum Zugreifen auf Dateien in Azure Storage. Sie erfahren, wie Sie die benutzerseitig zugewiesene verwaltete Identität erstellen und für den Zugriff auf ein Speicherkonto konfigurieren.