Anmelden mit Azure PowerShell
Azure PowerShell unterstützt mehrere Authentifizierungsmethoden. Den einfachsten Einstieg ermöglicht der Azure Cloud Shell-Dienst, der Sie automatisch anmeldet. Bei einer lokalen Installation können Sie sich interaktiv über Ihren Browser anmelden. Beim Schreiben von Skripts für die Automatisierung besteht der empfohlene Ansatz darin, einen Dienstprinzipal mit den erforderlichen Berechtigungen zu verwenden. Indem Sie die Anmeldeberechtigungen für Ihren Anwendungsfall so weit wie möglich einschränken, tragen Sie zur Sicherheit Ihrer Azure-Ressourcen bei.
Zunächst sind Sie beim ersten Abonnement angemeldet, das von Azure zurückgegeben wird, wenn Sie Zugriff auf mehrere Abonnements haben. Befehle werden für dieses Abonnement standardmäßig ausgeführt. Verwenden Sie das Cmdlet Set-AzContext, um Ihr aktives Abonnement für eine Sitzung zu ändern. Um Ihr aktives Abonnement zu ändern und es zwischen Sitzungen auf demselben System beizubehalten, verwenden Sie das Cmdlet Select-AzContext.
Wichtig
Ihre Anmeldeinformationen werden in mehreren PowerShell-Sitzungen gemeinsam verwendet, solange Sie angemeldet bleiben. Weitere Informationen finden Sie unter Azure PowerShell-Kontextobjekte.
Interaktives Anmelden
Verwenden Sie für die interaktive Anmeldung das Cmdlet Connect-AzAccount.
Connect-AzAccount
Dieses Cmdlet zeigt standardmäßig eine browserbasierte interaktive Anmeldeaufforderung an.
Verwenden Sie das Cmdlet Get-AzContext, um Ihre Mandanten-ID in einer Variablen zu speichern, die in den nächsten beiden Abschnitten dieses Artikels verwendet werden soll.
$tenantId = (Get-AzContext).Tenant.Id
Gerätecodeauthentifizierung
Sie können den Parameter UseDeviceAuthentication
angeben, um die Gerätecodeauthentifizierung anstelle eines Browsersteuerelements zu verwenden.
Connect-AzAccount -UseDeviceAuthentication
Anmelden mit einem Dienstprinzipal
Dienstprinzipale sind nicht interaktive Azure-Konten. Wie bei anderen Benutzerkonten auch, werden die Berechtigungen mit Azure Active Directory verwaltet. Indem für einen Dienstprinzipal nur die benötigten Berechtigungen gewährt werden, bleibt die Sicherheit Ihrer Automatisierungsskripts gewahrt.
Informationen zur Erstellung eines Dienstprinzipals für die Verwendung mit PowerShell finden Sie unter Erstellen eines Azure-Dienstprinzipals mit Azure PowerShell.
Verwenden Sie für die Anmeldung mit einem Dienstprinzipal das Cmdlet Connect-AzAccount
mit dem Parameter ServicePrincipal
. Sie benötigen auch die Anwendungs-ID und die Anmeldeinformationen des Dienstprinzipals sowie die dem Dienstprinzipal zugeordnete Mandanten-ID. Wie Sie sich mit einem Dienstprinzipal anmelden, hängt davon ab, ob er für die kennwortbasierte oder die zertifikatbasierte Authentifizierung konfiguriert wurde.
Kennwortbasierte Authentifizierung
Erstellen Sie einen Dienstprinzipal für die Verwendung in den Beispielen in diesem Abschnitt. Weitere Informationen zum Erstellen von Dienstprinzipalen finden Sie unter Erstellen eines Azure-Dienstprinzipals mit Azure PowerShell.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Warnung
Der bereitgestellte Dienstprinzipalschlüssel wird in der AzureRmContext.json
-Datei in Ihrem Benutzerprofil ($env:USERPROFILE\.Azure
) gespeichert. Stellen Sie sicher, dass dieses Verzeichnis ausreichend geschützt ist.
Verwenden Sie das Cmdlet Get-Credential, um die Anmeldeinformationen des Dienstprinzipals als entsprechendes Objekt abzurufen. Mit diesem Cmdlet wird eine Eingabeaufforderung für Benutzername und Kennwort angezeigt. Verwenden Sie die applicationID
des Dienstprinzipals für den Benutzernamen, und konvertieren Sie dessen secret
in Nur-Text für das Kennwort.
# 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
Für Automatisierungsszenarien müssen Sie Anmeldeinformationen aus der AppId
und dem SecretText
eines Dienstprinzipals erstellen:
$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
Achten Sie darauf, gute Methoden für die Kennwortspeicherung zu verwenden, wenn Sie Dienstprinzipalverbindungen automatisieren.
Zertifikatbasierte Authentifizierung
Zertifikatbasierte Authentifizierung erfordert, dass Azure PowerShell Informationen von einem lokalen Zertifikatsspeicher basierend auf einem Fingerabdruck des Zertifikats abrufen kann.
Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>
Wenn Sie einen Dienstprinzipal anstelle einer registrierten Anwendung verwenden, geben Sie den Parameter ServicePrincipal und die Anwendungs-ID des Dienstprinzipals als Wert für den Parameter ApplicationId an.
Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>
In Windows PowerShell 5.1 kann der Zertifikatspeicher mit den PKI-Modul verwaltet und überprüft werden. Für PowerShell 7.x und höher ist der Prozess komplizierter. Die folgenden Skripts zeigen, wie ein vorhandenes Zertifikat in den für PowerShell zugänglichen Zertifikatspeicher importiert wird.
Importieren eines Zertifikats in 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
Importieren eines Zertifikats in PowerShell Core 7.x und höher
# 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()
Anmelden mit einer verwalteten Identität
Verwaltete Identitäten sind ein Feature von Azure Active Directory. Bei verwalteten Identitäten handelt es sich um Dienstprinzipale, die den in Azure ausgeführten Ressourcen zugewiesen sind. Sie können den Dienstprinzipal einer verwalteten Identität für die Anmeldung verwenden und ein App-exklusives Zugriffstoken für den Zugriff auf andere Ressourcen verwenden. Verwaltete Identitäten stehen nur für Ressourcen zur Verfügung, die in einer Azure-Cloud ausgeführt werden.
In diesem Beispiel wird mithilfe der verwalteten Identität der Hostumgebung eine Verbindung hergestellt. Beispiel: Bei der Ausführung auf einem virtuellen Computer (VirtualMachine) mit einer zugewiesenen verwalteten Dienstidentität wird dadurch dem Code die Anmeldung mithilfe dieser zugewiesenen Identität ermöglicht.
Connect-AzAccount -Identity
Im folgenden Beispiel wird eine Verbindung mithilfe der verwalteten Dienstidentität myUserAssignedIdentity
hergestellt. Sie fügt dem virtuellen Computer die benutzerseitig zugewiesene Identität hinzu und stellt dann mithilfe der ClientId
der benutzerseitig zugewiesenen Identität eine Verbindung her. Weitere Informationen finden Sie unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einem virtuellen Azure-Computer mithilfe von PowerShell.
$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
------- ---------------- -------- -----------
yyyy-yyyy-yyyy-yyyy Subscription1 xxxx-xxxx-xxxx-xxxx AzureCloud
Anmelden mit einem anderen Mandanten als dem Standardmandanten oder als Cloudlösungsanbieter (Cloud Solution Provider, CSP)
Wenn Ihr Konto mehr als einem Mandanten zugeordnet ist, muss bei der Verbindungsherstellung für die Anmeldung der Parameter Tenant verwendet werden. Dieser Parameter funktioniert mit jedem Anmeldeverfahren. Beim Anmelden kann dieser Parameterwert entweder die Azure-Objekt-ID des Mandanten (Mandanten-ID) oder der vollqualifizierte Domänenname des Mandanten sein.
Wenn Sie ein Cloudlösungsanbieter (Cloud Solution Provider, CSP) sind, muss der Wert des Parameters Tenant eine Mandanten-ID sein.
Connect-AzAccount -Tenant '00000000-0000-0000-0000-000000000000'
Anmelden bei einer anderen Cloud
Azure-Clouddienste verfügen über Umgebungen, die jeweils mit den regionalen Gesetzen zum Umgang mit Daten konform sind. Legen Sie die Umgebung für Konten in einer regionalen Cloud fest, wenn Sie sich mit dem Parameter Environment anmelden. Dieser Parameter funktioniert mit jedem Anmeldeverfahren. Beispiel, wenn sich Ihr Konto in Azure China 21Vianet befindet:
Connect-AzAccount -Environment AzureChinaCloud
Der folgende Befehl gibt eine Liste der verfügbaren Umgebungen zurück:
Get-AzEnvironment | Select-Object -Property Name