Udostępnij przez


Logowanie się do programu Azure PowerShell nieinterakcyjnego w scenariuszach automatyzacji

Tożsamość zarządzana na platformie Azure zapewnia bezpieczny i bezproblemowy sposób na aplikacje, usługi i narzędzia automatyzacji w celu uzyskiwania dostępu do zasobów platformy Azure bez przechowywania poświadczeń w kodzie lub konfiguracji. W przeciwieństwie do jednostek usługi, które wymagają ręcznego zarządzania poświadczeniami, platforma Azure automatycznie obsługuje tożsamości zarządzane i nie ujawnia poufnych wpisów tajnych. Użycie tożsamości zarządzanej to najlepsze rozwiązanie w zakresie pisania bezpiecznych skryptów automatyzacji, ponieważ upraszcza uwierzytelnianie i minimalizuje ryzyko wycieków poświadczeń. Tożsamości zarządzane ułatwiają również bezpieczne automatyzowanie zadań zarządzania bez polegania na tożsamościach użytkowników. Uprawnienia tożsamości zarządzanych są zarządzane za pośrednictwem firmy Microsoft Entra, zapewniając tylko niezbędny dostęp do zasobów, zwiększając bezpieczeństwo i łatwość konserwacji.

Ważne

Począwszy od września 2025 r., program Azure PowerShell będzie wymagał uwierzytelniania wieloskładnikowego (MFA) podczas logowania się przy użyciu tożsamości użytkownika microsoft Entra ID. Ta zmiana zwiększa bezpieczeństwo, ale może mieć wpływ na przepływy pracy automatyzacji, które opierają się na uwierzytelnianiu nazwy użytkownika i hasła. Aby uzyskać więcej informacji, zobacz Wpływ uwierzytelniania wieloskładnikowego na program Azure PowerShell w scenariuszach automatyzacji.

Wymagania wstępne

Logowanie przy użyciu tożsamości zarządzanej

Tożsamości zarządzane to specjalny typ jednostki usługi, która zapewnia usługom platformy Azure automatyczną tożsamość zarządzaną. Użycie tego typu tożsamości nie wymaga przechowywania poświadczeń w konfiguracji ani kodzie w celu uwierzytelniania w dowolnej usłudze platformy Azure obsługującej tożsamości zarządzane.

Istnieją dwa typy tożsamości zarządzanych:

  • Zarządzana tożsamość przypisana przez system
  • Tożsamość zarządzana przypisana użytkownikowi

Tożsamości zarządzane zapewniają bezpieczny sposób komunikowania się z innymi usługami platformy Azure bez konieczności zarządzania poświadczeniami przez deweloperów. Pomagają one również zmniejszyć ryzyko wycieków poświadczeń.

Oto jak działają tożsamości zarządzane w rzeczywistych scenariuszach:

  • Platforma Azure automatycznie zarządza tworzeniem i usuwaniem poświadczeń używanych przez tożsamość zarządzaną.
  • Usługa platformy Azure z włączoną tożsamością zarządzaną może bezpiecznie uzyskiwać dostęp do innych usług, takich jak Azure Key Vault, Azure SQL Database, Azure Blob Storage itp., przy użyciu tokenów firmy Microsoft Entra.
  • Ta tożsamość jest zarządzana bezpośrednio na platformie Azure bez konieczności dodatkowej aprowizacji.

Tożsamości zarządzane upraszczają model zabezpieczeń, unikając konieczności przechowywania poświadczeń i zarządzania nimi, a także odgrywają kluczową rolę w bezpiecznych operacjach w chmurze, zmniejszając ryzyko związane z obsługą wpisów tajnych.

Zarządzana tożsamość przypisana przez system

Platforma Azure automatycznie tworzy tożsamość zarządzaną przypisaną przez system dla wystąpienia usługi platformy Azure (na przykład maszyny wirtualnej platformy Azure, usługi App Service lub usługi Azure Functions). Po usunięciu wystąpienia usługi platforma Azure automatycznie czyści poświadczenia i tożsamość skojarzona z usługą.

W poniższym przykładzie nawiąż połączenie przy użyciu przypisanej przez system tożsamości zarządzanej środowiska hosta. Jeśli jest wykonywana na maszynie wirtualnej z przypisaną tożsamością zarządzaną, umożliwia kodowi zalogowanie się przy użyciu przypisanej tożsamości.

 Connect-AzAccount -Identity

Tożsamość zarządzana przypisana użytkownikowi

Tożsamość zarządzana przypisana przez użytkownika to tożsamość tworzona i zarządzana w usłudze Microsoft Entra. Można go przypisać do co najmniej jednego wystąpienia usługi platformy Azure. Cykl życia tożsamości zarządzanej przypisanej przez użytkownika jest zarządzany niezależnie od wystąpień usługi, do których jest przypisany.

W przypadku korzystania z tożsamości zarządzanej przypisanej przez użytkownika należy określić parametry AccountId i Identity , jak pokazano w poniższym przykładzie.

 Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>

Następujące polecenia łączą się przy użyciu tożsamości zarządzanej myUserAssignedIdentityprogramu . Dodaje tożsamość przypisaną przez użytkownika do maszyny wirtualnej, a następnie nawiązuje połączenie przy użyciu identyfikatora ClientId tożsamości przypisanej przez użytkownika.

$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

Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej platformy Azure.

Logowanie przy użyciu jednostki usługi

Aby zalogować się przy użyciu jednostki usługi, użyj parametru Connect-AzAccount polecenia cmdlet. Potrzebne są również następujące informacje dotyczące jednostki usługi:

  • Identyfikator aplikacji
  • Poświadczenia logowania lub dostęp do certyfikatu użytego do utworzenia jednostki usługi
  • Identyfikator dzierżawy

Sposób logowania przy użyciu jednostki usługi zależy od tego, czy jest on skonfigurowany do uwierzytelniania opartego na certyfikatach, czy opartego na hasłach.

Uwierzytelnianie oparte na certyfikatach

Aby dowiedzieć się, jak utworzyć jednostkę usługi dla programu Azure PowerShell, zobacz Tworzenie jednostki usługi platformy Azure przy użyciu programu Azure PowerShell.

Uwierzytelnianie oparte na certyfikatach wymaga, aby program Azure PowerShell pobierał informacje z lokalnego magazynu certyfikatów na podstawie odcisku palca certyfikatu.

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

W przypadku korzystania z jednostki usługi zamiast zarejestrowanej aplikacji określ parametr ServicePrincipal i podaj identyfikator AppId jednostki usługi jako wartość parametru ApplicationId .

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

W programie Windows PowerShell 5.1 magazyn certyfikatów można zarządzać i sprawdzać za pomocą modułu PKI . W przypadku programu PowerShell w wersji 7.x lub nowszej proces jest inny. Poniższe skrypty pokazują, jak zaimportować istniejący certyfikat do magazynu certyfikatów dostępnego dla programu PowerShell.

Importowanie certyfikatu w programie PowerShell 7.x lub nowszym

# 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()

Importowanie certyfikatu w programie Windows PowerShell 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

Uwierzytelnianie oparte na hasłach

Utwórz jednostkę usługi do użycia z przykładami w tej sekcji. Aby uzyskać więcej informacji na temat tworzenia jednostek usługi, zobacz Tworzenie jednostki usługi platformy Azure za pomocą programu Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Ostrzeżenie

Podany wpis tajny jednostki usługi jest przechowywany w AzureRmContext.json pliku w profilu użytkownika ($env:USERPROFILE\.Azure). Upewnij się, że ten katalog ma odpowiednie zabezpieczenia.

Aby uzyskać poświadczenia jednostki usługi jako obiekt, użyj Get-Credential polecenia cmdlet . To polecenie cmdlet wyświetla monit o podanie nazwy użytkownika i hasła. Użyj nazwy użytkownika jednostki AppId usługi i przekonwertuj jej secret na zwykły tekst hasła.

# 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

W przypadku scenariuszy automatyzacji należy utworzyć poświadczenia na podstawie jednostek usługi AppId i 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

Podczas automatyzowania połączeń z jednostką usługi należy stosować odpowiednie rozwiązania dotyczące magazynu haseł.

Zobacz także