Verbinden virtueller Netzwerke in verschiedenen Abonnements mit Dienstprinzipalnamen
Es gibt Fälle, in denen Sie virtuelle Netzwerke in verschiedenen Abonnements ohne die Verwendung von Benutzerkonten oder Gastkonten verbinden müssen. In dieser Anleitung für virtuelle Netzwerke erfahren Sie, wie Sie zwei virtuelle Netzwerke mit Dienstprinzipalnamen in verschiedenen Abonnements peeren können. Peerings virtueller Netzwerke zwischen virtuellen Netzwerken in verschiedenen Abonnements und Microsoft Entra ID-Mandanten müssen über Azure CLI oder PowerShell ausgeführt werden. Derzeit gibt es im Azure-Portal keine Option, virtuelle Netzwerke mit Dienstprinzipalnamen in verschiedenen Abonnements zu peeren.
Voraussetzungen
Ein Azure-Konto mit zwei aktiven Abonnements und zwei Microsoft Entra ID-Mandanten. Sie können kostenlos ein Konto erstellen.
Kontoberechtigungen zum Erstellen eines Dienstprinzipals, zum Zuweisen von App-Berechtigungen und zum Erstellen von Ressourcen im Microsoft Entra ID-Mandanten, der jedem Abonnement zugeordnet ist.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Für diesen Anleitungsartikel ist mindestens Version 2.31.0 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.
Verwendete Ressourcen
SPN | Resource group | Abonnement/Mandant | Virtuelles Netzwerk | Location |
---|---|---|---|---|
spn-1-peer-vnet | test-rg-1 | subscription-1 | vnet-1 | USA (Ost) 2 |
spn-2-peer-vnet | test-rg-2 | subscription-2 | vnet-2 | USA, Westen 2 |
Erstellen von subscription-1-Ressourcen
Verwenden Sie az sign-in, um sich bei subscription-1 mit einem Benutzerkonto mit Berechtigungen zum Erstellen einer Ressourcengruppe, eines virtuellen Netzwerks und eines Dienstprinzipalnamens im Microsoft Entra ID-Mandanten, der subscription-1 zugeordnet ist, anzumelden.
az login
Erstellen Sie mit az group create eine Ressourcengruppe.
az group create \ --name test-rg-1 \ --location eastus2
Verwenden Sie az network vnet create, um ein virtuelles Netzwerk namens vnet-1 in subscription-1 zu erstellen.
az network vnet create \ --resource-group test-rg-1 \ --location eastus2 \ --name vnet-1 \ --address-prefixes 10.0.0.0/16 \ --subnet-name subnet-1 \ --subnet-prefixes 10.0.0.0/24
Erstellen von spn-1-peer-vnet
Erstellen Sie spn1-peer-vnet mit einem Bereich für das virtuelle Netzwerk, das im vorherigen Schritt erstellt wurde. Dieser Dienstprinzipalname wird dem Bereich von vnet-2 in einem zukünftigen Schritt hinzugefügt, um das VNet-Peer zuzulassen.
Verwenden Sie az network vnet show, um die Ressourcen-ID des virtuellen Netzwerks, das Sie zuvor erstellt haben, in einer Variablen zu speichern, die in einem späteren Schritt verwendet werden kann.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Verwenden Sie az ad sp create-for-rbac, um spn-1-peer-vnet- mit der Rolle Netzwerkmitwirkender, die auf das virtuelle Netzwerk vnet-1 festgelegt ist, zu erstellen.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Notieren Sie sich die Ausgabe der Erstellung in diesem Schritt. Das Kennwort wird nur hier in dieser Ausgabe angezeigt. Kopieren Sie das Kennwort an einen sicheren Ort, damit Sie es in den späteren Anmeldeschritten verwenden können.
{ "appId": "11112222-bbbb-3333-cccc-4444dddd5555", "displayName": "spn-1-peer-vnet", "password": "", "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" }
Die App-ID des Dienstprinzipals wird in den nachfolgenden Schritten verwendet, um die Konfiguration des Dienstprinzipalnamens abzuschließen. Verwenden Sie az ad sp list, um die App-ID des Dienstprinzipalnamens zur späteren Verwendung in eine Variable zu speichern.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Der im vorherigen Schritt erstellte Dienstprinzipalname muss über einen Umleitungs-URI verfügen, um die Genehmigung des Authentifizierungsprozesses abzuschließen, und er muss so konvertiert werden, dass er mit mehreren Mandanten verwendet werden kann. Verwenden Sie az ad app update, um https://www.microsoft.com als Umleitungs-URI hinzuzufügen und mehrere Mandanten auf spn-1-peer-vnet zu aktivieren.
az ad app update \ --id $appid1 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
Der Dienstprinzipal muss über User.Read-Berechtigungen für das Verzeichnis verfügen. Verwenden Sie az ad app permission add und az ad app permission grant, um die Microsoft Graph-Berechtigung User.Read zum Dienstprinzipal hinzuzufügen.
az ad app permission add \ --id $appid1 \ --api 00000003-0000-0000-c000-000000000000 \ --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope az ad app permission grant \ --id $appid1 \ --api 00000003-0000-0000-c000-000000000000 \ --scope User.Read
Erstellen von subscription-2-Ressourcen
Verwenden Sie az login, um sich bei subscription-2 mit einem Benutzerkonto mit Berechtigungen zum Erstellen einer Ressourcengruppe, eines virtuellen Netzwerks und eines Dienstprinzipalnamens im Microsoft Entra ID-Mandanten, der subscription-2 zugeordnet ist, anzumelden.
az login
Erstellen Sie mit az group create eine Ressourcengruppe.
az group create \ --name test-rg-2 \ --location westus2
Verwenden Sie az network vnet create, um ein virtuelles Netzwerk namens vnet-2 in subscription-2 zu erstellen.
az network vnet create \ --resource-group test-rg-2 \ --location westus2 \ --name vnet-2 \ --address-prefixes 10.1.0.0/16 \ --subnet-name subnet-1 \ --subnet-prefixes 10.1.0.0/24
Erstellen von spn-2-peer-vnet
Erstellen Sie spn-2-peer-vnet mit einem Bereich für das virtuelle Netzwerk, das im vorherigen Schritt erstellt wurde. Dieser Dienstprinzipalname wird dem Bereich von vnet-2 in einem zukünftigen Schritt hinzugefügt, um das VNet-Peer zuzulassen.
Verwenden Sie az network vnet show, um die Ressourcen-ID des virtuellen Netzwerks, das Sie zuvor erstellt haben, in einer Variablen zu speichern, die in einem späteren Schritt verwendet werden kann.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Verwenden Sie az ad sp create-for-rbac, um spn-2-peer-vnet- mit der Rolle Netzwerkmitwirkender, die auf das virtuelle Netzwerk vnet-2 festgelegt ist, zu erstellen.
az ad sp create-for-rbac \ --name spn-2-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Notieren Sie sich die Ausgabe der Erstellung in diesem Schritt. Kopieren Sie das Kennwort an einen sicheren Ort, damit Sie es in den späteren Anmeldeschritten verwenden können. Das Kennwort wird nicht noch einmal angezeigt.
Die Ausgabe sieht in etwa wie folgt aus.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }
Die App-ID des Dienstprinzipals wird in den nachfolgenden Schritten verwendet, um die Konfiguration des Dienstprinzipalnamens abzuschließen. Verwenden Sie az ad sp list, um die ID des Dienstprinzipalnamens zur späteren Verwendung in eine Variable zu speichern.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Der im vorherigen Schritt erstellte Dienstprinzipalname muss über einen Umleitungs-URI verfügen, um die Genehmigung des Authentifizierungsprozesses abzuschließen, und er muss so konvertiert werden, dass er mit mehreren Mandanten verwendet werden kann. Verwenden Sie az ad app update, um https://www.microsoft.com als Umleitungs-URI hinzuzufügen und mehrere Mandanten auf spn-2-peer-vnet zu aktivieren.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
Der Dienstprinzipal muss über User.Read-Berechtigungen für das Verzeichnis verfügen. Verwenden Sie az ad app permission add und az ad app permission grant, um die Microsoft Graph-Berechtigung User.Read zum Dienstprinzipal hinzuzufügen.
az ad app permission add \ --id $appid2 \ --api 00000003-0000-0000-c000-000000000000 \ --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope az ad app permission grant \ --id $appid2 \ --api 00000003-0000-0000-c000-000000000000 \ --scope User.Read
Registrieren von spn-2-peer-vnet in subscription-1 und Zuweisen von Berechtigungen zu vnet-1
Ein Benutzerkonto mit Administratorberechtigungen im Microsoft Entra ID-Mandanten muss den Vorgang zum Hinzufügen von spn-2-vnet-peer zu subscription-1 abschließen. Nach Abschluss können spn-2-vnet-peer Berechtigungen für vnet-1 zugewiesen werden.
Registrieren der spn-2-peer-vnet-App in subscription-1
Ein*e Administrator*in im Microsoft Entra ID-Mandant subscription-1 muss den Dienstprinzipal spn-2-peer-vnet genehmigen, damit er dem virtuellen Netzwerk vnet-1 hinzugefügt werden kann. Verwenden Sie den folgenden Befehl, um sich bei subscription-2 anzumelden und die App-ID von spn-2-peer-vnet zu finden.
Melden Sie sich mithilfe von az login bei subscription-2 an.
az login
Verwenden Sie az ad sp list, um die App-ID von spn-2-peer-vnet abzurufen. Notieren Sie sich die App-ID in der Ausgabe. Diese App-ID wird in den nachfolgenden Schritten in der Authentifizierungs-URL verwendet.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Verwenden Sie die App-ID für spn-2-peer-vnet und die Microsoft Entra ID-Mandanten-ID für subscription-1, um die Anmelde-URL für die Genehmigung zu erstellen. Die URL wird aus dem folgenden Beispiel erstellt:
https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
Die URL sieht ähnlich wie im folgenden Beispiel aus.
https://login.microsoftonline.com/c2d26d12-71cc-4f3b-8557-1fa18d077698/oauth2/authorize?client_id=22223333-cccc-4444-dddd-5555eeee6666&response_type=code&redirect_uri=https://www.microsoft.com
Öffnen Sie die URL in einem Webbrowser, und melden Sie sich mit einem Administratorkonto im Microsoft Entra ID-Mandanten in subscription-1 an.
Genehmigen Sie die Anwendung spn-2-peer-vnet. Die „microsoft.com“-Homepage zeigt an, ob die Authentifizierung erfolgreich war.
Zuweisen von spn-2-peer-vnet zu vnet-1
Nachdem der*die Administrator*in spn-2-peer-vnet genehmigt hat, fügen Sie es dem virtuellen Netzwerk vnet-1 als Netzwerkmitwirkender hinzu.
Melden Sie sich mithilfe von az login bei subscription-1 an.
az login
Verwenden Sie az ad sp list, um die App-ID für spn-2-peer-vnet zu finden und in eine Variable zur späteren Verwendung zu speichern.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Verwenden Sie az network vnet show, um die Ressourcen-ID vpn vnet-1 zu erhalten und in eine Variable für die Verwendung in späteren Schritten zu speichern.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Verwenden Sie den Befehl az role assignment create, um spn-2-peer-vnet zu vnet-1 als Netzwerkmitwirkender hinzuzufügen.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Registrieren von spn-1-peer-vnet in subscription-2 und Zuweisen von Berechtigungen zu vnet-2
Ein Benutzerkonto mit Administratorberechtigungen im Microsoft Entra ID-Mandanten muss den Vorgang zum Hinzufügen von spn-1-peer-vnet zu subscription-2 abschließen. Nach Abschluss können spn-1-peer-vnet Berechtigungen für vnet-2 zugewiesen werden.
Registrieren der spn-1-peer-vnet-App in subscription-2
Ein*e Administrator*in im Microsoft Entra ID-Mandant subscription-2 muss den Dienstprinzipal spn-1-peer-vnet genehmigen, damit er dem virtuellen Netzwerk vnet-2 hinzugefügt werden kann. Verwenden Sie den folgenden Befehl, um sich bei subscription-1 anzumelden und die App-ID von spn-1-peer-vnet zu finden.
Melden Sie sich mithilfe von az login bei subscription-1 an.
az login
Verwenden Sie az ad sp list, um die App-ID von spn-1-peer-vnet abzurufen. Notieren Sie sich die App-ID in der Ausgabe. Diese App-ID wird in den nachfolgenden Schritten in der Authentifizierungs-URL verwendet.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Verwenden Sie die App-ID für spn-1-peer-vnet und die Microsoft Entra ID-Mandanten-ID für subscription-2, um die Anmelde-URL für die Genehmigung zu erstellen. Die URL wird aus dem folgenden Beispiel erstellt:
https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
Die URL sieht ähnlich wie im folgenden Beispiel aus.
https://login.microsoftonline.com/24baaf57-f30d-4fba-a20e-822030f7eba3/oauth2/authorize?client_id=11112222-bbbb-3333-cccc-4444dddd5555&response_type=code&redirect_uri=https://www.microsoft.com
Öffnen Sie die URL in einem Webbrowser, und melden Sie sich mit einem Administratorkonto im Microsoft Entra ID-Mandanten in subscription-2 an.
Genehmigen Sie die Anwendung spn-1-peer-vnet. Die „microsoft.com“-Homepage zeigt an, ob die Authentifizierung erfolgreich war.
Zuweisen von spn-1-peer-vnet zu vnet-2
Nachdem der*die Administrator*in spn-1-peer-vnet genehmigt hat, fügen Sie es dem virtuellen Netzwerk vnet-2 als Netzwerkmitwirkender hinzu.
Melden Sie sich mithilfe von az login bei subscription-2 an.
az login
Verwenden Sie az ad sp list, um die App-ID für spn-1-peer-vnet zu finden und in eine Variable zur späteren Verwendung zu speichern.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Verwenden Sie az network vnet show, um die Ressourcen-ID vpn vnet-2 zu erhalten und in eine Variable für die Verwendung in späteren Schritten zu speichern.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Verwenden Sie az role assignment create, um spn-1-peer-vnet zu vnet-2 als Netzwerkmitwirkender hinzuzufügen.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Peeren von vnet-1 mit vnet-2 und vnet-2 mit vnet-1
Um vnet-1- mit vnet-2- zu peeren, verwenden Sie die Dienstprinzipal-App-ID und das Kennwort, um sich beim Microsoft Entra ID-Mandanten anzumelden, der subscription-1 zugeordnet ist.
Abrufen der App-ID von spn-1-peer-vnet und spn-2-peer-vnet
Melden Sie sich für die Zwecke dieses Artikels bei jedem Abonnement an, und rufen Sie die App-ID der einzelnen Dienstprinzipalnamen und die Ressourcen-ID jedes virtuellen Netzwerks ab. Verwenden Sie diese Werte, um sich bei jedem Abonnement mit dem Dienstprinzipalnamen in den späteren Schritten anzumelden. Diese Schritte sind nicht erforderlich, um die virtuellen Netzwerke zu peeren, wenn beide Seiten bereits über die App-ID der Dienstprinzipalnamen und die Ressourcen-ID der virtuellen Netzwerke verfügen.
Verwenden Sie az login, um sich bei subscription-1 mit einem regulären Benutzerkonto anzumelden.
az login
Verwenden Sie az network vnet show, um die Ressourcen-ID von vnet-1 zu erhalten und in eine Variable für die Verwendung in späteren Schritten zu speichern.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Verwenden Sie az ad sp list, um die App-ID von spn-1-peer-vnet zu erhalten und in eine Variable zur Verwendung in späteren Schritten zu speichern.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Verwenden Sie az login, um sich bei subscription-2 mit einem regulären Benutzerkonto anzumelden.
az login
Verwenden Sie az network vnet show, um die Ressourcen-ID vpn vnet-2 zu erhalten und in eine Variable für die Verwendung in späteren Schritten zu speichern.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Verwenden Sie az ad sp list, um die App-ID von spn-2-peer-vnet zu erhalten und in eine Variable zur Verwendung in späteren Schritten zu speichern.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Verwenden Sie az logout, um sich bei der Azure CLI-Sitzung mit dem folgenden Befehl abzumelden. Schließen Sie das Terminal nicht.
az logout
Peeren von virtuellen Netzwerken
Verwenden Sie az login, um sich bei subscription-1 mit spn-1-peer-vnet anzumelden. Sie benötigen die Mandanten-ID des Microsoft Entra ID-Mandanten von subscription-1, um den Befehl abzuschließen. Das Kennwort wird im Beispiel mit einem Variablenplatzhalter angezeigt. Ersetzen Sie es, durch das Kennwort, das Sie während der Ressourcenerstellung notiert haben. Ersetzen Sie den Platzhalter in
--tenant
durch die Mandanten-ID des Microsoft Entra ID-Mandanten von subscription-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Verwenden Sie az login, um sich bei subscription-2 mit spn-2-peer-vnet anzumelden. Sie benötigen die Mandanten-ID des Microsoft Entra ID-Mandanten von subscription-2, um den Befehl abzuschließen. Das Kennwort wird im Beispiel mit einem Variablenplatzhalter angezeigt. Ersetzen Sie es, durch das Kennwort, das Sie während der Ressourcenerstellung notiert haben. Ersetzen Sie den Platzhalter in
--tenant
durch die Mandanten-ID des Microsoft Entra ID-Mandanten von subscription-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Verwenden Sie az account set, um den Kontext zu subscription-1 zu ändern.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Verwenden Sie az network vnet peering create, um ein Peering virtueller Netzwerke zwischen vnet-1 und vnet-2 zu erstellen.
az network vnet peering create \ --name vnet-1-to-vnet-2 \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --remote-vnet $vnetid2 \ --allow-vnet-access
Verwenden Sie az network vnet peering list, um das Peering virtueller Netzwerke zwischen vnet-1 und vnet-2 zu überprüfen.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Verwenden Sie az account set, um den Kontext zu subscription-2 zu ändern.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Verwenden Sie az network vnet peering create, um ein Peering virtueller Netzwerke zwischen vnet-2 und vnet-1 zu erstellen.
az network vnet peering create \ --name vnet-2-to-vnet-1 \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --remote-vnet $vnetid1 \ --allow-vnet-access
Verwenden Sie az network vnet peering list, um das Peering virtueller Netzwerke zwischen vnet-2 und vnet-1 zu überprüfen.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table