Udostępnij za pośrednictwem


Łączenie sieci wirtualnych w różnych subskrypcjach z nazwami główną usługi

Scenariusze istnieją, w których należy połączyć sieci wirtualne w różnych subskrypcjach bez korzystania z kont użytkowników lub kont gości. W tym przewodniku z instrukcjami dotyczącymi sieci wirtualnej dowiesz się, jak za pomocą komunikacji równorzędnej dwóch sieci wirtualnych z nazwami główną usługi (SPN) w różnych subskrypcjach. Komunikacja równorzędna sieci wirtualnych między sieciami wirtualnymi w różnych subskrypcjach i dzierżawach microsoft Entra ID musi być równorzędna za pośrednictwem interfejsu wiersza polecenia platformy Azure lub programu PowerShell. Obecnie w witrynie Azure Portal nie ma opcji komunikacji równorzędnej sieci wirtualnych z nazwami SPN w różnych subskrypcjach.

Wymagania wstępne

  • Konto platformy Azure z dwiema aktywnymi subskrypcjami i dwiema dzierżawami identyfikatorów Entra firmy Microsoft. Utwórz konto bezpłatnie.

  • Uprawnienia konta do tworzenia jednostki usługi, przypisywania uprawnień aplikacji i tworzenia zasobów w dzierżawie identyfikatora entra firmy Microsoft skojarzonej z każdą subskrypcją.

  • Ten artykuł z instrukcjami wymaga wersji 2.31.0 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

Używane zasoby

SPN Grupa zasobów Subskrypcja/dzierżawa Sieć wirtualna Lokalizacja
spn-1-peer-vnet test-rg-1 subskrypcja-1 sieć wirtualna-1 Wschodnie stany USA 2
spn-2-peer-vnet test-rg-2 subskrypcja-2 sieć wirtualna-2 Zachodnie stany USA 2

Tworzenie zasobów subskrypcji-1

  1. Użyj polecenia az sign-in, aby zalogować się do subskrypcji-1 przy użyciu konta użytkownika z uprawnieniami do tworzenia grupy zasobów, sieci wirtualnej i nazwy SPN w dzierżawie microsoft Entra ID skojarzonej z subskrypcją-1

    az login
    
  2. Utwórz grupę zasobów za pomocą polecenia az group create.

    az group create \
        --name test-rg-1 \
        --location eastus2  
    
  3. Użyj polecenia az network vnet create , aby utworzyć sieć wirtualną o nazwie vnet-1 w subskrypcji-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
    

Tworzenie sieci spn-1-peer-vnet

Utwórz sieć spn1-peer-vnet z zakresem do sieci wirtualnej utworzonej w poprzednim kroku. Ta nazwa SPN jest dodawana do zakresu sieci wirtualnej vnet-2 w przyszłym kroku, aby umożliwić komunikację równorzędną sieci wirtualnej.

  1. Użyj polecenia az network vnet show , aby umieścić identyfikator zasobu sieci wirtualnej utworzonej wcześniej w zmiennej do użycia w późniejszym kroku.

    vnetid=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  2. Użyj polecenia az ad sp create-for-rbac , aby utworzyć sieć spn-1-peer-vnet z rolą Współautor sieci w zakresie sieci wirtualnej vnet-1.

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

    Zanotuj dane wyjściowe tworzenia w kroku. Hasło jest wyświetlane tylko tutaj w tych danych wyjściowych. Skopiuj hasło do miejsca bezpiecznego do użycia w kolejnych krokach logowania.

    {
    "appId": "11112222-bbbb-3333-cccc-4444dddd5555",
    "displayName": "spn-1-peer-vnet",
    "password": "",
    "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"    
    }
    
  3. Identyfikator appId jednostki usługi jest używany w kolejnych krokach, aby zakończyć konfigurację nazwy SPN. Użyj polecenia az ad sp list , aby umieścić identyfikator appId nazwy SPN w zmiennej do późniejszego użycia.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. Nazwa SPN utworzona w poprzednim kroku musi mieć identyfikator URI przekierowania, aby zakończyć zatwierdzanie procesu uwierzytelniania i musi zostać przekonwertowany na wielodostępne użycie. Użyj polecenia az ad app update , aby dodać https://www.microsoft.com jako identyfikator URI przekierowania i włączyć wielodostępne w sieci spn-1-peer-vnet.

    az ad app update \
        --id $appid1 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. Jednostka usługi musi mieć uprawnienia User.Read do katalogu. Użyj polecenia az ad app permission add i az ad app permission grant , aby dodać uprawnienia programu Microsoft Graph User.Read do jednostki usługi.

    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
    

Tworzenie zasobów subskrypcji-2

  1. Użyj polecenia az login, aby zalogować się do subskrypcji-2 przy użyciu konta użytkownika z uprawnieniami do tworzenia grupy zasobów, sieci wirtualnej i nazwy SPN w dzierżawie microsoft Entra ID skojarzonej z subskrypcją-2

    az login
    
  2. Utwórz grupę zasobów za pomocą polecenia az group create.

    az group create \
        --name test-rg-2 \
        --location westus2  
    
  3. Użyj polecenia az network vnet create, aby utworzyć sieć wirtualną o nazwie vnet-2 w subskrypcji-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
    

Tworzenie sieci spn-2-peer-vnet

Utwórz sieć spn-2-peer-vnet z zakresem do sieci wirtualnej utworzonej w poprzednim kroku. Ta nazwa SPN jest dodawana do zakresu sieci wirtualnej vnet-2 w przyszłym kroku, aby umożliwić komunikację równorzędną sieci wirtualnej.

  1. Użyj polecenia az network vnet show , aby umieścić identyfikator zasobu sieci wirtualnej utworzonej wcześniej w zmiennej do użycia w późniejszym kroku.

    vnetid=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  2. Użyj polecenia az ad sp create-for-rbac , aby utworzyć sieć spn-2-peer-vnet z rolą Współautor sieci w zakresie sieci wirtualnej vnet-2.

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

    Zanotuj dane wyjściowe tworzenia w kroku. Skopiuj hasło do miejsca bezpiecznego do użycia w kolejnych krokach logowania. Hasło nie jest ponownie wyświetlane.

    Dane wyjściowe wyglądają podobnie do poniższych danych wyjściowych.

    {
    "appId": "22223333-cccc-4444-dddd-5555eeee6666",
    "displayName": "spn-2-peer-vnet",
    "password": "",
    "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
    }    
    
  3. Identyfikator appId jednostki usługi jest używany w kolejnych krokach, aby zakończyć konfigurację nazwy SPN. Użyj polecenia az ad sp list , aby umieścić identyfikator nazwy SPN w zmiennej do późniejszego użycia.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. Nazwa SPN utworzona w poprzednim kroku musi mieć identyfikator URI przekierowania, aby zakończyć zatwierdzanie procesu uwierzytelniania i musi zostać przekonwertowany na wielodostępne użycie. Użyj polecenia az ad app update , aby dodać https://www.microsoft.com jako identyfikator URI przekierowania i włączyć wielodostępne w sieci spn-2-peer-vnet.

    az ad app update \
        --id $appid2 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. Jednostka usługi musi mieć uprawnienia User.Read do katalogu. Użyj polecenia az ad app permission add i az ad app permission grant, aby dodać uprawnienia programu Microsoft Graph User.Read do jednostki usługi.

    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
    

Zarejestruj sieć spn-2-peer-vnet w subskrypcji-1 i przypisz uprawnienia do sieci wirtualnej vnet-1

Konto użytkownika z uprawnieniami administratora w dzierżawie Microsoft Entra ID musi zakończyć proces dodawania spn-2-vnet-peer do subskrypcji-1. Po zakończeniu można przypisać uprawnienia spn-2-vnet-peer do sieci wirtualnej-1.

Rejestrowanie aplikacji spn-2-peer-vnet w subskrypcji-1

Administrator w dzierżawie subscription-1 Microsoft Entra ID musi zatwierdzić jednostkę usługi spn-2-peer-vnet , aby można było ją dodać do sieci wirtualnej vnet-1. Użyj następującego polecenia, aby zalogować się do subskrypcji-2 , aby znaleźć identyfikator appID spn-2-peer-vnet.

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-2.

    az login
    
  2. Użyj polecenia az ad sp list, aby uzyskać identyfikator appId spn-2-peer-vnet. Zanotuj identyfikator appID w danych wyjściowych. Ten identyfikator appID jest używany w adresie URL uwierzytelniania w kolejnych krokach.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  3. Użyj identyfikatora appid dla spn-2-peer-vnet i identyfikatora dzierżawy Microsoft Entra ID dla subskrypcji-1 , aby skompilować adres URL logowania do zatwierdzenia. Adres URL jest kompilowany na podstawie następującego przykładu:

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

    Adres URL wygląda podobnie do poniższego przykładu.

    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. Otwórz adres URL w przeglądarce internetowej i zaloguj się przy użyciu administratora w dzierżawie Microsoft Entra ID w subskrypcji-1.

  5. Zatwierdź aplikację spn-2-peer-vnet. Strona główna microsoft.com jest wyświetlana, jeśli uwierzytelnianie zakończyło się pomyślnie.

Przypisywanie sieci spn-2-peer-vnet do sieci vnet-1

Po zatwierdzeniu przez administratora sieci spn-2-peer-vnet dodaj ją do sieci wirtualnej vnet-1 jako współautora sieci.

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-1.

    az login
    
  2. Użyj polecenia az ad sp list , aby znaleźć identyfikator appId dla spn-2-peer-vnet i umieścić w zmiennej do późniejszego użycia.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. Użyj polecenia az network vnet show, aby uzyskać identyfikator zasobu vnet-1 do zmiennej do użycia w kolejnych krokach.

    vnetid=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  4. Użyj polecenia az role assignment create, aby dodać spn-2-peer-vnet do sieci wirtualnej vnet-1 jako współautora sieci.

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

Zarejestruj sieć spn-1-peer-vnet w subskrypcji-2 i przypisz uprawnienia do sieci wirtualnej vnet-2

Konto użytkownika z uprawnieniami administratora w dzierżawie Microsoft Entra ID musi zakończyć proces dodawania spn-1-peer-vnet do subskrypcji-2. Po zakończeniu można przypisać uprawnienia spn-1-peer-vnet do sieci wirtualnej vnet-2.

Rejestrowanie aplikacji spn-1-peer-vnet w subskrypcji-2

Administrator w dzierżawie subscription-2 Microsoft Entra ID musi zatwierdzić jednostkę usługi spn-1-peer-vnet , aby można było ją dodać do sieci wirtualnej vnet-2. Użyj następującego polecenia, aby zalogować się do subskrypcji-1 , aby znaleźć identyfikator appID sieci spn-1-peer-vnet.

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-1.

    az login
    
  2. Użyj polecenia az ad sp list, aby uzyskać identyfikator appId spn-1-peer-vnet. Zanotuj identyfikator appID w danych wyjściowych. Ten identyfikator appID jest używany w adresie URL uwierzytelniania w kolejnych krokach.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid1
    
  3. Użyj identyfikatora appid dla spn-1-peer-vnet i identyfikatora dzierżawy Microsoft Entra ID dla subskrypcji-2 , aby skompilować adres URL logowania do zatwierdzenia. Adres URL jest kompilowany na podstawie następującego przykładu:

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

    Adres URL wygląda podobnie do poniższego przykładu.

    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. Otwórz adres URL w przeglądarce internetowej i zaloguj się przy użyciu administratora w dzierżawie Microsoft Entra ID w subskrypcji-2.

  5. Zatwierdź aplikację spn-1-peer-vnet. Strona główna microsoft.com jest wyświetlana, jeśli uwierzytelnianie zakończyło się pomyślnie.

Przypisywanie sieci spn-1-peer-vnet do sieci wirtualnej vnet-2

Gdy administrator zatwierdzi sieć spn-1-peer-vnet, dodaj ją do sieci wirtualnej vnet-2 jako współautora sieci.

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-2.

    az login
    
  2. Użyj polecenia az ad sp list , aby znaleźć identyfikator appId dla spn-1-peer-vnet i umieścić w zmiennej do późniejszego użycia.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. Użyj polecenia az network vnet show, aby uzyskać identyfikator zasobu vnet-2 do zmiennej do użycia w kolejnych krokach.

    vnetid=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  4. Użyj polecenia az role assignment create, aby dodać spn-1-peer-vnet do sieci vnet-2 jako współautora sieci.

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

Komunikacja równorzędna vnet-1 z siecią wirtualną-2 i siecią wirtualną-2 do sieci wirtualnej-1

Aby połączyć sieć wirtualną vnet-1 z siecią wirtualną 2, należy użyć identyfikatora appId i hasła jednostki usługi, aby zalogować się do dzierżawy microsoft Entra ID skojarzonej z subskrypcją-1.

Uzyskaj identyfikator appId sieci spn-1-peer-vnet i spn-2-peer-vnet

Na potrzeby tego artykułu zaloguj się do każdej subskrypcji i uzyskaj identyfikator aplikacji dla każdej nazwy SPN oraz identyfikator zasobu każdej sieci wirtualnej. Użyj tych wartości, aby zalogować się do każdej subskrypcji przy użyciu nazwy SPN w kolejnych krokach. Te kroki nie są wymagane do komunikacji równorzędnej sieci wirtualnych, jeśli obie strony mają już identyfikator appID nazw SPN i identyfikator zasobu sieci wirtualnych.

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-1 przy użyciu zwykłego konta użytkownika.

    az login
    
  2. Użyj polecenia az network vnet show, aby uzyskać identyfikator zasobu vnet-1 do zmiennej do użycia w kolejnych krokach.

    vnetid1=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  3. Użyj polecenia az ad sp list, aby uzyskać identyfikator appId spn-1-peer-vnet i umieścić w zmiennej do użycia w kolejnych krokach.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. Użyj polecenia az login , aby zalogować się do subskrypcji-2 przy użyciu zwykłego konta użytkownika.

    az login
    
  5. Użyj polecenia az network vnet show, aby uzyskać identyfikator zasobu vnet-2 do zmiennej do użycia w kolejnych krokach.

    vnetid2=$(az network vnet show \
                --resource-group test-rg-2 \
                --name vnet-2 \
                --query id \
                --output tsv)
    
  6. Użyj polecenia az ad sp list, aby uzyskać identyfikator appId spn-2-peer-vnet i umieścić w zmiennej do użycia w kolejnych krokach.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  7. Użyj polecenia az logout , aby wylogować się z sesji interfejsu wiersza polecenia platformy Azure za pomocą następującego polecenia. Nie zamykaj terminalu.

    az logout
    

Komunikacja równorzędna sieci wirtualnych

  1. Użyj polecenia az login , aby zalogować się do subskrypcji-1 za pomocą polecenia spn-1-peer-vnet. Aby ukończyć polecenie, potrzebujesz identyfikatora dzierżawy microsoft Entra ID skojarzonej z subskrypcją-1. Hasło jest wyświetlane w przykładzie ze zmiennym symbolem zastępczym. Zastąp ciąg hasłem zanotowany podczas tworzenia zasobu. Zastąp symbol zastępczy identyfikatorem --tenant dzierżawy Microsoft Entra ID skojarzonym z subskrypcją-1.

    az login \
        --service-principal \
        --username $appid1 \
        --password $password \
        --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
    
  2. Użyj polecenia az login , aby zalogować się do subskrypcji-2 za pomocą polecenia spn-2-peer-vnet. Aby ukończyć polecenie, musisz mieć identyfikator dzierżawy microsoft Entra ID skojarzony z subskrypcją-2. Hasło jest wyświetlane w przykładzie ze zmiennym symbolem zastępczym. Zastąp ciąg hasłem zanotowany podczas tworzenia zasobu. Zastąp symbol zastępczy identyfikatorem --tenant dzierżawy Microsoft Entra ID skojarzonym z subskrypcją-2.

    az login \
        --service-principal \
        --username $appid2 \
        --password $password \
        --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
    
  3. Użyj polecenia az account set , aby zmienić kontekst na subscription-1.

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. Użyj polecenia az network vnet peering create, aby utworzyć komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi vnet-1 i 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. Użyj polecenia az network vnet peering list, aby zweryfikować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi vnet-1 i vnet-2.

    az network vnet peering list \
        --resource-group test-rg-1 \
        --vnet-name vnet-1 \
        --output table
    
  6. Użyj polecenia az account set , aby zmienić kontekst na subscription-2.

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. Użyj polecenia az network vnet peering create, aby utworzyć komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi vnet-2 i 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. Użyj polecenia az network vnet peering list, aby zweryfikować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi vnet-2 i vnet-1.

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