Neinteraktivně se přihlaste k Azure PowerShellu pro scénáře automatizace
Instanční objekt v Azure je neinteraktivní účet, který poskytuje identitu používanou aplikacemi, službami a nástroji pro automatizaci pro přístup ke konkrétním prostředkům Azure. Ověřování pomocí instančního objektu je nejlepší způsob, jak psát zabezpečené skripty, protože fungují jako identita zabezpečení s přiřazenými oprávněními, která určují, jaké akce je možné provádět a ke kterým prostředkům je možné přistupovat. Instanční objekty pomáhají bezpečně automatizovat úlohy správy bez použití osobních uživatelských účtů, což usnadňuje bezpečnější a spravovatelný přístup k prostředkům Azure. Stejně jako u jiných uživatelských účtů spravujete jejich oprávnění pomocí Microsoft Entra. Tím, že instančnímu objektu udělíte jenom potřebná oprávnění, zajistíte zabezpečení skriptů pro automatizaci.
Požadavky
- Nainstalujte nejnovější verzi modulu Az PowerShell.
Přihlášení pomocí spravované identity
Spravované identity jsou speciálním typem instančního objektu, který poskytuje službám Azure automaticky spravovanou identitu. Použití tohoto typu identity nevyžaduje uložení přihlašovacích údajů v konfiguraci nebo kódu k ověření ve službě Azure, která podporuje spravované identity.
Existují dva typy spravovaných identit:
- Spravovaná identita přiřazená systémem
- Spravovaná identita přiřazená uživatelem
Spravované identity poskytují bezpečný způsob komunikace s dalšími službami Azure, aniž by vývojáři museli spravovat přihlašovací údaje. Pomáhají také zmírnit riziko úniků přihlašovacích údajů.
Tady je postup, jak spravované identity fungují ve scénářích reálného světa:
- Azure automaticky spravuje vytváření a odstraňování přihlašovacích údajů používaných spravovanou identitou.
- Služba Azure s povolenou spravovanou identitou může bezpečně přistupovat k jiným službám, jako je Azure Key Vault, Azure SQL Database, Azure Blob Storage atd., pomocí tokenů Microsoft Entra.
- Tato identita se spravuje přímo v Azure bez nutnosti dalšího zřizování.
Spravované identity zjednodušují model zabezpečení tím, že zabraňují nutnosti ukládat a spravovat přihlašovací údaje a hrají zásadní roli v zabezpečených cloudových operacích snížením rizika spojeného s zpracováním tajných kódů.
Spravovaná identita přiřazená systémem
Azure automaticky vytvoří spravovanou identitu přiřazenou systémem pro instanci služby Azure (jako je virtuální počítač Azure, App Service nebo Azure Functions). Po odstranění instance služby Azure automaticky vyčistí přihlašovací údaje a identitu přidruženou ke službě.
Následující příklad se připojí pomocí spravované identity přiřazené systémem hostitelského prostředí. Pokud se spustí na virtuálním počítači s přiřazenou spravovanou identitou, umožní kódu přihlásit se pomocí přiřazené identity.
Connect-AzAccount -Identity
Spravovaná identita přiřazená uživatelem
Spravovaná identita přiřazená uživatelem je identita, kterou vytvoříte a spravujete v Microsoft Entra. Dá se přiřadit k jedné nebo více instancím služby Azure. Životní cyklus spravované identity přiřazené uživatelem se spravuje odděleně od instancí služby, ke kterým je přiřazena.
Pokud používáte spravovanou identitu přiřazenou uživatelem, musíte zadat parametr AccountId a parametr Identity , jak je znázorněno v následujícím příkladu.
Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>
Následující příkazy se připojují pomocí spravované identity myUserAssignedIdentity
. Přidá identitu přiřazenou uživatelem do virtuálního počítače a pak se připojí pomocí ClientId identity přiřazené uživatelem.
$identity = Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroup -Name myUserAssignedIdentity
Get-AzVM -ResourceGroupName contoso -Name testvm | Update-AzVM -IdentityType UserAssigned -IdentityId $identity.Id
Connect-AzAccount -Identity -AccountId $identity.ClientId # Run on the virtual machine
Account SubscriptionName TenantId Environment
------- ---------------- -------- -----------
00000000-0000-0000-0000-000000000000 My Subscription 00000000-0000-0000-0000-000000000000 AzureCloud
Další informace najdete v tématu Konfigurace spravovaných identit pro prostředky Azure na virtuálním počítači Azure.
Přihlášení pomocí instančního objektu
Pokud se chcete přihlásit pomocí instančního objektu, použijte parametr ServicePrincipal rutiny Connect-AzAccount
. Budete také potřebovat následující informace pro instanční objekt:
- AppId
- Přihlašovací údaje nebo přístup k certifikátu použitému k vytvoření instančního objektu
- ID tenanta
Způsob přihlášení pomocí instančního objektu závisí na tom, jestli je nakonfigurovaný pro ověřování pomocí certifikátů nebo ověřování pomocí hesla.
Ověřování pomocí certifikátů
Informace o vytvoření instančního objektu pro Azure PowerShell najdete v tématu Vytvoření instančního objektu Azure pomocí Azure PowerShellu.
Ověřování založené na certifikátech vyžaduje, aby Azure PowerShell načítal informace z místního úložiště certifikátů na základě kryptografického otisku certifikátu.
Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>
Při použití instančního objektu místo registrované aplikace zadejte parametr ServicePrincipal a jako hodnotu parametru ApplicationId zadejte AppId instančního objektu.
Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>
Ve Windows PowerShellu 5.1 je možné úložiště certifikátů spravovat a kontrolovat pomocí modulu PKI . V případě PowerShellu 7.x a novějšího se tento proces liší. Následující skripty ukazují, jak importovat existující certifikát do úložiště certifikátů, které je přístupné pomocí PowerShellu.
Import certifikátu v PowerShellu 7.x a novějším
# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()
Import certifikátu ve Windows PowerShellu 5.1
# Import a PFX
$credentials = Get-Credential -Message 'Provide PFX private key password'
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My
Ověřování pomocí hesla
Vytvořte instanční objekt, který se použije s příklady v této části. Další informace o vytváření instančních objektů najdete v tématu Vytvoření instančního objektu Azure pomocí PowerShellu.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Upozornění
Zadaný tajný klíč instančního objektu AzureRmContext.json
je uložený v souboru ve vašem profilu uživatele ($env:USERPROFILE\.Azure
). Ujistěte se, že tento adresář má odpovídající ochranu.
Pokud chcete získat přihlašovací údaje instančního objektu jako objekt, použijte rutinu Get-Credential
. Tato rutina zobrazí výzvu k zadání uživatelského jména a hesla. Pro uživatelské jméno použijte hodnotu AppId
instančního objektu a pro heslo převeďte jeho hodnotu secret
na prostý text.
# Retrieve the plain text password for use with Get-Credential in the next command.
$sp.PasswordCredentials.SecretText
$pscredential = Get-Credential -UserName $sp.AppId
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
Pro scénáře automatizace je potřeba vytvořit přihlašovací údaje z hodnot AppId
a SecretText
instančního objektu:
$SecureStringPwd = $sp.PasswordCredentials.SecretText | ConvertTo-SecureString -AsPlainText -Force
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sp.AppId, $SecureStringPwd
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
Při automatizaci připojení instančního objektu použijte vhodné postupy ukládání hesel.
Viz také
- Vytvoření instančního objektu Azure pomocí Azure PowerShellu
- Co jsou spravované identity pro prostředky Azure?
- Přiřazení přístupu ke spravované identitě k prostředku pomocí PowerShellu
- Zobrazení instančního objektu spravované identity pomocí PowerShellu
- Connect-AzAccount
- New-AzADServicePrincipal
- Get-Credential
Azure PowerShell