Logowanie się do programu Azure PowerShell przy użyciu jednostki usługi

Jednostka usługi na platformie Azure to nieinteraktywne konto, które zapewnia tożsamość używaną przez aplikacje, usługi i narzędzia automatyzacji do uzyskiwania dostępu do określonych zasobów platformy Azure. Uwierzytelnianie za pomocą jednostki usługi to najlepszy sposób na pisanie bezpiecznych skryptów, ponieważ działają one jako tożsamość zabezpieczeń z przypisanymi uprawnieniami określającymi, jakie akcje można wykonać i do jakich zasobów można uzyskać dostęp. Jednostki usług pomagają bezpiecznie automatyzować zadania zarządzania bez korzystania z kont użytkowników osobistych, ułatwiając bezpieczniejszy i możliwy do zarządzania dostęp do zasobów platformy Azure. Podobnie jak w przypadku innych kont użytkowników, zarządzasz ich uprawnieniami w firmie Microsoft Entra. Udzielając jednostce usługi tylko potrzebnych uprawnień, możesz zapewnić bezpieczeństwo skryptom automatyzacji.

Wymagania wstępne

Logowanie przy użyciu jednostki usługi

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

  • AppId
  • 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 została ona skonfigurowana do uwierzytelniania opartego na hasłach, czy opartego na certyfikatach.

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 przy użyciu programu Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Uwaga

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. Podaj wartość AppId jednostki usługi jako nazwę użytkownika i przekonwertuj jej wartość secret na zwykły tekst w celu uzyskania 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

Dla scenariuszy automatyzacji musisz utworzyć poświadczenia na podstawie wartości AppId i SecretText jednostki usługi:

$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ł.

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 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

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

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:

  • Tożsamość zarządzana przypisana przez system
  • Tożsamość zarządzana przypisana przez użytkownika

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.

Tożsamość zarządzana 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 przez użytkownika

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ć parametr AccountId i parametr 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.

Zobacz też