Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce tutoriel vous guide tout au long de la création d’un runbook PowerShell dans Azure Automation qui utilise une identité managée pour interagir avec les ressources. Les Runbooks PowerShell sont basés sur Windows PowerShell. Une identité managée depuis Microsoft Entra ID permettant à votre runbook d’accéder facilement à d’autres ressources protégées par Microsoft Entra.
Dans ce tutoriel, vous allez apprendre à :
- Attribuer des autorisations aux identités managées
- Créer un runbook PowerShell
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Prérequis
Avant d’attribuer des autorisations à des identités managées, vérifiez que vous remplissez les conditions préalables suivantes :
- Un compte Azure Automation avec au moins une identité managée affectée par l’utilisateur. Pour plus d’informations, consultez Utilisation d’une identité managée affectée par l’utilisateur pour un compte Azure Automation.
- Modules Az :
Az.Accounts,Az.Automation,Az.ManagedServiceIdentityetAz.Computeimportés dans le compte Automation. Pour plus d’informations, consultez Importer des modules Az. - Le module PowerShell Azure Az installé sur votre ordinateur. Pour plus d'informations sur son installation ou sa mise à niveau, consultez Installer le module PowerShell Azure Az.
Az.ManagedServiceIdentityest un module en préversion qui n’est pas installé dans le cadre du module Az. Pour l’installer, exécutezInstall-Module -Name Az.ManagedServiceIdentity. - Une machine virtuelle Azure. Comme vous allez devoir l’arrêter et la démarrer, il ne doit pas s’agir d’une machine virtuelle de production.
- Une connaissance générale des runbooks Automation.
Attribuer des autorisations aux identités managées
Affectez des autorisations aux identités managées pour leur permettre d’arrêter et de démarrer une machine virtuelle.
Pour attribuer des autorisations aux identités managées, procédez comme suit :
Connectez-vous à Azure de manière interactive à l’aide de l’applet de commande Connect-AzAccount et suivez les instructions suivantes :
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not ($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>Entrez une valeur appropriée pour les variables ci-dessous, puis exécutez le script.
$resourceGroup = "resourceGroupName" # These values are used in this tutorial $automationAccount = "xAutomationAccount" $userAssignedManagedIdentity = "xUAMI"Utilisez la cmdlet PowerShell New-AzRoleAssignment pour affecter un rôle à l’identité managée affectée par le système.
$role1 = "DevTest Labs User" $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1La même attribution de rôle est nécessaire pour l'identité managée attribuée par l'utilisateur.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1Des autorisations supplémentaires pour l’identité gérée affectée par le système sont nécessaires pour exécuter les cmdlets
Get-AzUserAssignedIdentityetGet-AzAutomationAccountcomme dans ce tutoriel.$role2 = "Reader" New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role2
Mon premier Runbook PowerShell
Créez un runbook qui autorise l’exécution par l’une des identités managées. Le runbook démarre une machine virtuelle arrêtée ou arrête une machine virtuelle en cours d’exécution.
Pour créer un runbook PowerShell, procédez comme suit :
Connectez-vous au portail Azure et accédez à votre compte Automation.
Dans la page Vue d’ensemble , sélectionnez Essayer l’expérience d’environnement d’exécution, si ce n’est pas déjà le cas dans la nouvelle expérience.
Sous Automatisation de processus, sélectionnez Runbooks.
Sélectionnez Créer un runbook et procédez comme suit :
- Nommez le runbook
miTesting. - Dans la liste déroulante Type de runbook, sélectionnez PowerShell.
- Dans la liste déroulante Environnement d’exécution , sélectionnez l’environnement d’exécution existant ou créez-en avec Runtime PowerShell et la version 7.4.
- Entrez une Description applicable.
- Nommez le runbook
Sélectionnez Créer pour créer le runbook.
Dans l’éditeur de runbook, collez le code suivant :
Param( [string]$ResourceGroup, [string]$VMName, [string]$Method, [string]$UAMI ) $automationAccount = "xAutomationAccount" # Ensures you do not inherit an AzContext in your runbook $null = Disable-AzContextAutosave -Scope Process # Connect using a Managed Service Identity try { $AzureConnection = (Connect-AzAccount -Identity).context } catch { Write-Output "There is no system-assigned user identity. Aborting." exit } # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureConnection.Subscription -DefaultProfile $AzureConnection if ($Method -eq "SA") { Write-Output "Using system-assigned managed identity" } elseif ($Method -eq "UA") { Write-Output "Using user-assigned managed identity" # Connects using the Managed Service Identity of the named user-assigned managed identity $identity = Get-AzUserAssignedIdentity -ResourceGroupName $ResourceGroup -Name $UAMI -DefaultProfile $AzureContext # validates assignment only, not perms $AzAutomationAccount = Get-AzAutomationAccount -ResourceGroupName $ResourceGroup -Name $automationAccount -DefaultProfile $AzureContext if ($AzAutomationAccount.Identity.UserAssignedIdentities.Values.PrincipalId.Contains($identity.PrincipalId)) { $AzureConnection = (Connect-AzAccount -Identity -AccountId $identity.ClientId).context # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureConnection.Subscription -DefaultProfile $AzureConnection } else { Write-Output "Invalid or unassigned user-assigned managed identity" exit } } else { Write-Output "Invalid method. Choose UA or SA." exit } # Get current state of VM $status = (Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName -Status -DefaultProfile $AzureContext).Statuses[1].Code Write-Output "`r`n Beginning VM status: $status `r`n" # Start or stop VM based on current state if ($status -eq "Powerstate/deallocated") { Start-AzVM -Name $VMName -ResourceGroupName $ResourceGroup -DefaultProfile $AzureContext } elseif ($status -eq "Powerstate/running") { Stop-AzVM -Name $VMName -ResourceGroupName $ResourceGroup -DefaultProfile $AzureContext -Force } # Get new state of VM $status = (Get-AzVM -ResourceGroupName $ResourceGroup -Name $VMName -Status -DefaultProfile $AzureContext).Statuses[1].Code Write-Output "`r`n Ending VM status: $status `r`n `r`n" Write-Output "Account ID of current context: " $AzureContext.Account.IdDans l’éditeur, sur la ligne 8, modifiez la valeur de la variable
$automationAccountsi nécessaire.Sélectionnez Enregistrer, puis volet Test.
Renseignez les paramètres
RESOURCEGROUPetVMNAMEavec les valeurs appropriées. EntrezSApour le paramètreMETHOD, etxUAMIpour le paramètreUAMI. Le runbook va tenter de modifier l’état d’alimentation de votre machine virtuelle à l’aide de l’identité managée affectée par le système.Sélectionnez Démarrer. Une fois le runbook terminé, la sortie doit ressembler à ce qui suit :
Beginning VM status: PowerState/deallocated OperationId : 5b707401-f415-4268-9b43-be1f73ddc54b Status : Succeeded StartTime : 8/3/2021 10:52:09 PM EndTime : 8/3/2021 10:52:50 PM Error : Name : Ending VM status: PowerState/running Account ID of current context: MSI@50342Modifiez la valeur du paramètre
METHODenUA.Sélectionnez Démarrer. Le runbook va tenter de modifier l’état d’alimentation de votre machine virtuelle à l’aide de l’identité managée affectée par l’utilisateur. Une fois le runbook terminé, la sortie doit ressembler à ce qui suit :
Using user-assigned managed identity Beginning VM status: PowerState/running OperationId : 679fcadf-d0b9-406a-9282-66bc211a9fbf Status : Succeeded StartTime : 8/3/2021 11:06:03 PM EndTime : 8/3/2021 11:06:49 PM Error : Name : Ending VM status: PowerState/deallocated Account ID of current context: 9034f5d3-c46d-44d4-afd6-c78aeab837ea
Suppression des ressources
Pour supprimer les ressources qui ne sont plus nécessaires, exécutez le runbook suivant :
#Remove runbook
Remove-AzAutomationRunbook `
-ResourceGroupName $resourceGroup `
-AutomationAccountName $automationAccount `
-Name "miTesting" `
-Force
# Remove role assignments
Remove-AzRoleAssignment `
-ObjectId $UAMI `
-ResourceGroupName $resourceGroup `
-RoleDefinitionName $role1
Remove-AzRoleAssignment `
-ObjectId $SAMI `
-ResourceGroupName $resourceGroup `
-RoleDefinitionName $role2
Remove-AzRoleAssignment `
-ObjectId $SAMI `
-ResourceGroupName $resourceGroup `
-RoleDefinitionName $role1
Étapes suivantes
Dans ce tutoriel, vous avez créé un runbook PowerShell dans Azure Automation qui utilise une identité managée, plutôt que le compte d’identification, pour interagir avec les ressources. Pour obtenir un aperçu des runbooks PowerShell Workflow, consultez :