Connessione reti virtuali in sottoscrizioni diverse con nomi di entità servizio
Esistono scenari in cui è necessario connettere reti virtuali in sottoscrizioni diverse senza l'uso di account utente o account guest. In questa procedura per la rete virtuale si apprenderà come eseguire il peering di due reti virtuali con nomi di entità servizio (SPN) in sottoscrizioni diverse. È necessario eseguire il peering di reti virtuali tra reti virtuali in sottoscrizioni diverse e i tenant di Microsoft Entra ID tramite l'interfaccia della riga di comando di Azure o PowerShell. Attualmente non è disponibile un'opzione nella portale di Azure per eseguire il peering di reti virtuali con SPN in sottoscrizioni diverse.
Prerequisiti
Un account Azure con due sottoscrizioni attive e due tenant di Microsoft Entra ID. Creare un account gratuitamente.
Autorizzazioni dell'account per creare un'entità servizio, assegnare le autorizzazioni dell'app e creare risorse nel tenant di Microsoft Entra ID associato a ogni sottoscrizione.
Usare l'ambiente Bash in Azure Cloud Shell. Per ulteriori informazioni, vedere Avvio rapido per Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per ulteriori informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
- Questo articolo sulle procedure richiede la versione 2.31.0 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Risorse usate
SPN | Gruppo di risorse | Sottoscrizione/Tenant | Rete virtuale | Ufficio |
---|---|---|---|---|
spn-1-peer-vnet | test-rg-1 | subscription-1 | vnet-1 | Stati Uniti orientali 2 |
spn-2-peer-vnet | test-rg-2 | subscription-2 | vnet-2 | West US 2 |
Creare risorse subscription-1
Usare az sign-in per accedere a subscription-1 con un account utente con autorizzazioni per creare un gruppo di risorse, una rete virtuale e un nome SPN nel tenant di Microsoft Entra ID associato alla sottoscrizione-1
az login
Come prima cosa creare un gruppo di risorse con az group create.
az group create \ --name test-rg-1 \ --location eastus2
Usare az network vnet create per creare una rete virtuale denominata vnet-1 in 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
Creare spn-1-peer-vnet
Creare spn1-peer-vnet con un ambito per la rete virtuale creata nel passaggio precedente. Questo NOME SPN viene aggiunto all'ambito di vnet-2 in un passaggio futuro per consentire il peer di rete virtuale.
Usare az network vnet show per inserire l'ID risorsa della rete virtuale creata in precedenza in una variabile da usare nel passaggio successivo.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Usare az ad sp create-for-rbac per creare spn-1-peer-vnet con un ruolo collaboratore alla rete virtuale con ambito vnet-1.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Prendere nota dell'output della creazione nel passaggio. La password viene visualizzata solo qui in questo output. Copiare la password in un luogo sicuro da usare nei passaggi di accesso successivi.
{ "appId": "11112222-bbbb-3333-cccc-4444dddd5555", "displayName": "spn-1-peer-vnet", "password": "", "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" }
Il valore appId dell'entità servizio viene usato nei passaggi successivi per completare la configurazione del nome SPN. Usare az ad sp list per inserire il valore appId del nome SPN in una variabile da usare in un secondo momento.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Il nome SPN creato nel passaggio precedente deve avere un URI di reindirizzamento per completare l'approvazione del processo di autenticazione e deve essere convertito in uso multi-tenant. Usare az ad app update per aggiungere https://www.microsoft.com come URI di reindirizzamento e abilitare multi-tenant in spn-1-peer-vnet.
az ad app update \ --id $appid1 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
L'entità servizio deve disporre delle autorizzazioni User.Read per la directory. Usare az ad app permission add e az ad app grant per aggiungere le autorizzazioni di Microsoft Graph di User.Read all'entità servizio.
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
Creare risorse subscription-2
Usare az login per accedere a subscription-2 con un account utente con le autorizzazioni per creare un gruppo di risorse, una rete virtuale e un nome SPN nel tenant di Microsoft Entra ID associato alla sottoscrizione-2
az login
Creare un gruppo di risorse con az group create.
az group create \ --name test-rg-2 \ --location westus2
Usare az network vnet create per creare una rete virtuale denominata vnet-2 in 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
Creare spn-2-peer-vnet
Creare spn-2-peer-vnet con un ambito per la rete virtuale creata nel passaggio precedente. Questo NOME SPN viene aggiunto all'ambito di vnet-2 in un passaggio futuro per consentire il peer di rete virtuale.
Usare az network vnet show per inserire l'ID risorsa della rete virtuale creata in precedenza in una variabile da usare nel passaggio successivo.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Usare az ad sp create-for-rbac per creare spn-2-peer-vnet con un ruolo collaboratore alla rete virtuale con ambito vnet-2.
az ad sp create-for-rbac \ --name spn-2-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Prendere nota dell'output della creazione nel passaggio. Copiare la password in un luogo sicuro da usare nei passaggi di accesso successivi. La password non viene visualizzata di nuovo.
L'output è simile all'output seguente.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }
Il valore appId dell'entità servizio viene usato nei passaggi successivi per completare la configurazione del nome SPN. Usare az ad sp list per inserire l'ID del nome SPN in una variabile per un uso successivo.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Il nome SPN creato nel passaggio precedente deve avere un URI di reindirizzamento per completare l'approvazione del processo di autenticazione e deve essere convertito in uso multi-tenant. Usare az ad app update per aggiungere https://www.microsoft.com come URI di reindirizzamento e abilitare multi-tenant in spn-2-peer-vnet.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
L'entità servizio deve disporre delle autorizzazioni User.Read per la directory. Usare az ad app permission add e az ad app grantper aggiungere le autorizzazioni di Microsoft Graph di User.Read all'entità servizio.
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
Registrare spn-2-peer-vnet in subscription-1 e assegnare le autorizzazioni a vnet-1
Un account utente con autorizzazioni di amministratore nel tenant di Microsoft Entra ID deve completare il processo di aggiunta di spn-2-vnet-peer a subscription-1. Al termine, è possibile assegnare le autorizzazioni spn-2-vnet-peer a vnet-1.
Registrare l'app spn-2-peer-vnet in subscription-1
Un amministratore nel tenant subscription-1 Microsoft Entra ID deve approvare la rete spn-2-peer-vnet dell'entità servizio in modo che possa essere aggiunta alla rete virtuale vnet-1. Usare il comando seguente per accedere a subscription-2 per trovare l'ID app di spn-2-peer-vnet.
Usare az login per accedere a subscription-2.
az login
Usare az ad sp list per ottenere l'id app di spn-2-peer-vnet. Prendere nota dell'ID app nell'output. Questo id app viene usato nell'URL di autenticazione nei passaggi successivi.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Usare l'id app per spn-2-peer-vnet e l'ID tenant di Microsoft Entra ID per la sottoscrizione-1 per compilare l'URL di accesso per l'approvazione. L'URL viene compilato dall'esempio seguente:
https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
L'URL è simile all'esempio seguente.
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
Aprire l'URL in un Web browser e accedere con un amministratore nel tenant microsoft Entra ID in subscription-1.
Approvare l'applicazione spn-2-peer-vnet. La home page di microsoft.com viene visualizzata se l'autenticazione ha avuto esito positivo.
Assegnare spn-2-peer-vnet a vnet-1
Dopo che l'amministratore approva spn-2-peer-vnet, aggiungerlo alla rete virtuale vnet-1 come Collaboratore rete.
Usare az login per accedere a subscription-1.
az login
Usare az ad sp list per trovare il valore appId per spn-2-peer-vnet e inserirlo in una variabile per usarlo in un secondo momento.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Usare az network vnet show per ottenere l'ID risorsa vnet-1 in una variabile da usare nei passaggi successivi.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Usare az role assignment create il comando seguente per aggiungere spn-2-peer-vnet a vnet-1 come Collaboratore rete.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Registrare spn-1-peer-vnet in subscription-2 e assegnare le autorizzazioni a vnet-2
Un account utente con autorizzazioni di amministratore nel tenant di Microsoft Entra ID deve completare il processo di aggiunta di spn-1-peer-vnet alla sottoscrizione-2. Al termine, è possibile assegnare le autorizzazioni a vnet-2 spn-1-peer-vnet.
Registrare l'app spn-1-peer-vnet in subscription-2
Un amministratore nel tenant subscription-2 Microsoft Entra ID deve approvare l'entità servizio spn-1-peer-vnet in modo che possa essere aggiunto alla rete virtuale vnet-2. Usare il comando seguente per accedere a subscription-1 per trovare l'ID app di spn-1-peer-vnet.
Usare az login per accedere a subscription-1.
az login
Usare az ad sp list per ottenere l'id app di spn-1-peer-vnet. Prendere nota dell'ID app nell'output. Questo id app viene usato nell'URL di autenticazione nei passaggi successivi.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Usare appid per spn-1-peer-vnet e l'ID tenant di Microsoft Entra ID per la sottoscrizione-2 per compilare l'URL di accesso per l'approvazione. L'URL viene compilato dall'esempio seguente:
https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
L'URL è simile all'esempio seguente.
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
Aprire l'URL in un Web browser e accedere con un amministratore nel tenant di Microsoft Entra ID in subscription-2.
Approvare l'applicazione spn-1-peer-vnet. La home page di microsoft.com viene visualizzata se l'autenticazione ha avuto esito positivo.
Assegnare spn-1-peer-vnet a vnet-2
Dopo che l'amministratore approva spn-1-peer-vnet, aggiungerlo alla rete virtuale vnet-2 come Collaboratore rete.
Usare az login per accedere a subscription-2.
az login
Usare az ad sp list per trovare l'id app per spn-1-peer-vnet e inserirlo in una variabile per usarlo in un secondo momento.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Usare az network vnet show per ottenere l'ID risorsa di vnet-2 in una variabile da usare nei passaggi successivi.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Usare az role assignment create per aggiungere spn-1-peer-vnet a vnet-2 come collaboratore alla rete.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Eseguire il peering da vnet-1 a vnet-2 e vnet-2 a vnet-1
Per eseguire il peering tra vnet-1 e vnet-2, usare l'id app e la password dell'entità servizio per accedere al tenant di Microsoft Entra ID associato alla sottoscrizione-1.
Ottenere il valore appId di spn-1-peer-vnet e spn-2-peer-vnet
Ai fini di questo articolo, accedere a ogni sottoscrizione e ottenere l'ID app di ogni SPN e l'ID risorsa di ogni rete virtuale. Usare questi valori per accedere a ogni sottoscrizione con il nome SPN nei passaggi successivi. Questi passaggi non sono necessari per eseguire il peering delle reti virtuali se entrambi i lati hanno già l'ID app dei nomi SPN e l'ID risorsa delle reti virtuali.
Usare az login per accedere a subscription-1 con un account utente normale.
az login
Usare az network vnet show per ottenere l'ID risorsa di vnet-1 in una variabile da usare nei passaggi successivi.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Usare az ad sp list per ottenere l'id app di spn-1-peer-vnet e inserirlo in una variabile da usare nei passaggi successivi.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Usare az login per accedere a subscription-2 con un account utente normale.
az login
Usare az network vnet show per ottenere l'ID risorsa di vnet-2 in una variabile da usare nei passaggi successivi.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Usare az ad sp list per ottenere l'id app di spn-2-peer-vnet e inserirlo in una variabile da usare nei passaggi successivi.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Usare az logout per disconnettersi dalla sessione dell'interfaccia della riga di comando di Azure con il comando seguente. Non chiudere il terminale.
az logout
Eseguire il peering delle reti virtuali
Usare az login per accedere a subscription-1 con spn-1-peer-vnet. Per completare il comando, è necessario l'ID tenant di Microsoft Entra ID associato alla sottoscrizione-1 . La password viene visualizzata nell'esempio con un segnaposto variabile. Sostituire con la password annotata durante la creazione della risorsa. Sostituire il segnaposto in
--tenant
con l'ID tenant del tenant di Microsoft Entra ID associato alla sottoscrizione-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Usare az login per accedere a subscription-2 con spn-2-peer-vnet. Per completare il comando, è necessario l'ID tenant dell'ID Microsoft Entra associato alla sottoscrizione-2 . La password viene visualizzata nell'esempio con un segnaposto variabile. Sostituire con la password annotata durante la creazione della risorsa. Sostituire il segnaposto in
--tenant
con l'ID tenant del tenant di Microsoft Entra ID associato alla sottoscrizione-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Usare az account set per modificare il contesto in subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Usare az network vnet peering create per creare il peering di rete virtuale tra vnet-1 e 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
Usare az network vnet peering list per verificare il peering di rete virtuale tra vnet-1 e vnet-2.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Usare az account set per modificare il contesto in subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Usare az network vnet peering create per creare il peering di rete virtuale tra vnet-2 e 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
Usare az network vnet peering list per verificare il peering di rete virtuale tra vnet-2 e vnet-1.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table