Delen via


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.

  • 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

  1. 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
    
  2. Maak een resourcegroep maken met az group create.

    az group create \
        --name test-rg-1 \
        --location eastus2  
    
  3. 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.

  1. 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)
    
  2. 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"    
    }
    
  3. 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)
    
  4. 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     
    
  5. 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

  1. 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
    
  2. Maak een resourcegroep met az group create.

    az group create \
        --name test-rg-2 \
        --location westus2  
    
  3. 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.

  1. 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)
    
  2. 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"
    }    
    
  3. 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)
    
  4. 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     
    
  5. 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.

  1. Gebruik az login om u aan te melden bij subscription-2.

    az login
    
  2. 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
    
  3. 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
    
  4. Open de URL in een webbrowser en meld u aan met een beheerder in de Microsoft Entra ID-tenant in abonnement 1.

  5. 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.

  1. Gebruik az login om u aan te melden bij subscription-1.

    az login
    
  2. 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)
    
  3. 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)
    
  4. 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.

  1. Gebruik az login om u aan te melden bij subscription-1.

    az login
    
  2. 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
    
  3. 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
    
  4. Open de URL in een webbrowser en meld u aan met een beheerder in de Microsoft Entra ID-tenant in abonnement 2.

  5. 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.

  1. Gebruik az login om u aan te melden bij subscription-2.

    az login
    
  2. 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)
    
  3. 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)
    
  4. 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.

  1. Gebruik az login om u aan te melden bij abonnement-1 met een normaal gebruikersaccount.

    az login
    
  2. 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)
    
  3. 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)
    
  4. Gebruik az login om u aan te melden bij subscription-2 met een normaal gebruikersaccount.

    az login
    
  5. 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)
    
  6. 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
    
  7. 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

  1. 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
    
  2. 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
    
  3. Gebruik az account set om de context te wijzigen in subscription-1.

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. 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
    
  5. 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
    
  6. Gebruik az account set om de context te wijzigen in subscription-2.

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. 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
    
  8. 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