Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento kurz vás provede vytvořením runbooku PowerShellu ve službě Azure Automation, která používá spravovanou identitu k interakci s prostředky. Runbooky PowerShellu jsou založené na Windows PowerShellu. Spravovaná identita ze služby Microsoft Entra ID umožňuje vašemu runbooku snadný přístup k dalším prostředkům chráněným službou Microsoft Entra.
V tomto kurzu se naučíte:
- Přiřazení oprávnění ke spravovaným identitám
- Vytvoření runbooku v PowerShellu
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Požadavky
Než přiřadíte oprávnění spravovaným identitám, ujistěte se, že splňujete tyto požadavky:
- Účet Azure Automation s alespoň jednou spravovanou identitou přiřazenou uživatelem. Další informace najdete v tématu Použití spravované identity přiřazené uživatelem pro účet Azure Automation.
- Az modules:
Az.Accounts,Az.Automation,Az.ManagedServiceIdentityaAz.Computeimport do účtu Automation. Další informace najdete v tématu Import modulů Az. - Modul Azure Az PowerShell nainstalovaný na vašem počítači. Pokud chcete nainstalovat nebo upgradovat, přečtěte si, jak nainstalovat modul Azure Az PowerShell.
Az.ManagedServiceIdentityje modul Preview a není nainstalovaný jako součást modulu Az. Pokud ho chcete nainstalovat, spusťteInstall-Module -Name Az.ManagedServiceIdentitypříkaz . - Virtuální počítač Azure. Vzhledem k tomu, že tento počítač zastavíte a spustíte, neměl by to být produkční virtuální počítač.
- Obecná znalost runbooků Automation
Přiřazení oprávnění ke spravovaným identitám
Přiřaďte oprávnění spravovaným identitám, abyste jim umožnili zastavit a spustit virtuální počítač.
Pokud chcete přiřadit oprávnění ke spravovaným identitám, postupujte takto:
Přihlaste se k Azure interaktivně pomocí rutiny Connect-AzAccount a postupujte podle pokynů:
# 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>Zadejte odpovídající hodnotu pro níže uvedené proměnné a spusťte skript.
$resourceGroup = "resourceGroupName" # These values are used in this tutorial $automationAccount = "xAutomationAccount" $userAssignedManagedIdentity = "xUAMI"Pomocí rutiny PowerShellu New-AzRoleAssignment přiřaďte roli spravované identitě přiřazené systémem.
$role1 = "DevTest Labs User" $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1Pro uživatelsky přiřazenou řízenou identitu je potřeba stejné přiřazení role.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity).PrincipalId New-AzRoleAssignment ` -ObjectId $UAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role1K provádění rutin
Get-AzUserAssignedIdentityaGet-AzAutomationAccountpoužití v tomto kurzu jsou potřeba další oprávnění pro spravovanou identitu přiřazenou systémem.$role2 = "Reader" New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName $role2
Vytvoření powershellového runbooku
Vytvořte runbook, který umožní spuštění pomocí spravované identity. Runbook spustí zastavený virtuální počítač nebo zastaví spuštěný virtuální počítač.
Pokud chcete vytvořit runbook PowerShellu, postupujte takto:
Přihlaste se k webu Azure Portal a přejděte ke svému účtu Automation.
Na stránce Přehled vyberte možnost Vyzkoušet prostředí runtime, pokud ještě není v novém prostředí.
V části Automatizace procesů vyberte Runbooky.
Vyberte Create a runbook a postupujte takto:
- Pojmenujte runbook
miTesting. - V rozevíracím seznamu Typ runbooku vyberte PowerShell.
- V rozevíracím seznamu Prostředí runtimevyberte existující prostředí runtime nebo vytvořte nové prostředí runtime PowerShellu a verze 7.4.
- Zadejte příslušný popis.
- Pojmenujte runbook
Výběrem možnosti Vytvořit vytvořte runbook.
V editoru runbooku vložte následující kód:
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.IdV editoru na řádku 8 upravte hodnotu
$automationAccountproměnné podle potřeby.Vyberte Uložit a potom podokno Test.
Naplňte parametry
RESOURCEGROUPaVMNAMEodpovídajícími hodnotami. ZadejteSAparametrMETHODaxUAMIparametrUAMI. Runbook se pokusí změnit stav napájení vašeho virtuálního počítače pomocí spravované identity přiřazené systémem.Vyberte Spustit. Po dokončení runbooku by měl výstup vypadat nějak takto:
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@50342Změňte hodnotu parametru
METHODnaUA.Vyberte Spustit. Runbook se pokusí změnit stav napájení vašeho virtuálního počítače pomocí pojmenované spravované identity přiřazené uživatelem. Po dokončení runbooku by měl výstup vypadat nějak takto:
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
Vyčištění prostředků
Pokud chcete odebrat prostředky, které už nepotřebujete, spusťte následující 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
Další kroky
V tomto kurzu jste vytvořili runbook PowerShellu ve službě Azure Automation, který používal spravovanou identitu, a ne účet Spustit jako pro interakci s prostředky. Informace o runboocích pracovního postupu PowerShellu najdete tady: