Freigeben über


Melden Sie sich in Azure PowerShell für Automatisierungsszenarien nicht interaktiv an.

Ein Dienstprinzipal in Azure ist ein nichtinteraktives Konto, das eine Identität bereitstellt, die von Anwendungen, Diensten und Automatisierungstools für den Zugriff auf bestimmte Azure-Ressourcen verwendet wird. Die Authentifizierung mit einem Dienstprinzipal ist die beste Möglichkeit, sichere Skripts zu schreiben, da sie als Sicherheitsidentität mit zugewiesenen Berechtigungen fungieren, die festlegen, welche Aktionen ausgeführt werden können und auf welche Ressourcen zugegriffen werden kann. Dienstprinzipale helfen dabei, Verwaltungsaufgaben sicher zu automatisieren, ohne persönliche Benutzerkonten zu verwenden, wodurch der sicherere und verwaltbare Zugriff auf Azure-Ressourcen erleichtert wird. Wie bei anderen Benutzerkonten verwalten Sie deren Berechtigungen mit Microsoft Entra. Indem Sie einem Dienstprinzipal nur die benötigten Berechtigungen erteilen, bleiben Ihre Automatisierungsskripts sicher.

Voraussetzungen

Anmelden mit einer verwalteten Identität

Verwaltete Identitäten sind ein spezieller Dienstprinzipaltyp, der Azure-Dienste mit einer automatisch verwalteten Identität bereitstellt. Die Verwendung dieser Art von Identität erfordert keine Speicherung von Anmeldeinformationen in der Konfiguration oder im Code, um sich bei jedem Azure-Dienst zu authentifizieren, der verwaltete Identitäten unterstützt.

Es gibt zwei Arten von verwalteten Identitäten:

  • Systemseitig zugewiesene verwaltete Identität
  • Benutzerseitig zugewiesene verwaltete Identität

Verwaltete Identitäten bieten eine sichere Möglichkeit, mit anderen Azure-Diensten zu kommunizieren, ohne dass Entwickler Anmeldeinformationen verwalten müssen. Sie tragen auch dazu bei, das Risiko von Anmeldedatenlecks zu verringern.

So funktionieren verwaltete Identitäten in realen Szenarien:

  • Azure verwaltet automatisch die Erstellung und Löschung der anmeldeinformationen, die von der verwalteten Identität verwendet werden.
  • Ein mit einer verwalteten Identität aktivierter Azure-Dienst kann sicher auf andere Dienste zugreifen, z. B. Azure Key Vault, Azure SQL-Datenbank, Azure Blob Storage usw. mithilfe von Microsoft Entra-Token.
  • Diese Identität wird direkt in Azure verwaltet, ohne dass zusätzliche Bereitstellung erforderlich ist.

Verwaltete Identitäten vereinfachen das Sicherheitsmodell, indem sie die Notwendigkeit vermeiden, Anmeldeinformationen zu speichern und zu verwalten, und sie spielen eine wichtige Rolle bei sicheren Cloudvorgängen, indem das Mit dem Umgang mit geheimen Schlüsseln verbundene Risiko reduziert wird.

Systemseitig zugewiesene verwaltete Identität

Azure erstellt automatisch eine vom System zugewiesene verwaltete Identität für eine Azure-Dienstinstanz (z. B. eine Azure-VM, einen App-Dienst oder Azure-Funktionen). Wenn die Dienstinstanz gelöscht wird, bereinigt Azure automatisch die Anmeldeinformationen und die dem Dienst zugeordnete Identität.

In folgenden Beispiel wird mithilfe der systemseitig zugewiesene verwaltete Identität der Hostumgebung eine Verbindung hergestellt. Wenn sie auf einem virtuellen Computer mit einer zugewiesenen verwalteten Identität ausgeführt wird, kann der Code sich mit der zugewiesenen Identität anmelden.

 Connect-AzAccount -Identity

Benutzerseitig zugewiesene verwaltete Identität

Eine vom Benutzer zugewiesene verwaltete Identität ist eine Identität, die Sie in Microsoft Entra erstellen und verwalten. Sie kann einer oder mehreren Azure-Dienstinstanzen zugewiesen werden. Der Lebenszyklus einer vom Benutzer zugewiesenen verwalteten Identität wird getrennt von den Dienstinstanzen verwaltet, denen sie zugewiesen ist.

Wenn Sie eine vom Benutzer zugewiesene verwaltete Identität verwenden, müssen Sie den Parameter AccountId und den Parameter Identity angeben, wie im folgenden Beispiel gezeigt.

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

Mit den folgenden Befehlen wird eine Verbindung unter Verwendung der verwalteten Identität myUserAssignedIdentity hergestellt: Sie fügt dem virtuellen Computer die benutzerseitig zugewiesene Identität hinzu und stellt dann mithilfe der Client-ID ClientId der benutzerseitig zugewiesenen Identität eine Verbindung her.

$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

Weitere Informationen finden Sie unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einer Azure-VM.

Anmelden mit einem Dienstprinzipal

Verwenden Sie für die Anmeldung mit einem Dienstprinzipal den Parameter ServicePrincipal für das Cmdlet Connect-AzAccount. Außerdem müssen folgende Informationen für den Dienstprinzipal konfiguriert werden:

  • AppId
  • Anmeldeinformationen oder Zugriff auf das Zertifikat, das zum Erstellen des Dienstprinzipals verwendet wird
  • Mandanten-ID

Wie Sie sich mit einem Dienstprinzipal anmelden, hängt davon ab, ob er für die zertifikatbasierte oder die kennwortbasierte Authentifizierung konfiguriert wurde.

Zertifikatbasierte Authentifizierung

Informationen darüber, wie Sie einen Dienstprinzipal für Azure PowerShell erstellen, finden Sie unter Erstellen eines Azure-Dienstprinzipals mit Azure PowerShell.

Für die zertifikatbasierte Authentifizierung muss Azure PowerShell Informationen aus einem lokalen Zertifikatspeicher basierend auf einem Zertifikatfingerabdruck abrufen.

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

Wenn Sie einen Dienstprinzipal anstelle einer registrierten Anwendung verwenden, geben Sie den ServicePrincipal--Parameter an, und stellen Sie die AppId des Dienstprinzipals als Wert für den ApplicationId--Parameter bereit.

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

In Windows PowerShell 5.1 kann der Zertifikatspeicher mit dem PKI--Modul verwaltet und geprüft werden. Für PowerShell 7.x und höher unterscheidet sich der Prozess. Die folgenden Skripts veranschaulichen, wie sie ein vorhandenes Zertifikat in den Zertifikatspeicher importieren, auf den powerShell zugreifen kann.

Importieren eines Zertifikats in PowerShell 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()

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

Kennwortbasierte Authentifizierung

Erstellen Sie einen Dienstprinzipal, den Sie für die Beispiele in diesem Abschnitt verwenden. Weitere Informationen zum Erstellen von Dienstprinzipalen finden Sie unter Erstellen eines Azure-Dienstprinzipals mit Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Vorsicht

Der bereitgestellte Dienstprinzipalschlüssel wird in der AzureRmContext.json Datei in Ihrem Benutzerprofil ($env:USERPROFILE\.Azure) gespeichert. Stellen Sie sicher, dass dieses Verzeichnis über geeignete Schutzmaßnahmen verfügt.

Verwenden Sie das Cmdlet Get-Credential, um die Anmeldeinformationen des Dienstprinzipals als Objekt abzurufen. Dieses Cmdlet fordert einen Benutzernamen und ein Kennwort ein. Verwenden Sie die AppId 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

Verwenden Sie beim Automatisieren von Dienstprinzipalverbindungen geeignete Kennwortspeichermethoden.

Weitere Informationen