Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten samouczek przeprowadzi Cię przez proces tworzenia runbooka PowerShell w Azure Automation, który korzysta z zarządzanej tożsamości aby wchodzić w interakcję z zasobami. Runbooki programu PowerShell są oparte na Windows PowerShell. Zarządzana tożsamość z Microsoft Entra ID umożliwia runbookowi łatwe uzyskiwanie dostępu do chronionych zasobów Microsoft Entra.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Przypisywanie uprawnień do tożsamości zarządzanych
- Tworzenie elementu runbook programu PowerShell
Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz konto free.
Wymagania wstępne
Przed przypisaniem uprawnień do tożsamości zarządzanych upewnij się, że zostały spełnione następujące wymagania wstępne:
- Konto Azure Automation z co najmniej jedną tożsamością zarządzaną przypisaną przez użytkownika. Aby uzyskać więcej informacji, zobacz Używanie tożsamości zarządzanej przypisanej użytkownikowi w koncie Azure Automation.
- Moduły Az:
Az.Accounts,Az.Automation,Az.ManagedServiceIdentityiAz.Computezaimportowane na konto usługi Automation. Aby uzyskać więcej informacji, zobacz Importuj moduły platformy Azure. - Na Twojej maszynie zainstalowany jest moduł Azure Az PowerShell. Aby zainstalować lub uaktualnić, zobacz Jak zainstalować moduł Azure Az programu PowerShell.
Az.ManagedServiceIdentityjest modułem w wersji zapoznawczej i nie jest zainstalowany w ramach modułu Az. Aby go zainstalować, uruchom polecenieInstall-Module -Name Az.ManagedServiceIdentity. - Maszyna wirtualna Azure. Ponieważ zatrzymasz i uruchomisz tę maszynę, nie powinna być to produkcyjna maszyna wirtualna.
- Ogólna znajomość runbooków Automation.
Przypisywanie uprawnień do tożsamości zarządzanych
Przypisz uprawnienia do tożsamości zarządzanych, aby umożliwić im zatrzymywanie i uruchamianie maszyny wirtualnej.
Aby przypisać uprawnienia do tożsamości zarządzanych, wykonaj następujące kroki:
Zaloguj się do Azure interaktywnie przy użyciu polecenia cmdlet Connect-AzAccount i postępuj zgodnie z instrukcjami:
# 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>Wprowadź odpowiednią wartość dla poniższych zmiennych, a następnie wykonaj skrypt.
$resourceGroup = "resourceGroupName" # These values are used in this tutorial $automationAccount = "xAutomationAccount" $userAssignedManagedIdentity = "xUAMI"Użyj cmdletu PowerShell New-AzRoleAssignment, aby przypisać rolę do tożsamości zarządzanej przypisanej przez system.
$role1 = "DevTest Labs User" $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1To samo przypisanie roli jest wymagane dla tożsamości zarządzanej przypisanej przez użytkownika.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1Dla tożsamości zarządzanej przypisanej przez system potrzebne są dodatkowe uprawnienia do wykonywania poleceń cmdlet
Get-AzUserAssignedIdentityiGet-AzAutomationAccountużywanych w tym samouczku.$role2 = "Reader" New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role2
Stwórz Runbook programu PowerShell
Utwórz runbook, który umożliwi wykonanie przy użyciu dowolnej tożsamości zarządzanej. Element Runbook uruchomi zatrzymaną maszynę wirtualną lub zatrzyma uruchomioną maszynę wirtualną.
Aby utworzyć Runbook programu PowerShell, wykonaj następujące kroki:
Zaloguj się do portalu Azure i przejdź do konta usługi Automation.
Na stronie Przegląd wybierz pozycję Wypróbuj nowe środowisko uruchomieniowe, jeśli jeszcze z niego nie korzystasz.
W obszarze Automatyzacja procesów wybierz Runbooki.
Wybierz Utwórz Runbook i wykonaj następujące czynności:
- Nadaj elementowi runbook
miTestingnazwę . - Z rozwijanej listy Typ Runbook wybierz PowerShell.
- Z listy rozwijanej Środowisko uruchomieniowewybierz istniejące środowisko uruchomieniowe lub Utwórz nowe za pomocą środowiska uruchomieniowego programu PowerShell i wersji 7.4.
- Wprowadź odpowiedni opis.
- Nadaj elementowi runbook
Wybierz pozycję Utwórz , aby utworzyć element Runbook.
W edytorze Runbook wklej następujący kod:
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.IdW edytorze w wierszu 8 popraw wartość zmiennej
$automationAccountzgodnie z potrzebami.Wybierz opcję Zapisz, a następnie Okienko testowe.
Wypełnij parametry
RESOURCEGROUPiVMNAMEodpowiednimi wartościami. WprowadźSAdla parametruMETHODixUAMIparametruUAMI. Runbook podejmie próbę zmiany stanu zasilania Twojej maszyny wirtualnej przy użyciu zarządzanej tożsamości przypisanej przez system.Wybierz Start. Po zakończeniu działania elementu Runbook dane wyjściowe powinny wyglądać podobnie do następujących:
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@50342Zmień wartość parametru na
METHODUA.Wybierz Start. Element Runbook podejmie próbę zmiany stanu zasilania maszyny wirtualnej przy użyciu nazwanej tożsamości zarządzanej przypisanej przez użytkownika. Po zakończeniu działania elementu Runbook dane wyjściowe powinny wyglądać podobnie do następujących:
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
Czyszczenie zasobów
Aby usunąć zasoby, które nie są już potrzebne, uruchom następujący element Runbook:
#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
Następne kroki
W tym samouczku utworzono element
- Aby rozwiązać problemy związane z tożsamością zarządzaną podczas tworzenia runbooka programu PowerShell, zobacz Rozwiązywanie problemów z tożsamościami zarządzanymi w Azure Automation.