Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą.
Użyj środowiska Bash w usłudze Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with 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 Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu 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
| 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
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 loginUtwórz grupę zasobów za pomocą polecenia az group create.
az group create \ --name test-rg-1 \ --location eastus2Uż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.
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)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 $vnetidZanotuj 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" }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)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.comJednostka 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
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 loginUtwórz grupę zasobów za pomocą polecenia az group create.
az group create \ --name test-rg-2 \ --location westus2Uż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.
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)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 $vnetidZanotuj 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" }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)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.comJednostka 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.
Użyj az login, aby zalogować się do subskrypcji-2.
az loginUż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 $appid2Uż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.comAdres 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.compl-PL: Otwórz adres URL w przeglądarce internetowej i zaloguj się jako administrator 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.
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.
Użyj az login aby zalogować się do subskrypcji-1.
az loginUż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)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)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.
Użyj az login aby zalogować się do subskrypcji-1.
az loginUż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 $appid1Uż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.comAdres 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.comOtwórz adres URL w przeglądarce internetowej i zaloguj się jako administrator 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.
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.
Użyj az login, aby zalogować się do subskrypcji-2.
az loginUż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)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)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.
Użyj polecenia az login aby zalogować się do subskrypcji-1 przy użyciu zwykłego konta użytkownika.
az loginUż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)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)Użyj az login, aby zalogować się do subskrypcji-2 przy użyciu standardowego konta użytkownika.
az loginUż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)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 $appid2Użyj az logout, aby wylogować się z sesji interfejsu wiersza polecenia platformy Azure. Nie zamykaj terminalu.
az logout
Połącz wirtualne sieci
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
--tenantidentyfikatorem dzierżawy Microsoft Entra ID skojarzonym z subskrypcją-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4eUż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
--tenantidentyfikatorem dzierżawy Microsoft Entra ID skojarzonym z subskrypcją-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5fUż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 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-accessUż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 tableUżyj az account set, aby zmienić kontekst na subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"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-accessUż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