共用方式為


使用服務主體名稱連接不同訂用帳戶中的虛擬網路

在某些情況下,您需要連接不同訂用帳戶中的虛擬網路,而不需要使用使用者帳戶或來賓帳戶。 在此虛擬網路操作說明中,瞭解如何將不同訂用帳戶中的兩個虛擬網路與服務主體名稱 (SPN) 對等互連。 不同訂用帳戶中的虛擬網路與 Microsoft Entra ID 租使用者之間的虛擬網路對等互連必須透過 Azure CLI 或 PowerShell 對等互連。 目前 Azure 入口網站 中沒有選項可將不同訂用帳戶中的SPN與SPN對等互連。

必要條件

  • 具有兩個作用中訂用帳戶和兩個Microsoft Entra ID 租使用者的 Azure 帳戶。 免費建立帳戶

  • 帳戶許可權,用來建立服務主體、指派應用程式許可權,以及在與每個訂用帳戶相關聯的Microsoft Entra ID 租使用者中建立資源。

  • 此操作說明文章需要 2.31.0 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。

使用的資源

SPN 資源群組 訂用帳戶/租使用者 虛擬網路 Location
spn-1-peer-vnet test-rg-1 subscription-1 vnet-1 美國東部 2
spn-2-peer-vnet test-rg-2 subscription-2 vnet-2 美國西部 2

建立 subscription-1 資源

  1. 使用 az sign-in 以具有許可權的用戶帳戶登入 subscription-1 ,以在與 subscription-1 相關聯的 Microsoft Entra ID 租使用者中建立資源群組、虛擬網路和 SPN

    az login
    
  2. 使用 az group create 來建立資源群組。

    az group create \
        --name test-rg-1 \
        --location eastus2  
    
  3. 使用 az network vnet create 在 subscription-1 中建立名為 vnet-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

建立 spn1-peer-vnet ,其中包含在上一個步驟中建立之虛擬網路的範圍。 此SPN會在未來的步驟中新增至 vnet-2 的範圍,以允許虛擬網路對等互連。

  1. 使用 az network vnet show ,將您稍早在變數中建立的虛擬網路資源標識碼放在稍後步驟中使用。

    vnetid=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  2. 使用 az ad sp create-for-rbac 來建立 spn-1-peer-vnet,並將網路參與者角色設定為虛擬網路 vnet-1

    az ad sp create-for-rbac \
        --name spn-1-peer-vnet \
        --role "Network Contributor" \
        --scope $vnetid
    

    記下步驟中建立的輸出。 密碼只會在此輸出中顯示。 將密碼複製到安全的地方,以供稍後的登入步驟使用。

    {
    "appId": "11112222-bbbb-3333-cccc-4444dddd5555",
    "displayName": "spn-1-peer-vnet",
    "password": "",
    "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"    
    }
    
  3. 服務主體的 appId 會在後續步驟中使用,以完成 SPN 的設定。 使用 az ad sp list 將 SPN 的 appId 放入變數以供日後使用。

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. 在上一個步驟中建立的SPN必須有重新導向URI才能完成驗證程式核准,而且必須轉換成多租使用者使用。 使用 az ad app update 新增https://www.microsoft.com為重新導向 URI,並在 spn-1-peer-vnet啟用多租使用者。

    az ad app update \
        --id $appid1 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. 服務主體必須具有 目錄的User.Read 許可權。 使用 az ad app permission addaz ad app permission grant,將 User.Read Microsoft Graph 許可權新增至服務主體。

    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
    

建立 subscription-2 資源

  1. 使用 az login 以具有許可權的用戶帳戶登入 subscription-2 ,在與 subscription-2 相關聯的 Microsoft Entra ID 租使用者中建立資源群組、虛擬網路和 SPN

    az login
    
  2. 使用 az group create 建立資源群組。

    az group create \
        --name test-rg-2 \
        --location westus2  
    
  3. 使用 az network vnet create 在 subscription-2 中建立名為 vnet-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

建立 spn-2-peer-vnet ,其中包含上一個步驟中建立之虛擬網路的範圍。 此SPN會在未來的步驟中新增至 vnet-2 的範圍,以允許虛擬網路對等互連。

  1. 使用 az network vnet show ,將您稍早在變數中建立的虛擬網路資源標識碼放在稍後步驟中使用。

    vnetid=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  2. 使用 az ad sp create-for-rbac 來建立 spn-2-peer-vnet,並將網路參與者角色限定於虛擬網路 vnet-2

    az ad sp create-for-rbac \
        --name spn-2-peer-vnet \
        --role "Network Contributor" \
        --scope $vnetid
    

    記下步驟中建立的輸出。 將密碼複製到安全的地方,以供稍後的登入步驟使用。 密碼不會再次顯示。

    輸出看起來類似下列輸出。

    {
    "appId": "22223333-cccc-4444-dddd-5555eeee6666",
    "displayName": "spn-2-peer-vnet",
    "password": "",
    "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
    }    
    
  3. 服務主體的 appId 會在後續步驟中使用,以完成 SPN 的設定。 使用 az ad sp list 將 SPN 的識別碼放入變數以供稍後使用。

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. 在上一個步驟中建立的SPN必須有重新導向URI才能完成驗證程式核准,而且必須轉換成多租使用者使用。 使用 az ad app update 新增https://www.microsoft.com為重新導向 URI,並在 spn-2-peer-vnet啟用多租使用者。

    az ad app update \
        --id $appid2 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. 服務主體必須具有 目錄的User.Read 許可權。 使用 az ad app permission addaz ad app permission grant,將 User.Read Microsoft Graph 許可權新增至服務主體。

    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
    

在 subscription-1 中註冊 spn-2-peer-vnet,並將許可權指派給 vnet-1

Microsoft Entra ID 租使用者中具有系統管理員許可權的使用者帳戶必須完成將 spn-2-vnet-peer 新增subscription-1 的程式。 完成之後, spn-2-vnet-peer 即可將許可權指派給 vnet-1

在 subscription-1 中註冊 spn-2-peer-vnet 應用程式

subscription-1 Microsoft Entra ID 租用戶的系統管理員必須核准服務主體 spn-2-peer-vnet,才能將其新增至虛擬網路 vnet-1 使用下列命令來登入 subscription-2,以尋找 spn-2-peer-vnetappID。

  1. 使用 az login 登入 subscription-2

    az login
    
  2. 使用 az ad sp list 來取得 spn-2-peer-vnetappId。 請注意輸出中的 appID。 此 appID 會在後續步驟的驗證 URL 中使用。

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  3. 使用spn-2-peer-vnetappid和subscription-1Microsoft Entra ID 租使用者標識碼,以建置登入 URL 以進行核准。 URL 是從下列範例建置的:

    https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
    

    URL 看起來類似下列範例。

    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. 在網頁瀏覽器中開啟 URL,並使用 subscription-1 中Microsoft Entra ID 租使用者中的系統管理員登入。

  5. 核准應用程式 spn-2-peer-vnet。 microsoft.com 首頁會顯示驗證是否成功。

將spn-2-peer-vnet指派給 vnet-1

系統管理員核准 spn-2-peer-vnet 之後,將其新增至虛擬網路 vnet-1 作為網路參與者

  1. 使用 az login 登入 subscription-1

    az login
    
  2. 使用 az ad sp list 尋找 spn-2-peer-vnetappId,並將 放在變數中以供日後使用。

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. 使用 az network vnet show,將 vnet-1 的資源識別碼取得為變數,以供後續步驟使用。

    vnetid=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  4. 使用 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
    

在 subscription-2 中註冊 spn-1-peer-vnet,並將許可權指派給 vnet-2

Microsoft Entra ID 租使用者中具有系統管理員許可權的使用者帳戶必須完成將 spn-1-peer-vnet 新增subscription-2 的程式。 完成後, 可以將spn-1-peer-vnet 的許可權指派給 vnet-2

在 subscription-2 中註冊 spn-1-peer-vnet 應用程式

subscription-2 Microsoft Entra ID 租用戶的系統管理員必須核准服務主體 spn-1-peer-vnet,才能將其新增至虛擬網路 vnet-2 使用下列命令來登入 subscription-1,以尋找 spn-1-peer-vnetappID。

  1. 使用 az login 登入 subscription-1

    az login
    
  2. 使用 az ad sp list 來取得 spn-1-peer-vnetappId。 請注意輸出中的 appID。 此 appID 會在後續步驟的驗證 URL 中使用。

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid1
    
  3. 使用spn-1-peer-vnetappid和subscription-2Microsoft Entra ID 租使用者標識碼,以建置登入 URL 以進行核准。 URL 是從下列範例建置的:

    https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
    

    URL 看起來類似下列範例。

    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. 在網頁瀏覽器中開啟 URL,並使用 subscription-2 中Microsoft Entra ID 租使用者中的系統管理員登入。

  5. 核准應用程式 spn-1-peer-vnet。 microsoft.com 首頁會顯示驗證是否成功。

將spn-1-peer-vnet指派給 vnet-2

一旦系統管理員核准 spn-1-peer-vnet,請將它新增至虛擬網路 vnet-2 作為網路參與者

  1. 使用 az login 登入 subscription-2

    az login
    
  2. 使用 az ad sp list 來尋找 spn-1-peer-vnetappId,並在變數中放置以供日後使用。

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. 使用 az network vnet show,將 vnet-2 的資源識別碼取得為變數,以供後續步驟使用。

    vnetid=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  4. 使用 az role assignment create 將 spn-1-peer-vnet 新增vnet-2 作為網路參與者

    az role assignment create --assignee $appid1 \
        --role "Network Contributor" \
        --scope $vnetid
    

將 vnet-1 對等互連至 vnet-2 和 vnet-2 對 vnet-1

若要將 vnet-1 對等互連vnet-2,您可以使用服務主體 appId 和密碼登入與 subscription-1 相關聯的Microsoft Entra ID 租使用者。

取得 spn-1-peer-vnet 和 spn-2-peer-vnet 的 appId

基於本文的目的,請登入每個訂用帳戶,並取得每個SPN的appID,以及每個虛擬網路的資源標識碼。 使用這些值,在後續步驟中使用SPN登入每個訂用帳戶。 如果雙方已經有SPN的appID和虛擬網路的資源標識碼,則不需要這些步驟才能對等互連虛擬網路。

  1. 使用 az login 以一般用戶帳戶登入 subscription-1

    az login
    
  2. 使用 az network vnet show,將 vnet-1 的資源識別碼取得為變數,以供後續步驟使用。

    vnetid1=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  3. 使用 az ad sp list 來取得 spn-1-peer-vnetappId,並將 放在變數中,以供後續步驟使用。

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. 使用 az login 搭配一般用戶帳戶登入 subscription-2

    az login
    
  5. 使用 az network vnet show,將 vnet-2 的資源識別碼取得為變數,以供後續步驟使用。

    vnetid2=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  6. 使用 az ad sp list 來取得 spn-2-peer-vnetappId,並將 放在變數中,以供後續步驟使用。

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  7. 使用 az logout 透過下列命令註銷 Azure CLI 工作階段。 請勿關閉終端機

    az logout
    

對等互連虛擬網路

  1. 使用 az login 以 spn-1-peer-vnet 登入 subscription-1。 您需要與 subscription-1 相關聯的 Microsoft Entra ID 租使用者的租使用者標識碼,才能完成命令。 密碼會顯示在具有變數佔位符的範例中。 將取代為您在資源建立期間所記錄的密碼。 將中的--tenant佔位元元取代為與 subscription-1 相關聯之Microsoft Entra ID 租使用者的租用戶識別碼。

    az login \
        --service-principal \
        --username $appid1 \
        --password $password \
        --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
    
  2. 使用 az login 以 spn-2-peer-vnet 登入 subscription-2。 您需要與 subscription-2 相關聯的Microsoft Entra ID 租使用者的租使用者標識符,才能完成命令。 密碼會顯示在具有變數佔位符的範例中。 將取代為您在資源建立期間所記錄的密碼。 將中的--tenant佔位元取代為與 subscription-2 相關聯之Microsoft Entra ID 租使用者的租用戶識別碼。

    az login \
        --service-principal \
        --username $appid2 \
        --password $password \
        --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
    
  3. 使用 az account set 將內容變更為 subscription-1

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. 使用 az network vnet peering create 建立 vnet-1vnet-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. 使用 az network vnet peering list 來驗證 vnet-1vnet-2 之間的虛擬網路對等互連。

    az network vnet peering list \
        --resource-group test-rg-1 \
        --vnet-name vnet-1 \
        --output table
    
  6. 使用 az account set 將內容變更為 subscription-2

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. 使用 az network vnet peering create 建立 vnet-2vnet-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. 使用 az network vnet peering list 來驗證 vnet-2vnet-1 之間的虛擬網路對等互連。

    az network vnet peering list \
        --resource-group test-rg-2 \
        --vnet-name vnet-2 \
        --output table