Łą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ą.
Użyj środowiska powłoki Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Szybki start dotyczący powłoki Bash w usłudze Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie interfejsu wiersza polecenia platformy Azure podczas pierwszego użycia. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Korzystanie z rozszerzeń w interfejsie wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
- 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
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
Utwórz grupę zasobów za pomocą polecenia az group create.
az group create \ --name test-rg-1 \ --location eastus2
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.
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)
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" }
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)
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
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
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
Utwórz grupę zasobów za pomocą polecenia az group create.
az group create \ --name test-rg-2 \ --location westus2
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.
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)
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" }
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)
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
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.
Użyj polecenia az login , aby zalogować się do subskrypcji-2.
az login
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
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
Otwórz adres URL w przeglądarce internetowej i zaloguj się przy użyciu administratora w dzierżawie Microsoft Entra ID w subskrypcji-1.
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.
Użyj polecenia az login , aby zalogować się do subskrypcji-1.
az login
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)
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)
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.
Użyj polecenia az login , aby zalogować się do subskrypcji-1.
az login
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
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
Otwórz adres URL w przeglądarce internetowej i zaloguj się przy użyciu administratora w dzierżawie Microsoft Entra ID w subskrypcji-2.
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.
Użyj polecenia az login , aby zalogować się do subskrypcji-2.
az login
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)
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)
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.
Użyj polecenia az login , aby zalogować się do subskrypcji-1 przy użyciu zwykłego konta użytkownika.
az login
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)
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)
Użyj polecenia az login , aby zalogować się do subskrypcji-2 przy użyciu zwykłego konta użytkownika.
az login
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)
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
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
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
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
Użyj polecenia az account set , aby zmienić kontekst na subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
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
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
Użyj polecenia az account set , aby zmienić kontekst na subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
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
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