Anslut virtuella nätverk i olika prenumerationer med tjänstens huvudnamn
Det finns scenarier där du behöver ansluta virtuella nätverk i olika prenumerationer utan att använda användarkonton eller gästkonton. I det här virtuella nätverket får du lära dig hur du peerkopplar två virtuella nätverk med tjänsthuvudnamn (SPN) i olika prenumerationer. Peering för virtuella nätverk mellan virtuella nätverk i olika prenumerationer och Microsoft Entra ID-klienter måste peer-kopplas via Azure CLI eller PowerShell. För närvarande finns det inget alternativ i Azure-portalen för att peer-koppla virtuella nätverk med SPN i olika prenumerationer.
Förutsättningar
Ett Azure-konto med två aktiva prenumerationer och två Microsoft Entra ID-klienter. Skapa ett konto utan kostnad.
Kontobehörigheter för att skapa ett huvudnamn för tjänsten, tilldela appbehörigheter och skapa resurser i Microsoft Entra ID-klientorganisationen som är associerad med varje prenumeration.
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.
När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
- Den här artikeln kräver version 2.31.0 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Resurser som används
SPN | Resursgrupp | Prenumeration/klientorganisation | Virtuellt nätverk | Plats |
---|---|---|---|---|
spn-1-peer-vnet | test-rg-1 | subscription-1 | vnet-1 | USA, östra 2 |
spn-2-peer-vnet | test-rg-2 | subscription-2 | vnet-2 | Västra USA 2 |
Skapa prenumeration 1-resurser
Använd az sign-in för att logga in på subscription-1 med ett användarkonto med behörighet att skapa en resursgrupp, ett virtuellt nätverk och ett SPN i Microsoft Entra ID-klientorganisationen som är associerad med subscription-1
az login
Skapa en resursgrupp med az group create.
az group create \ --name test-rg-1 \ --location eastus2
Använd az network vnet create för att skapa ett virtuellt nätverk med namnet vnet-1 i subscription-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
Skapa spn-1-peer-vnet
Skapa spn1-peer-vnet med ett omfång för det virtuella nätverk som skapades i föregående steg. Detta SPN läggs till i omfånget för vnet-2 i ett framtida steg för att tillåta den virtuella nätverks peer-datorn.
Använd az network vnet show för att placera resurs-ID:t för det virtuella nätverk som du skapade tidigare i en variabel för användning i det senare steget.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Använd az ad sp create-for-rbac för att skapa spn-1-peer-vnet med rollen Nätverksdeltagare som är begränsad till det virtuella nätverket vnet-1.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Anteckna utdata från skapandet i steget. Lösenordet visas bara här i dessa utdata. Kopiera lösenordet till en säker plats för användning i de senare inloggningsstegen.
{ "appId": "11112222-bbbb-3333-cccc-4444dddd5555", "displayName": "spn-1-peer-vnet", "password": "", "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" }
AppId för tjänstens huvudnamn används i följande steg för att slutföra konfigurationen av SPN. Använd az ad sp list för att placera appId för SPN i en variabel för senare användning.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
DET SPN som skapades i föregående steg måste ha en omdirigerings-URI för att slutföra godkännandet av autentiseringsprocessen och måste konverteras till användning av flera klientorganisationer. Använd az ad app update för att lägga https://www.microsoft.com till som en omdirigerings-URI och aktivera multitenant på spn-1-peer-vnet.
az ad app update \ --id $appid1 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
Tjänstens huvudnamn måste ha behörigheten User.Read till katalogen. Använd az ad app permission add and az ad app permission grant för att lägga till Microsoft Graph-behörigheterna user.Read i tjänstens huvudnamn.
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
Skapa prenumeration 2-resurser
Använd az login för att logga in på subscription-2 med ett användarkonto med behörighet att skapa en resursgrupp, ett virtuellt nätverk och ett SPN i Microsoft Entra ID-klientorganisationen som är associerad med subscription-2
az login
Skapa resursgrupp med az group create.
az group create \ --name test-rg-2 \ --location westus2
Använd az network vnet create för att skapa ett virtuellt nätverk med namnet vnet-2 i subscription-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
Skapa spn-2-peer-vnet
Skapa spn-2-peer-vnet med ett omfång för det virtuella nätverk som skapades i föregående steg. Detta SPN läggs till i omfånget för vnet-2 i ett framtida steg för att tillåta den virtuella nätverks peer-datorn.
Använd az network vnet show för att placera resurs-ID:t för det virtuella nätverk som du skapade tidigare i en variabel för användning i det senare steget.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Använd az ad sp create-for-rbac för att skapa spn-2-peer-vnet med rollen Nätverksdeltagare som är begränsad till det virtuella nätverket vnet-2.
az ad sp create-for-rbac \ --name spn-2-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Anteckna utdata från skapandet i steget. Kopiera lösenordet till en säker plats för användning i de senare inloggningsstegen. Lösenordet visas inte igen.
Utdata ser ut ungefär som följande utdata.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }
AppId för tjänstens huvudnamn används i följande steg för att slutföra konfigurationen av SPN. Använd az ad sp-listan för att placera ID:t för SPN i en variabel för senare användning.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
DET SPN som skapades i föregående steg måste ha en omdirigerings-URI för att slutföra godkännandet av autentiseringsprocessen och måste konverteras till användning av flera klientorganisationer. Använd az ad app update för att lägga https://www.microsoft.com till som en omdirigerings-URI och aktivera multitenant på spn-2-peer-vnet.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
Tjänstens huvudnamn måste ha behörigheten User.Read till katalogen. Använd az ad app permission add and az ad app permission grantför att lägga till Microsoft Graph-behörigheterna user.Read i tjänstens huvudnamn.
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
Registrera spn-2-peer-vnet i subscription-1 och tilldela behörigheter till vnet-1
Ett användarkonto med administratörsbehörigheter i Microsoft Entra ID-klientorganisationen måste slutföra processen med att lägga till spn-2-vnet-peer till subscription-1. När det är klart kan spn-2-vnet-peer tilldelas behörigheter till vnet-1.
Registrera spn-2-peer-vnet-appen i subscription-1
En administratör i microsoft entra-ID-klientorganisationen för subscription-1 måste godkänna tjänstens huvudnamn spn-2-peer-vnet så att det kan läggas till i det virtuella nätverket vnet-1. Använd följande kommando för att logga in på subscription-2 för att hitta appID för spn-2-peer-vnet.
Använd az login för att logga in på subscription-2.
az login
Använd az ad sp list för att hämta appId för spn-2-peer-vnet. Observera appID i utdata. Det här appID:et används i autentiserings-URL:en i de senare stegen.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Använd appid för spn-2-peer-vnet och Microsoft Entra ID-klient-ID för subcription-1 för att skapa inloggnings-URL:en för godkännandet. URL:en skapas från följande exempel:
https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
URL:en ser ut ungefär som exemplet nedan.
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
Öppna URL:en i en webbläsare och logga in med en administratör i Microsoft Entra ID-klientorganisationen i subscription-1.
Godkänn programmet spn-2-peer-vnet. Startsidan för microsoft.com visar om autentiseringen lyckades.
Tilldela spn-2-peer-vnet till vnet-1
När administratören har godkänt spn-2-peer-vnet lägger du till det i det virtuella nätverket vnet-1 som nätverksdeltagare.
Använd az login för att logga in på subscription-1.
az login
Använd az ad sp list för att hitta appId för spn-2-peer-vnet och placera i en variabel för senare användning.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Använd Använd az network vnet show för att hämta resurs-ID för vnet-1 till en variabel för användning i de senare stegen.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Använd az role assignment create följande kommando för att lägga till spn-2-peer-vnet till vnet-1 som nätverksdeltagare.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Registrera spn-1-peer-vnet i subscription-2 och tilldela behörigheter till vnet-2
Ett användarkonto med administratörsbehörigheter i Microsoft Entra ID-klientorganisationen måste slutföra processen med att lägga till spn-1-peer-vnet i subscription-2. När det är klart kan spn-1-peer-vnet tilldelas behörigheter till vnet-2.
Registrera spn-1-peer-vnet-appen i subscription-2
En administratör i prenumeration 2 Microsoft Entra ID-klientorganisationen måste godkänna tjänstens huvudnamn spn-1-peer-vnet så att det kan läggas till i det virtuella nätverket vnet-2. Använd följande kommando för att logga in på subscription-1 för att hitta appID för spn-1-peer-vnet.
Använd az login för att logga in på subscription-1.
az login
Använd az ad sp list för att hämta appId för spn-1-peer-vnet. Observera appID i utdata. Det här appID:et används i autentiserings-URL:en i de senare stegen.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Använd appid för spn-1-peer-vnet och Microsoft Entra ID-klient-ID för subscription-2 för att skapa inloggnings-URL:en för godkännandet. URL:en skapas från följande exempel:
https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
URL:en ser ut ungefär som exemplet nedan.
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
Öppna URL:en i en webbläsare och logga in med en administratör i Microsoft Entra ID-klientorganisationen i subscription-2.
Godkänn programmet spn-1-peer-vnet. Startsidan för microsoft.com visar om autentiseringen lyckades.
Tilldela spn-1-peer-vnet till vnet-2
När administratören har godkänt spn-1-peer-vnet lägger du till det i det virtuella nätverket vnet-2 som nätverksdeltagare.
Använd az login för att logga in på subscription-2.
az login
Använd az ad sp list för att hitta appId för spn-1-peer-vnet och placera i en variabel för senare användning.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Använd az network vnet show för att hämta resurs-ID för vnet-2 till en variabel för användning i de senare stegen.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Använd az role assignment create för att lägga till spn-1-peer-vnet i vnet-2 som nätverksdeltagare.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Peer vnet-1 till vnet-2 och vnet-2 till vnet-1
Om du vill peer-koppla vnet-1 till vnet-2 använder du appId och lösenord för tjänstens huvudnamn för att logga in på Microsoft Entra ID-klientorganisationen som är associerad med subscription-1.
Hämta appId för spn-1-peer-vnet och spn-2-peer-vnet
I den här artikeln loggar du in på varje prenumeration och hämtar appID för varje SPN och resurs-ID för varje virtuellt nätverk. Använd dessa värden för att logga in på varje prenumeration med SPN i de senare stegen. De här stegen krävs inte för att peer-koppla de virtuella nätverken om båda sidor redan har appID för SPN:erna och resurs-ID:t för de virtuella nätverken.
Använd az login för att logga in på subscription-1 med ett vanligt användarkonto.
az login
Använd az network vnet show för att hämta resurs-ID för vnet-1 till en variabel för användning i de senare stegen.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Använd az ad sp-listan för att hämta appId för spn-1-peer-vnet och placera i en variabel för användning i de senare stegen.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Använd az login för att logga in på subscription-2 med ett vanligt användarkonto.
az login
Använd az network vnet show för att hämta resurs-ID för vnet-2 till en variabel för användning i de senare stegen.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Använd az ad sp-listan för att hämta appId för spn-2-peer-vnet och placera i en variabel för användning i de senare stegen.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Använd az logout för att logga ut från Azure CLI-sessionen med följande kommando. Stäng inte terminalen.
az logout
Peer-koppla de virtuella nätverken
Använd az login för att logga in på subscription-1 med spn-1-peer-vnet. Du behöver klientorganisations-ID:t för Microsoft Entra ID-klientorganisationen som är associerad med subscription-1 för att slutföra kommandot. Lösenordet visas i exemplet med en variabelplatshållare. Ersätt med det lösenord som du antecknade när resursen skapades. Ersätt platshållaren i
--tenant
med klient-ID:t för Microsoft Entra ID-klientorganisationen som är associerad med subscription-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Använd az login för att logga in på subscription-2 med spn-2-peer-vnet. Du behöver klientorganisations-ID för Microsoft Entra ID-klientorganisationen som är associerad med subscription-2 för att slutföra kommandot. Lösenordet visas i exemplet med en variabelplatshållare. Ersätt med det lösenord som du antecknade när resursen skapades. Ersätt platshållaren i
--tenant
med klient-ID:t för Microsoft Entra ID-klientorganisationen som är associerad med subscription-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Använd az account set för att ändra kontexten till subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Använd az network vnet peering create för att skapa peering för virtuella nätverk mellan vnet-1 och vnet-2.
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
Använd az network vnet peering list to verify the virtual network peering between vnet-1 and vnet-2 .Use az network vnet peering list to verify the virtual network peering between vnet-1 and vnet-2.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Använd az account set för att ändra kontexten till subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Använd az network vnet peering create för att skapa peering för virtuella nätverk mellan vnet-2 och vnet-1.
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
Använd az network vnet peering list to verify the virtual network peering between vnet-2 and vnet-1 .use az network vnet peering list to verify the virtual network peering between vnet-2 and vnet-1.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table