Configurer les autorisations d’Azure VM Image Builder avec Azure CLI
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Lorsque vous vous inscrivez à Azure VM Image Builder, votre abonnement obtient l’accès à un nom de principal du service (SPN) VM Image Builder. Cette inscription autorise également le service à créer, gérer et supprimer un groupe de ressources intermédiaire. Pour le processus de génération d’images, l’attribution du rôle Contributeur est également requise au niveau du groupe de ressources intermédiaire.
Si vous souhaitez qu’Azure VM Image Builder distribue des images, vous devez créer une identité affectée par l’utilisateur dans Azure, avec des autorisations pour lire et écrire des images. Par exemple, vous pouvez distribuer des images à des images managées ou à Azure Compute Gallery. Si vous accédez au stockage Azure, l’identité attribuée par l’utilisateur que vous créez nécessite des autorisations pour lire des conteneurs privés ou publics.
Vous devez configurer les autorisations et les privilèges avant de générer une image. Les sections suivantes détaillent comment configurer les scénarios possibles à l’aide de l’Azure CLI.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Créer une identité managée attribuée par l’utilisateur
Azure VM Image Builder vous oblige à créer une identité managée affectée par l’utilisateur Azure. Azure VM Image Builder utilise cette identité pour lire les images, écrire les images et accéder aux comptes de stockage Azure. Vous octroyez l’autorisation d’identité pour effectuer des actions spécifiques dans votre abonnement.
Notes
L’identité managée affectée par l’utilisateur est la bonne façon d’accorder des autorisations aux groupes de ressources d’images. Le SPN est déconseillé à cet effet.
L’exemple suivant montre comment créer une identité managée attribuée par l’utilisateur Azure. Remplacez les paramètres d’espaces réservés pour définir vos variables.
Paramètre | Description |
---|---|
<Groupe de ressources> | Le groupe de ressources dans lequel vous souhaitez créer l’identité managée attribuée par l'utilisateur. |
identityName="aibIdentity"
imageResourceGroup=<Resource group>
az identity create \
--resource-group $imageResourceGroup \
--name $identityName
Pour plus d’informations, voir Identité managée affectée par l’utilisateur Azure.
Autoriser Azure VM Image Builder à distribuer des images
Pour que Azure Image Builder distribue des images, le service Azure Image Builder doit être autorisé à injecter les images dans des groupes de ressources. Pour octroyer les autorisations requises, vous devez créer une identité managée attribuée par l’utilisateur et lui octroyer des droits sur le groupe de ressources dans lequel l’image est générée. Azure VM Image Builder ne dispose pas d’autorisation d’accès aux ressources d’autres groupes de ressources dans l’abonnement. Vous devez effectuer des actions explicites pour permettre l’accès afin d’éviter l’échec de vos builds.
Vous n’avez pas besoin d’octroyer au contributeur d’identités managées attribuées par l’utilisateur des droits sur le groupe de ressources pour distribuer des images. Toutefois, l’identité managée attribuée par l’utilisateur a besoin des autorisations Actions
Azure suivantes dans le groupe de ressources de distribution :
Microsoft.Compute/images/write
Microsoft.Compute/images/read
Microsoft.Compute/images/delete
Si vous souhaitez distribuer à Azure Compute Gallery, vous avez également besoin des éléments suivants :
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Microsoft.Compute/galleries/images/versions/write
Autorisation de personnaliser des images existantes
Pour qu’Azure VM Image Builder génère des images personnalisées sources le service doit être autorisé à lire les images dans ces groupes de ressources. Pour octroyer les autorisations requises, créez une identité managée attribuée par l’utilisateur et octroyez-lui des droits sur le groupe de ressources dans lequel se trouve l’image.
Voici comment créer à partir d’une image personnalisée existante :
Microsoft.Compute/images/read
Voici comment générer des images à partir d’une version existante d’Azure Compute Gallery :
Microsoft.Compute/galleries/read
Microsoft.Compute/galleries/images/read
Microsoft.Compute/galleries/images/versions/read
Autorisation de personnaliser des images sur vos réseaux virtuels
Azure VM Image Builder a la capacité de déployer et d’utiliser un réseau virtuel existant dans votre abonnement, ce qui permet aux personnalisations d’accéder aux ressources connectées.
Vous n’avez pas besoin d’octroyer au contributeur d’identités managées attribuées par l’utilisateur des droits sur le groupe de ressources pour déployer une machine virtuelle sur le réseau virtuel existant. Toutefois, l’identité managée attribuée par l’utilisateur a besoin des autorisations Actions
Azure suivantes dans le groupe de ressources du réseau virtuel :
Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action
Créer une définition de rôle Azure
Les exemples suivants créent une définition de rôle Azure à partir des actions décrites dans les sections précédentes. Les exemples sont appliqués au niveau du groupe de ressources. Évaluez et testez si les exemples sont suffisamment granulaires pour répondre à vos exigences.
Les actions d’image autorisent la lecture et l’écriture. Décidez des éléments appropriés pour votre environnement. Par exemple, créez un rôle pour permettre à Azure VM Image Builder de lire des images à partir du groupe de ressources exemple-rg-1 et d’écrire des images dans le groupe de ressources exemple-rg-2.
Exemple de rôle d’image personnalisée Azure
L’exemple suivant crée un rôle Azure pour utiliser et distribuer une image personnalisée source. Vous octroyez ensuite le rôle personnalisé à l’identité managée attribuée par l’utilisateur pour Azure VM Image Builder.
Pour simplifier le remplacement de valeurs dans l’exemple, définissez les variables suivantes en premier. Remplacez les paramètres d’espaces réservés pour définir vos variables.
Paramètre | Description |
---|---|
<Identifiant d’abonnement> | Votre ID d’abonnement Azure. |
<Groupe de ressources> | Groupes de ressources pour l’image personnalisée. |
# 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
Exemple de rôle Azure de réseau virtuel existant
L’exemple suivant crée un rôle Azure pour utiliser et distribuer une image du réseau virtuel existant. Vous octroyez ensuite le rôle personnalisé à l’identité managée attribuée par l’utilisateur pour Azure VM Image Builder.
Pour simplifier le remplacement de valeurs dans l’exemple, définissez les variables suivantes en premier. Remplacez les paramètres d’espaces réservés pour définir vos variables.
Paramètre | Description |
---|---|
<Identifiant d’abonnement> | Votre ID d’abonnement Azure. |
<Groupe de ressources> | Groupe de ressources de réseau virtuel |
# 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
Utilisation de l’identité managée pour l’accès au Stockage Azure
Si vous voulez authentifier avec le stockage Azure et utiliser des conteneurs privés, Azure VM Image Builder a besoin d’une identité managée attribuée par l’utilisateur. Azure VM Image Builder utilise l’identité pour authentifier avec Stockage Azure.
Notes
Azure VM Image Builder utilise uniquement l’identité au moment où vous envoyez le modèle d’image. La machine virtuelle de build n’a pas accès à l’identité pendant la génération de l’image.
Utilisez l’interface Azure CLI pour créer l’identité managée attribuée par l’utilisateur :
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>
Dans le modèle Azure VM Image Builder, vous devez fournir l’identité managée attribuée par l’utilisateur :
"type": "Microsoft.VirtualMachineImages/imageTemplates",
"apiVersion": "2020-02-14",
"location": "<Region>",
..
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<Image Builder ID>": {}
}
Remplacez les paramètres d’espaces réservés suivants :
Paramètre | Description |
---|---|
<Région> | Région du modèle |
<Groupe de ressources> | Resource group |
<Conteneur de comptes de stockage> | Nom du conteneur de compte de stockage |
<Identifiant d’abonnement> | Abonnement Azure |
Pour plus d’informations, consultez Créer une image et utiliser une identité managée affectée par l’utilisateur pour accéder aux fichiers dans Stockage Azure. Vous apprenez comment créer et configurer l’identité managée affectée par l’utilisateur pour accéder à un compte de stockage.