Udostępnij przez


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

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 sieci wirtualnej dowiesz się, jak sparować dwie sieci wirtualne z nazwami głównych usług (SPN) w różnych subskrypcjach. Połączenia równorzędne sieci wirtualnych między sieciami wirtualnymi w różnych subskrypcjach i tenantach Microsoft Entra ID muszą być zestawiane za pośrednictwem Azure CLI lub PowerShell. Obecnie w portalu Azure nie ma opcji łączenia sieci wirtualnych z podmiotami zabezpieczeń w różnych subskrypcjach.

Wymagania wstępne

  • Konto platformy Azure z dwiema aktywnymi subskrypcjami i dwoma dzierżawcami Microsoft Entra ID. Utwórz konto bezpłatnie.

  • Uprawnienia konta do tworzenia obiektów zasad usługi, nadawania uprawnień aplikacji oraz tworzenia zasobów w dzierżawie Microsoft Entra ID 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

główna nazwa usługi 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

Utwórz zasoby dla subskrypcji-1

  1. Użyj az sign-in, aby zalogować się do subskrypcji-1 przy użyciu konta użytkownika z uprawnieniami do tworzenia grupy zasobów, sieci wirtualnej oraz obiektu zasad usługi (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
    

Utwórz sieć 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 zapisać identyfikator zasobu utworzonej wcześniej sieci wirtualnej w zmiennej do wykorzystania w późniejszym kroku.

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

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

    Zanotuj dane wyjściowe z procesu tworzenia w tym kroku. Hasło jest wyświetlane tylko tutaj w tym wyjściu. 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 głównego składnika serwisu jest używany w kolejnych krokach, aby zakończyć konfigurowanie SPN. Użyj az ad sp list, aby umieścić appId 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ć przekonwertowana na użytek wielodostępny. Użyj polecenia az ad app update, aby dodać https://www.microsoft.com jako identyfikator URI przekierowania i włączyć tryb wielodostępny 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 az ad app permission add i az ad app permission grant, aby dodać uprawnienia Microsoft Graph User.Read do głównego aplikacyjnego.

    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
    

Utwórz zasoby 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 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
    

Utwórz spn-2-peer-vnet

Utwórz sieć spn-2-peer-vnet obejmującą sieć wirtualną utworzoną 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 zapisać identyfikator zasobu utworzonej wcześniej sieci wirtualnej w zmiennej do wykorzystania 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ć spn-2-peer-vnet z rolą Współautor Sieci w kontekście sieci wirtualnej vnet-2.

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

    Zanotuj dane wyjściowe z procesu tworzenia w tym 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 głównego składnika serwisu jest używany w kolejnych krokach, aby zakończyć konfigurowanie SPN. Użyj polecenia az ad sp list, aby umieścić identyfikator SPN w zmiennej do późniejszego wykorzystania.

    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ć przekonwertowana na użytek wielodostępny. Użyj polecenia az ad app update, aby dodać https://www.microsoft.com jako identyfikator URI przekierowania i włączyć wielodostępność na 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 az ad app permission add i az ad app permission grant, aby dodać uprawnienia 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 spn-2-peer-vnet w subskrypcji-1 i przypisz uprawnienia do 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.

Zarejestruj aplikację „spn-2-peer-vnet” w subskrypcji-1

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

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

    az login
    
  2. Użyj az ad sp list, aby uzyskać appId dla 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 zbudować adres URL logowania na zatwierdzenie. 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. pl-PL: Otwórz adres URL w przeglądarce internetowej i zaloguj się jako administrator 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.

Przypisz sieć 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 az login aby zalogować się do subskrypcji-1.

    az login
    
  2. Użyj az ad sp list, aby znaleźć 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 w zmiennej przechować identyfikator zasobu vnet-1 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 vnet-1 jako współtwórcę sieci.

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

Zarejestruj spn-1-peer-vnet w subskrypcji-2 i przypisz uprawnienia do 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.

Zarejestruj aplikację spn-1-peer-vnet w subskrypcji-2

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

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

    az login
    
  2. Użyj az ad sp list, aby otrzymać 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ę jako administrator 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.

Przypisz spn-1-peer-vnet do vnet-2

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

  1. Użyj 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 zapisać 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 az network vnet show, aby wpisać identyfikator zasobu vnet-2 do zmiennej na potrzeby 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 az role assignment create, aby dodać spn-1-peer-vnet do vnet-2 jako Współtwórca sieciowy.

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

Komunikacja równorzędna vnet-1 z vnet-2 i vnet-2 z vnet-1

Aby połączyć sieć wirtualną vnet-1 z vnet-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 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 (appID) dla każdego SPN oraz identyfikator zasobu każdej sieci wirtualnej. Użyj tych wartości, aby zalogować się do każdej subskrypcji przy użyciu SPN w kolejnych krokach. Te kroki nie są wymagane do połączenia równorzędnego sieci wirtualnych, jeśli obie strony mają już appID 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 az network vnet show, aby uzyskać identyfikator zasobu vnet-1 i zapisać go do zmiennej, aby wykorzystać w kolejnych krokach.

    vnetid1=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  3. Użyj az ad sp list, aby uzyskać identyfikator appId dla spn-1-peer-vnet i umieścić go 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 az login, aby zalogować się do subskrypcji-2 przy użyciu standardowego konta użytkownika.

    az login
    
  5. Użyj az network vnet show, aby wpisać identyfikator zasobu vnet-2 do zmiennej na potrzeby 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 az ad sp list, aby uzyskać identyfikator appId dla spn-2-peer-vnet i umieścić go 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 az logout, aby wylogować się z sesji interfejsu wiersza polecenia platformy Azure. Nie zamykaj terminalu.

    az logout
    

Połącz wirtualne sieci

  1. Użyj az login, aby zalogować się do subskrypcji-1 z 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 hasłem, które zanotowałeś podczas tworzenia zasobu. Zastąp symbol w --tenant identyfikatorem 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 az login, aby zalogować się do subskrypcji-2 za pomocą 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 hasłem, które zanotowałeś podczas tworzenia zasobu. Zastąp symbol zastępczy w --tenant identyfikatorem 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 az network vnet peering create, aby utworzyć peering 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 az network vnet peering list, aby zweryfikować peering sieci wirtualnych między vnet-1 a vnet-2.

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

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. Użyj az network vnet peering create, aby utworzyć peering sieci wirtualnych między vnet-2 a 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 az network vnet peering list, aby zweryfikować peering 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