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
- Zainstaluj najnowszą wersję modułu Az programu PowerShell.
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 myUserAssignedIdentity
programu . 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ż
- Tworzenie jednostki usługi platformy Azure przy użyciu programu Azure PowerShell
- Co to są tożsamości zarządzane dla zasobów platformy Azure?
- Przypisywanie tożsamości zarządzanej dostępu do zasobu przy użyciu programu PowerShell
- Wyświetlanie jednostki usługi tożsamości zarządzanej przy użyciu programu PowerShell
- Połączenie-AzAccount
- New-AzADServicePrincipal
- Get-Credential
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla