Virtuele netwerken in verschillende abonnementen verbinden met service-principal-namen
Er bestaan scenario's waarbij u virtuele netwerken in verschillende abonnementen moet verbinden zonder gebruik te maken van gebruikersaccounts of gastaccounts. In deze procedure voor virtueel netwerk leert u hoe u twee virtuele netwerken koppelt aan SPN's (Service Principal Names) in verschillende abonnementen. Peerings voor virtuele netwerken tussen virtuele netwerken in verschillende abonnementen en Tenants van Microsoft Entra ID moeten worden gekoppeld via Azure CLI of PowerShell. Er is momenteel geen optie in Azure Portal om virtuele netwerken te koppelen aan SPN's in verschillende abonnementen.
Vereisten
Een Azure-account met twee actieve abonnementen en twee Microsoft Entra ID-tenants. Gratis een account maken
Accountmachtigingen voor het maken van een service-principal, het toewijzen van app-machtigingen en het maken van resources in de Microsoft Entra ID-tenant die aan elk abonnement is gekoppeld.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.
- Voor dit artikel is versie 2.31.0 of hoger van de Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.
Gebruikte resources
SPN | Resourcegroep | Abonnement/tenant | Virtueel netwerk | Locatie |
---|---|---|---|---|
spn-1-peer-vnet | test-rg-1 | abonnement-1 | vnet-1 | VS - oost 2 |
spn-2-peer-vnet | test-rg-2 | abonnement-2 | vnet-2 | VS - west 2 |
Abonnement-1-resources maken
Gebruik az sign-in om u aan te melden bij subscription-1 met een gebruikersaccount met machtigingen voor het maken van een resourcegroep, een virtueel netwerk en een SPN in de Microsoft Entra ID-tenant die is gekoppeld aan abonnement-1
az login
Maak een resourcegroep maken met az group create.
az group create \ --name test-rg-1 \ --location eastus2
Gebruik az network vnet create om een virtueel netwerk met de naam vnet-1 te maken in abonnement-1.
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
Spn-1-peer-vnet maken
Maak spn1-peer-vnet met een bereik voor het virtuele netwerk dat in de vorige stap is gemaakt. Deze SPN wordt in een toekomstige stap toegevoegd aan het bereik van vnet-2 om de peer van het virtuele netwerk mogelijk te maken.
Gebruik az network vnet show om de resource-id te plaatsen van het virtuele netwerk dat u eerder in een variabele hebt gemaakt voor gebruik in de latere stap.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Gebruik az ad sp create-for-rbac om spn-1-peer-vnet te maken met de rol Netwerkbijdrager die is gericht op het virtuele netwerk vnet-1.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Noteer de uitvoer van het maken in de stap. Het wachtwoord wordt hier alleen weergegeven in deze uitvoer. Kopieer het wachtwoord naar een veilige locatie voor gebruik in de latere aanmeldingsstappen.
{ "appId": "11112222-bbbb-3333-cccc-4444dddd5555", "displayName": "spn-1-peer-vnet", "password": "", "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" }
De appId van de service-principal wordt gebruikt in de volgende stappen om de configuratie van de SPN te voltooien. Gebruik az ad sp list om de appId van de SPN in een variabele te plaatsen voor later gebruik.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
De SPN die in de vorige stap is gemaakt, moet een omleidings-URI hebben om de goedkeuring van het verificatieproces te voltooien en moet worden geconverteerd naar multitenant-gebruik. Gebruik az ad app update om toe te voegen https://www.microsoft.com als een omleidings-URI en multitenant in te schakelen op spn-1-peer-vnet.
az ad app update \ --id $appid1 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
De service-principal moet user.read-machtigingen hebben voor de map. Gebruik az ad app permission add en az ad app permission grant om de Microsoft Graph-machtigingen van User.Read toe te voegen aan de service-principal.
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
Abonnement-2-resources maken
Gebruik az login om u aan te melden bij subscription-2 met een gebruikersaccount met machtigingen voor het maken van een resourcegroep, een virtueel netwerk en een SPN in de Microsoft Entra ID-tenant die is gekoppeld aan abonnement-2
az login
Maak een resourcegroep met az group create.
az group create \ --name test-rg-2 \ --location westus2
Gebruik az network vnet create om een virtueel netwerk met de naam vnet-2 te maken in abonnement-2.
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
Spn-2-peer-vnet maken
Maak spn-2-peer-vnet met een bereik voor het virtuele netwerk dat in de vorige stap is gemaakt. Deze SPN wordt in een toekomstige stap toegevoegd aan het bereik van vnet-2 om de peer van het virtuele netwerk mogelijk te maken.
Gebruik az network vnet show om de resource-id te plaatsen van het virtuele netwerk dat u eerder in een variabele hebt gemaakt voor gebruik in de latere stap.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Gebruik az ad sp create-for-rbac om spn-2-peer-vnet te maken met de rol Netwerkbijdrager die is gericht op het virtuele netwerk vnet-2.
az ad sp create-for-rbac \ --name spn-2-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Noteer de uitvoer van het maken in de stap. Kopieer het wachtwoord naar een veilige locatie voor gebruik in de latere aanmeldingsstappen. Het wachtwoord wordt niet opnieuw weergegeven.
De uitvoer ziet er ongeveer als volgt uit.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }
De appId van de service-principal wordt gebruikt in de volgende stappen om de configuratie van de SPN te voltooien. Gebruik az ad sp list om de id van de SPN in een variabele te plaatsen voor later gebruik.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
De SPN die in de vorige stap is gemaakt, moet een omleidings-URI hebben om de goedkeuring van het verificatieproces te voltooien en moet worden geconverteerd naar multitenant-gebruik. Gebruik az ad app update om toe te voegen https://www.microsoft.com als een omleidings-URI en multitenant in te schakelen op spn-2-peer-vnet.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
De service-principal moet user.read-machtigingen hebben voor de map. Gebruik az ad app permission add en az ad app permission grantom de Microsoft Graph-machtigingen van User.Read toe te voegen aan de service-principal.
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
Spn-2-peer-vnet registreren in abonnement-1 en machtigingen toewijzen aan vnet-1
Een gebruikersaccount met beheerdersmachtigingen in de Microsoft Entra ID-tenant moet het proces voor het toevoegen van spn-2-vnet-peer aan abonnement-1 voltooien. Zodra de bewerking is voltooid, kan spn-2-vnet-peer machtigingen aan vnet-1 worden toegewezen.
Spn-2-peer-vnet-app registreren in abonnement-1
Een beheerder in het abonnement-1 Microsoft Entra ID-tenant moet de service-principal spn-2-peer-vnet goedkeuren, zodat het kan worden toegevoegd aan het virtuele netwerk vnet-1. Gebruik de volgende opdracht om u aan te melden bij subscription-2 om de appID van spn-2-peer-vnet te vinden.
Gebruik az login om u aan te melden bij subscription-2.
az login
Gebruik az ad sp list om de appId van spn-2-peer-vnet te verkrijgen. Noteer de appID in de uitvoer. Deze appID wordt gebruikt in de verificatie-URL in de latere stappen.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Gebruik de appid voor spn-2-peer-vnet en de tenant-id van Microsoft Entra ID voor abonnement-1 om de aanmeldings-URL voor de goedkeuring te bouwen. De URL is opgebouwd uit het volgende voorbeeld:
https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
De URL ziet er ongeveer uit als in het onderstaande voorbeeld.
https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/oauth2/authorize?client_id=22223333-cccc-4444-dddd-5555eeee6666&response_type=code&redirect_uri=https://www.microsoft.com
Open de URL in een webbrowser en meld u aan met een beheerder in de Microsoft Entra ID-tenant in abonnement 1.
Keur de toepassing spn-2-peer-vnet goed. De startpagina van microsoft.com wordt weergegeven als de verificatie is geslaagd.
Spn-2-peer-vnet toewijzen aan vnet-1
Nadat de beheerder spn-2-peer-vnet heeft goedgekeurd, voegt u het toe aan het virtuele netwerk vnet-1 als inzender voor netwerken.
Gebruik az login om u aan te melden bij subscription-1.
az login
Gebruik az ad sp list om de appId voor spn-2-peer-vnet te vinden en plaats deze in een variabele voor later gebruik.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Gebruik az network vnet show om de resource-id van vnet-1 op te halen in een variabele voor gebruik in de latere stappen.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Gebruik az role assignment create the following command to add spn-2-peer-vnet to vnet-1 as a Network Contributor.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Spn-1-peer-vnet registreren in abonnement-2 en machtigingen toewijzen aan vnet-2
Een gebruikersaccount met beheerdersmachtigingen in de Microsoft Entra ID-tenant moet het proces voor het toevoegen van spn-1-peer-vnet aan subscription-2 voltooien. Zodra het is voltooid, kan aan spn-1-peer-vnet machtigingen worden toegewezen aan vnet-2.
Spn-1-peer-vnet-app registreren in abonnement-2
Een beheerder in de Microsoft Entra ID-tenant van abonnement 2 moet de service-principal spn-1-peer-vnet goedkeuren, zodat het kan worden toegevoegd aan het virtuele netwerk vnet-2. Gebruik de volgende opdracht om u aan te melden bij subscription-1 om de appID van spn-1-peer-vnet te vinden.
Gebruik az login om u aan te melden bij subscription-1.
az login
Gebruik az ad sp list om de appId van spn-1-peer-vnet te verkrijgen. Noteer de appID in de uitvoer. Deze appID wordt gebruikt in de verificatie-URL in de latere stappen.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Gebruik de appid voor spn-1-peer-vnet en de tenant-id van Microsoft Entra ID voor abonnement-2 om de aanmeldings-URL voor de goedkeuring te bouwen. De URL is opgebouwd uit het volgende voorbeeld:
https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
De URL ziet er ongeveer uit als in het onderstaande voorbeeld.
https://login.microsoftonline.com/bbbbcccc-1111-dddd-2222-eeee3333ffff/oauth2/authorize?client_id=11112222-bbbb-3333-cccc-4444dddd5555&response_type=code&redirect_uri=https://www.microsoft.com
Open de URL in een webbrowser en meld u aan met een beheerder in de Microsoft Entra ID-tenant in abonnement 2.
Keur de toepassing spn-1-peer-vnet goed. De startpagina van microsoft.com wordt weergegeven als de verificatie is geslaagd.
Spn-1-peer-vnet toewijzen aan vnet-2
Zodra de beheerder spn-1-peer-vnet goedkeurt, voegt u dit toe aan het virtuele netwerk vnet-2 als inzender voor netwerken.
Gebruik az login om u aan te melden bij subscription-2.
az login
Gebruik az ad sp list om de appId voor spn-1-peer-vnet te vinden en plaats deze in een variabele voor later gebruik.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Gebruik az network vnet show om de resource-id van vnet-2 op te halen in een variabele voor gebruik in de latere stappen.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Gebruik az role assignment create om spn-1-peer-vnet toe te voegen aan vnet-2 als inzender voor netwerken.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Peer vnet-1 naar vnet-2 en vnet-2 naar vnet-1
Als u vnet-1 wilt koppelen aan vnet-2, gebruikt u de appId en het wachtwoord van de service-principal om u aan te melden bij de Microsoft Entra ID-tenant die is gekoppeld aan abonnement-1.
De appId van spn-1-peer-vnet en spn-2-peer-vnet verkrijgen
Voor dit artikel meldt u zich aan bij elk abonnement en verkrijgt u de appID van elke SPN en de resource-id van elk virtueel netwerk. Gebruik deze waarden om u aan te melden bij elk abonnement met de SPN in de latere stappen. Deze stappen zijn niet vereist om de virtuele netwerken te koppelen als beide zijden al de appID van de SPN's en de resource-id van de virtuele netwerken hebben.
Gebruik az login om u aan te melden bij abonnement-1 met een normaal gebruikersaccount.
az login
Gebruik az network vnet show om de resource-id van vnet-1 op te halen in een variabele voor gebruik in de latere stappen.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Gebruik az ad sp list om de appId van spn-1-peer-vnet te verkrijgen en in een variabele te plaatsen voor gebruik in de latere stappen.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Gebruik az login om u aan te melden bij subscription-2 met een normaal gebruikersaccount.
az login
Gebruik az network vnet show om de resource-id van vnet-2 op te halen in een variabele voor gebruik in de latere stappen.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Gebruik az ad sp list om de appId van spn-2-peer-vnet te verkrijgen en in een variabele te plaatsen voor gebruik in de latere stappen.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Gebruik az logout om u af te melden bij de Azure CLI-sessie met de volgende opdracht. Sluit de terminal niet.
az logout
Peering van de virtuele netwerken
Gebruik az login om u aan te melden bij subscription-1 met spn-1-peer-vnet. U hebt de tenant-id van de Microsoft Entra ID-tenant nodig die is gekoppeld aan abonnement 1 om de opdracht te voltooien. Het wachtwoord wordt weergegeven in het voorbeeld met een tijdelijke aanduiding voor variabelen. Vervang door het wachtwoord dat u hebt genoteerd tijdens het maken van de resource. Vervang de tijdelijke aanduiding door
--tenant
de tenant-id van de Microsoft Entra ID-tenant die is gekoppeld aan abonnement-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Gebruik az login om u aan te melden bij subscription-2 met spn-2-peer-vnet. U hebt de tenant-id van de Microsoft Entra ID-tenant nodig die is gekoppeld aan abonnement 2 om de opdracht te voltooien. Het wachtwoord wordt weergegeven in het voorbeeld met een tijdelijke aanduiding voor variabelen. Vervang door het wachtwoord dat u hebt genoteerd tijdens het maken van de resource. Vervang de tijdelijke aanduiding door
--tenant
de tenant-id van de Microsoft Entra ID-tenant die is gekoppeld aan abonnement-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Gebruik az account set om de context te wijzigen in subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Gebruik az network vnet peering create om de peering van het virtuele netwerk tussen vnet-1 en vnet-2 te maken.
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
Gebruik az network vnet peering list om de peering van het virtuele netwerk tussen vnet-1 en vnet-2 te verifiëren.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Gebruik az account set om de context te wijzigen in subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Gebruik az network vnet peering create om de peering van virtuele netwerken tussen vnet-2 en vnet-1 te maken.
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
Gebruik az network vnet peering list om de peering van het virtuele netwerk tussen vnet-2 en vnet-1 te verifiëren.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table