Подключение виртуальных сетей в разных подписках с именами субъектов-служб
Сценарии существуют, где необходимо подключить виртуальные сети в разных подписках без использования учетных записей пользователей или гостевых учетных записей. В этой виртуальной сети узнайте, как выполнять пиринг двух виртуальных сетей с именами субъектов-служб (SPN) в разных подписках. Пиринги виртуальных сетей между виртуальными сетями в разных подписках и клиентах идентификатора Microsoft Entra ID должны быть пиринговой связью через Azure CLI или PowerShell. В настоящее время в портал Azure нет возможности одноранговых виртуальных сетей с именами субъектов-служб в разных подписках.
Необходимые компоненты
Учетная запись Azure с двумя активными подписками и двумя клиентами Идентификатора Microsoft Entra. Создайте учетную запись бесплатно .
Разрешения учетной записи для создания субъекта-службы, назначения разрешений приложения и создания ресурсов в клиенте Идентификатора Microsoft Entra, связанном с каждой подпиской.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Для работы с этим практическим руководством требуется Azure CLI версии 2.31.0 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.
Используемые ресурсы
имя участника-службы | Группа ресурсов | Подписка или клиент | Виртуальная сеть | Расположение |
---|---|---|---|---|
spn-1-peer-vnet | test-rg-1 | подписка-1 | vnet-1 | Восточная часть США 2 |
spn-2-peer-vnet | test-rg-2 | подписка-2 | vnet-2 | западная часть США 2 |
Создание ресурсов подписки-1
Используйте az sign-in для входа в подписку-1 с учетной записью пользователя с разрешениями на создание группы ресурсов, виртуальной сети и имени субъекта-службы в клиенте Идентификатора Microsoft Entra ID, связанном с подпиской-1
az login
Создайте группу ресурсов с помощью команды az group create.
az group create \ --name test-rg-1 \ --location eastus2
Используйте az network vnet create , чтобы создать виртуальную сеть с именем vnet-1 в подписке-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 с областью действия виртуальной сети, созданной на предыдущем шаге. Это имя субъекта-службы добавляется в область виртуальной сети-2 на следующем шаге, чтобы разрешить одноранговый узел виртуальной сети.
Используйте az network vnet show , чтобы поместить идентификатор ресурса виртуальной сети, созданной ранее в переменной для использования на следующем шаге.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Используйте az ad sp create-for-rbac, чтобы создать spn-1-peer-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" }
Идентификатор приложения субъекта-службы используется в последующих шагах для завершения настройки имени субъекта-службы. Используйте az ad sp list , чтобы поместить идентификатор приложения субъекта-службы в переменную для последующего использования.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Имя субъекта-службы, созданное на предыдущем шаге, должно иметь универсальный код ресурса (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
Субъект-служба должен иметь разрешения User.Read в каталоге. Используйте az ad app permission add and az ad app permission grant to add the Microsoft Graph permissions of User.Read to the service principal.
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
Создание ресурсов подписки-2
Используйте az login для входа в подписку-2 с учетной записью пользователя с разрешениями на создание группы ресурсов, виртуальной сети и имени участника-службы в клиенте Идентификатора Microsoft Entra ID, связанном с подпиской-2
az login
Создайте группу ресурсов с помощью az group create.
az group create \ --name test-rg-2 \ --location westus2
Используйте az network vnet create , чтобы создать виртуальную сеть с именем vnet-2 в подписке-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 с областью действия виртуальной сети, созданной на предыдущем шаге. Это имя субъекта-службы добавляется в область виртуальной сети-2 на следующем шаге, чтобы разрешить одноранговый узел виртуальной сети.
Используйте az network vnet show , чтобы поместить идентификатор ресурса виртуальной сети, созданной ранее в переменной для использования на следующем шаге.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Используйте az ad sp create-for-rbac, чтобы создать spn-2-peer-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" }
Идентификатор приложения субъекта-службы используется в последующих шагах для завершения настройки имени субъекта-службы. Используйте az ad sp list , чтобы поместить идентификатор имени участника-службы в переменную для последующего использования.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Имя субъекта-службы, созданное на предыдущем шаге, должно иметь универсальный код ресурса (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
Субъект-служба должен иметь разрешения User.Read в каталоге. Используйте az ad app permission add and az ad app permission grantto add the Microsoft Graph permissions of User.Read to the service principal.
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
Регистрация spn-2-peer-vnet в подписке-1 и назначение разрешений для виртуальной сети-1
Учетная запись пользователя с разрешениями администратора в клиенте идентификатора Microsoft Entra ID должна завершить процесс добавления spn-2-vnet-peer в подписку-1. После завершения одноранговый узел spn-2-vnet-можно назначить разрешения для виртуальной сети-1.
Регистрация приложения spn-2-peer-vnet в подписке-1
Администратор в клиенте идентификатора Microsoft Entra 1 должен утвердить субъект-службу spn-2-peer-vnet , чтобы его можно было добавить в виртуальную сеть vnet-1. Используйте следующую команду, чтобы войти в подписку-2 , чтобы найти идентификатор приложения spn-2-peer-vnet.
Используйте az login для входа в подписку-2.
az login
Используйте az ad sp list , чтобы получить идентификатор приложения spn-2-peer-vnet. Обратите внимание на идентификатор приложения в выходных данных. Этот идентификатор приложения используется в URL-адресе проверки подлинности в последующих шагах.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Используйте идентификатор приложения для spn-2-peer-vnet и идентификатор клиента Microsoft Entra ID для подписки-1, чтобы создать 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
Откройте URL-адрес в веб-браузере и войдите с помощью администратора в клиенте Идентификатора Microsoft Entra в подписке-1.
Утвердить приложение spn-2-peer-vnet. Домашняя страница microsoft.com отображается, если проверка подлинности выполнена успешно.
Назначение виртуальной сети spn-2-peer-vnet виртуальной сети виртуальной сети-1
После утверждения администратором spn-2-peer-vnet добавьте его в виртуальную сеть vnet-1 в качестве участника сети.
Используйте az login для входа в подписку-1.
az login
Используйте az ad sp list , чтобы найти appId для spn-2-peer-vnet и поместить в переменную для последующего использования.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Используйте az network vnet show , чтобы получить идентификатор ресурса виртуальной сети-1 в переменную для использования в последующих шагах.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Используйте az role assignment создайте следующую команду, чтобы добавить spn-2-peer-vnet в vnet-1 в качестве участника сети.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Регистрация spn-1-peer-vnet в подписке-2 и назначение разрешений для виртуальной сети-2
Учетная запись пользователя с разрешениями администратора в клиенте Идентификатора Записи Майкрософт должна завершить процесс добавления spn-1-peer-vnet в подписку-2. После завершения одноранговая сеть spn-1 может быть назначена разрешения для виртуальной сети-2.
Регистрация приложения spn-1-peer-vnet в подписке-2
Администратор в клиенте идентификатора Microsoft Entra 2 должен утвердить субъект-службу spn-1-peer-vnet, чтобы его можно было добавить в виртуальную сеть vnet-2. Используйте следующую команду, чтобы войти в подписку-1 , чтобы найти идентификатор приложения spn-1-peer-vnet.
Используйте az login для входа в подписку-1.
az login
Используйте az ad sp list для получения идентификатора приложения spn-1-peer-vnet. Обратите внимание на идентификатор приложения в выходных данных. Этот идентификатор приложения используется в URL-адресе проверки подлинности в последующих шагах.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Используйте идентификатор приложения для spn-1-peer-vnet и идентификатор клиента Microsoft Entra ID для подписки-2, чтобы создать 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
Откройте URL-адрес в веб-браузере и войдите с правами администратора в клиенте Идентификатора Microsoft Entra в подписке-2.
Утвердить приложение spn-1-peer-vnet. Домашняя страница microsoft.com отображается, если проверка подлинности выполнена успешно.
Назначение виртуальной сети spn-1-peer-vnet виртуальной сети-2
После утверждения администратором spn-1-peer-vnet добавьте его в виртуальную сеть vnet-2 в качестве участника сети.
Используйте az login для входа в подписку-2.
az login
Используйте az ad sp list , чтобы найти идентификатор appId для spn-1-peer-vnet и поместить в переменную для последующего использования.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Используйте az network vnet show , чтобы получить идентификатор ресурса виртуальной сети-2 в переменную для использования в последующих шагах.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Используйте az role assignment create, чтобы добавить spn-1-peer-vnet в vnet-2 в качестве участника сети.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Одноранговая виртуальная сеть-1 в vnet-2 и vnet-2 в vnet-1
Для однорангового подключения vnet-1 к виртуальной сети-2 используйте идентификатор приложения субъекта-службы и пароль для входа в клиент Идентификатора Microsoft Entra, связанный с подпиской-1.
Получение идентификатора приложения spn-1-peer-vnet и spn-2-peer-vnet
В целях этой статьи войдите в каждую подписку и получите идентификатор приложения каждого субъекта-службы и идентификатор ресурса каждой виртуальной сети. Используйте эти значения для входа в каждую подписку с помощью имени участника-службы в последующих шагах. Эти действия не требуются для пирринга виртуальных сетей, если обе стороны уже имеют идентификатор приложения субъектов-служб и идентификатор ресурса виртуальных сетей.
Используйте az login для входа в подписку-1 с обычной учетной записью пользователя.
az login
Используйте az network vnet show , чтобы получить идентификатор ресурса виртуальной сети-1 в переменную для использования в последующих шагах.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Используйте az ad sp list , чтобы получить идентификатор appId spn-1-peer-vnet и поместить в переменную для использования в последующих шагах.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Используйте az login для входа в подписку-2 с обычной учетной записью пользователя.
az login
Используйте az network vnet show , чтобы получить идентификатор ресурса виртуальной сети-2 в переменную для использования в последующих шагах.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Используйте az ad sp list , чтобы получить идентификатор appId spn-2-peer-vnet и поместить в переменную для использования в последующих шагах.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Используйте az logout , чтобы выйти из сеанса Azure CLI с помощью следующей команды. Не закрывайте терминал.
az logout
Пиринг виртуальных сетей
Используйте az login для входа в подписку-1 с spn-1-peer-vnet. Чтобы завершить команду, необходимо идентификатор клиента Microsoft Entra ID, связанного с подпиской-1 . Пароль показан в примере с заполнителем переменной. Замените пароль, который вы указали во время создания ресурса. Замените заполнитель идентификатором
--tenant
клиента Microsoft Entra ID, связанного с подпиской-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Используйте az login для входа в подписку-2 с spn-2-peer-vnet. Чтобы завершить команду, необходимо идентификатор клиента Microsoft Entra ID, связанного с подпиской-2 . Пароль показан в примере с заполнителем переменной. Замените пароль, который вы указали во время создания ресурса. Замените заполнитель на
--tenant
идентификатор клиента клиента Microsoft Entra ID, связанного с подпиской-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Используйте az account set, чтобы изменить контекст на подписку-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Используйте az network vnet peering create , чтобы создать пиринг между виртуальной сетью-1 и 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
Используйте az network vnet peering list , чтобы проверить пиринг между виртуальной сетью-1 и vnet-2.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Используйте az account set, чтобы изменить контекст на подписку-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Используйте az network vnet peering create to create to create the virtual network peering between vnet-2 and 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
Используйте az network vnet peering list , чтобы проверить пиринг между виртуальной сетью-2 и vnet-1.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table