Condividi tramite


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.

  • 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

  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
    
  2. Come prima cosa creare un gruppo di risorse con az group create.

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

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

  1. 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
    
  2. Creare un gruppo di risorse con az group create.

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

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

  1. Usare az login per accedere a subscription-2.

    az login
    
  2. 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
    
  3. 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
    
  4. Aprire l'URL in un Web browser e accedere con un amministratore nel tenant microsoft Entra ID in subscription-1.

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

  1. Usare az login per accedere a subscription-1.

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

  1. Usare az login per accedere a subscription-1.

    az login
    
  2. 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
    
  3. 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
    
  4. Aprire l'URL in un Web browser e accedere con un amministratore nel tenant di Microsoft Entra ID in subscription-2.

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

  1. Usare az login per accedere a subscription-2.

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

  1. Usare az login per accedere a subscription-1 con un account utente normale.

    az login
    
  2. 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)
    
  3. 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)
    
  4. Usare az login per accedere a subscription-2 con un account utente normale.

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

  1. 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
    
  2. 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
    
  3. Usare az account set per modificare il contesto in subscription-1.

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. 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
    
  5. 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
    
  6. Usare az account set per modificare il contesto in subscription-2.

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