Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie leert u hoe u een PowerShell-runbook maakt in Azure Automation die gebruikmaakt van een beheerde identiteit om te communiceren met resources. PowerShell-runbooks zijn gebaseerd op Windows PowerShell. Met een beheerde identiteit van Microsoft Entra ID heeft uw runbook eenvoudig toegang tot andere Microsoft Entra beveiligde resources.
In deze zelfstudie leert u het volgende:
- Machtigingen toewijzen aan beheerde identiteiten
- Een PowerShell-runbook maken
Als u geen Azure-abonnement hebt, maakt u een vrij account voordat u begint.
Vereisten
Voordat u machtigingen toewijst aan beheerde identiteiten, moet u ervoor zorgen dat u aan deze vereisten voldoet:
- Een Azure Automation-account met ten minste één door de gebruiker toegewezen beheerde identiteit. Zie Gebruiker een door de gebruiker toegewezen beheerde identiteit voor een Azure Automation-account voor meer informatie.
- Az-modules:
Az.Accounts,Az.Automation,Az.ManagedServiceIdentityenAz.Computegeïmporteerd in het Automation-account. Zie Az-modules importeren voor meer informatie. - De Azure Az PowerShell-module geïnstalleerd op uw computer. Zie Het installeren van de Azure Az PowerShell-module als u deze wilt installeren of upgraden.
Az.ManagedServiceIdentityis een preview-module en niet geïnstalleerd als onderdeel van de Az-module. VoerInstall-Module -Name Az.ManagedServiceIdentityuit om het te installeren. - Een Azure virtuele machine. Aangezien u deze machine stopt en start, mag dit geen productie-VM zijn.
- Een algemene bekendheid met Automation-runbooks.
Machtigingen toewijzen aan beheerde identiteiten
Wijs machtigingen toe aan de beheerde identiteiten zodat ze een virtuele machine kunnen stoppen en starten.
Voer de volgende stappen uit om machtigingen toe te wijzen aan beheerde identiteiten:
Meld u aan bij Azure interactief met behulp van de cmdlet Connect-AzAccount en volg de instructies:
# 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>Voer een geschikte waarde in voor de onderstaande variabelen en voer vervolgens het script uit.
$resourceGroup = "resourceGroupName" # These values are used in this tutorial $automationAccount = "xAutomationAccount" $userAssignedManagedIdentity = "xUAMI"Gebruik de PowerShell-cmdlet New-AzRoleAssignment om een rol toe te wijzen aan de door het systeem toegewezen beheerde identiteit.
$role1 = "DevTest Labs User" $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1Dezelfde roltoewijzing is nodig voor de door de gebruiker toegewezen beheerde identiteit.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1Aanvullende machtigingen voor de door het systeem toegewezen beheerde identiteit zijn nodig om cmdlets
Get-AzUserAssignedIdentityuit te voeren enGet-AzAutomationAccountzoals in deze zelfstudie wordt gebruikt.$role2 = "Reader" New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role2
PowerShell-runbook maken
Maak een runbook dat uitvoering door beide beheerde identiteiten mogelijk maakt. Het runbook start een gestopte VM of stopt een actieve VM.
Voer de volgende stappen uit om een PowerShell-runbook te maken:
Meld u aan bij de Azure-portal en navigeer naar uw Automation-account.
Selecteer op de pagina Overzichtde optie Runtime-omgeving uitproberen, als deze nog niet in de nieuwe ervaring staat.
Selecteer onder Procesautomatisering de optie Runbooks.
Selecteer Een runbook maken en ga als volgt te werk:
- Geef het runbook
miTestingeen naam. - Selecteer PowerShell in de vervolgkeuzelijst Runbooktype.
- Selecteer in de vervolgkeuzelijst Runtime-omgevingde bestaande Runtime-omgeving of maak een nieuwe met Runtime PowerShell en versie 7.4.
- Voer een toepasselijke beschrijving in.
- Geef het runbook
Selecteer Maken om het runbook te maken.
Plak de volgende code in de runbookeditor:
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.IdWijzig in de editor op regel 8 de waarde voor de
$automationAccountvariabele indien nodig.Selecteer Opslaan en vervolgens Testvenster.
Vul de parameters
RESOURCEGROUPenVMNAMEde juiste waarden in. VoerSAin voor deMETHODparameter enxUAMIvoor deUAMIparameter. Het runbook probeert de energiestatus van uw VIRTUELE machine te wijzigen met behulp van de door het systeem toegewezen beheerde identiteit.Selecteer Starten. Zodra het runbook is voltooid, ziet de uitvoer er ongeveer als volgt uit:
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@50342Wijzig de waarde voor de
METHODparameter inUA.Selecteer Starten. Het runbook probeert de energiestatus van uw VIRTUELE machine te wijzigen met behulp van de door de gebruiker toegewezen beheerde identiteit. Zodra het runbook is voltooid, ziet de uitvoer er ongeveer als volgt uit:
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
De resources opschonen
Voer het volgende runbook uit om resources te verwijderen die niet meer nodig zijn:
#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
Volgende stappen
In deze zelfstudie hebt u in Azure Automation een PowerShell-runbook gemaakt dat gebruikmaakt van een beheerde identiteit, in plaats van een Run As-account om met bronnen te communiceren. Zie voor een overzicht van PowerShell Workflow-runbooks:
- Voor het oplossen van problemen met beheerde identiteiten tijdens de creatie van een PowerShell-runbook, zie Troubleshoot Azure Automation managed identity issues.