Sdílet prostřednictvím


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 září 2025 bude Azure PowerShell při přihlašování pomocí identity uživatele Microsoft Entra ID vyžadovat vícefaktorové ověřování (MFA). Tato změna zlepšuje zabezpečení, ale může mít vliv na pracovní postupy automatizace, které spoléhají na ověřování pomocí uživatelského jména a hesla. 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 musíte zadat parametry AccountId a 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
  • Identifikátor nájemce

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í Azure 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. Použijte instanční objekt AppId pro uživatelské jméno a převeďte ho secret na prostý text hesla.

# 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 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í instančního objektu použijte vhodné postupy ukládání hesel.

Viz také