Neinteraktivně se přihlaste k Azure PowerShellu pro scénáře automatizace
Spravovaná identita v Azure poskytuje bezpečný a bezproblémový způsob, jak pro aplikace, služby a automatizační nástroje přistupovat k prostředkům Azure bez uložení přihlašovacích údajů v kódu nebo konfiguraci. Na rozdíl od instančních objektů, které vyžadují ruční správu přihlašovacích údajů, Azure automaticky zpracovává spravované identity a nezpřístupňuje citlivé tajné kódy. Použití spravované identity je osvědčeným postupem pro psaní zabezpečených automatizačních skriptů, protože zjednodušuje ověřování a minimalizuje riziko úniku přihlašovacích údajů. Spravované identity také pomáhají bezpečně automatizovat úlohy správy bez nutnosti spoléhat se na identity uživatelů. Oprávnění ke spravovaným identitám se spravují prostřednictvím Microsoft Entra a zajišťují, že mají pouze nezbytný přístup k prostředkům, což zvyšuje zabezpečení i udržovatelnost.
Důležitý
Od začátku roku 2025 bude ověřování v Azure z Azure PowerShellu pomocí identity uživatele Microsoft Entra ID vyžadovat vícefaktorové ověřování (MFA). Další informace najdete v tématu Dopad vícefaktorového ověřování na Azure PowerShell ve scénářích automatizace.
Požadavky
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.
Při použití spravované identity přiřazené uživatelem je nutné zadat id účtu a parametry Identita, 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í id klienta 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í ServicePrincipal, použijte parametr příkazového modulu Connect-AzAccount
. Budete také potřebovat následující informace pro hlavní identitu služby:
- AppId
- Přihlašovací údaje nebo přístup k certifikátu použitému k vytvoření služby zástupce
- ID nájemce
Způsob přihlášení pomocí služby principal závisí na tom, zda je nakonfigurovaná pro autentizaci pomocí certifikátu nebo hesla.
Ověřování na základě 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()
Importovat certifikát 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í založené na heslech
Vytvořte hlavní službu pro použití 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íAzure PowerShellu .
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Opatrnost
Zadané heslo hlavního objektu služby je uložené v souboru AzureRmContext.json
ve vašem uživatelském profilu ($env:USERPROFILE\.Azure
). Ujistěte se, že tento adresář má odpovídající ochranu.
Pokud chcete získat přihlašovací údaje služebního hlavního objektu ve formě objektu, 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 AppId
principálu služby a pro heslo převeďte jeho 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 musíte vytvořit přihlašovací údaje z instančního objektu AppId
a instančního objektu SecretText
.
$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í service principale použijte vhodné postupy ukládání hesel.
Viz také
- Vytvoření služebního principálu Azure pomocí Azure PowerShell
- Co jsou spravované identity pro prostředky Azure?
- Přiřazení přístupu spravované identity k prostředku pomocí PowerShellu
- Zobrazení objektu služby spravované identity pomocí PowerShellu
- Connect-AzAccount
- New-AzADServicePrincipal
- Get-Credential
Azure PowerShell