Conectar redes virtuais em diferentes assinaturas com nomes de entidade de serviço
Existem cenários em que você precisa conectar redes virtuais em assinaturas diferentes sem o uso de contas de usuário ou contas de convidado. Neste tutorial de rede virtual, saiba como emparelhar duas redes virtuais com nomes de entidade de serviço (SPNs) em assinaturas diferentes. Os emparelhamentos de rede virtual entre redes virtuais em assinaturas diferentes e locatários do Microsoft Entra ID devem ser emparelhados por meio da CLI do Azure ou do PowerShell. Atualmente, não há uma opção no portal do Azure para emparelhar redes virtuais com SPNs em assinaturas diferentes.
Pré-requisitos
Uma conta do Azure com duas assinaturas ativas e dois locatários do Microsoft Entra ID. Crie uma conta gratuitamente.
Permissões de conta para criar uma entidade de serviço, atribuir permissões de aplicativo e criar recursos no locatário do Microsoft Entra ID associado a cada assinatura.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
- Este artigo de instruções requer a versão 2.31.0 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.
Recursos utilizados
SPN | Grupo de recursos | Subscrição/Inquilino | Rede virtual | Location |
---|---|---|---|---|
spn-1-peer-vnet | teste-rg-1 | assinatura-1 | VNET-1 | E.U.A. Leste 2 |
spn-2-peer-vnet | teste-rg-2 | subscrição-2 | VNET-2 | E.U.A. Oeste 2 |
Criar recursos de subscrição-1
Use az sign-in para entrar na assinatura-1 com uma conta de usuário com permissões para criar um grupo de recursos, uma rede virtual e um SPN no locatário do Microsoft Entra ID associado à assinatura-1
az login
Crie um grupo de recursos com az group create.
az group create \ --name test-rg-1 \ --location eastus2
Use az network vnet create para criar uma rede virtual chamada vnet-1 em subscription-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
Criar spn-1-peer-vnet
Crie spn1-peer-vnet com um escopo para a rede virtual criada na etapa anterior. Este SPN é adicionado ao escopo do vnet-2 em uma etapa futura para permitir o par de rede virtual.
Use az network vnet show para colocar o ID do recurso da rede virtual que você criou anteriormente em uma variável para uso na etapa posterior.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Use az ad sp create-for-rbac para criar spn-1-peer-vnet com uma função de Colaborador de Rede com escopo para a rede virtual vnet-1.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Anote a saída da criação na etapa. A senha só é exibida aqui nesta saída. Copie a palavra-passe para um local seguro para utilização nos passos de início de sessão posteriores.
{ "appId": "11112222-bbbb-3333-cccc-4444dddd5555", "displayName": "spn-1-peer-vnet", "password": "", "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e" }
O appId da entidade de serviço é usado nas etapas subsequentes para concluir a configuração do SPN. Use az ad sp list para colocar o appId do SPN em uma variável para uso posterior.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
O SPN criado na etapa anterior deve ter um URI de redirecionamento para concluir a aprovação do processo de autenticação e deve ser convertido para uso multilocatário. Use az ad app update para adicionar https://www.microsoft.com como um URI de redirecionamento e habilitar multilocatário no spn-1-peer-vnet.
az ad app update \ --id $appid1 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
A entidade de serviço deve ter permissões User.Read para o diretório. Use az ad app permission add e az ad app permission grant para adicionar as permissões do Microsoft Graph de User.Read à entidade de serviço.
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
Criar recursos de subscrição-2
Use az login para entrar na assinatura-2 com uma conta de usuário com permissões para criar um grupo de recursos, uma rede virtual e um SPN no locatário do Microsoft Entra ID associado à assinatura-2
az login
Crie um grupo de recursos com az group create.
az group create \ --name test-rg-2 \ --location westus2
Use az network vnet create para criar uma rede virtual chamada vnet-2 na assinatura-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
Criar spn-2-peer-vnet
Crie o spn-2-peer-vnet com um escopo para a rede virtual criada na etapa anterior. Este SPN é adicionado ao escopo do vnet-2 em uma etapa futura para permitir o par de rede virtual.
Use az network vnet show para colocar o ID do recurso da rede virtual que você criou anteriormente em uma variável para uso na etapa posterior.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Use az ad sp create-for-rbac para criar spn-2-peer-vnet com uma função de Colaborador de Rede com escopo para a rede virtual vnet-2.
az ad sp create-for-rbac \ --name spn-2-peer-vnet \ --role "Network Contributor" \ --scope $vnetid
Anote a saída da criação na etapa. Copie a palavra-passe para um local seguro para utilização nos passos de início de sessão posteriores. A palavra-passe não é apresentada novamente.
A saída é semelhante à saída a seguir.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }
O appId da entidade de serviço é usado nas etapas subsequentes para concluir a configuração do SPN. Use az ad sp list para colocar o ID do SPN em uma variável para uso posterior.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
O SPN criado na etapa anterior deve ter um URI de redirecionamento para concluir a aprovação do processo de autenticação e deve ser convertido para uso multilocatário. Use az ad app update para adicionar https://www.microsoft.com como um URI de redirecionamento e habilitar multilocatário no spn-2-peer-vnet.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.com
A entidade de serviço deve ter permissões User.Read para o diretório. Use az ad app permission add e az ad app permission grantpara adicionar as permissões do Microsoft Graph de User.Read à entidade de serviço.
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
Registre o spn-2-peer-vnet na assinatura-1 e atribua permissões ao vnet-1
Uma conta de usuário com permissões de administrador no locatário do Microsoft Entra ID deve concluir o processo de adição do spn-2-vnet-peer à assinatura-1. Uma vez concluído, o spn-2-vnet-peer pode receber permissões para vnet-1.
Registrar o aplicativo spn-2-peer-vnet na assinatura-1
Um administrador no locatário de ID do Microsoft Entra de assinatura 1 deve aprovar a entidade de serviço spn-2-peer-vnet para que ela possa ser adicionada à rede virtual vnet-1. Use o comando a seguir para entrar na assinatura-2 para encontrar o appID do spn-2-peer-vnet.
Use az login para entrar na assinatura-2.
az login
Use az ad sp list para obter o appId do spn-2-peer-vnet. Observe o appID na saída. Esse appID é usado na URL de autenticação nas etapas posteriores.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Use o appid para spn-2-peer-vnet e o ID de locatário do Microsoft Entra ID para assinatura-1 para criar a URL de entrada para a aprovação. A URL é criada a partir do exemplo a seguir:
https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
O URL é semelhante ao exemplo abaixo.
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
Abra a URL em um navegador da Web e entre com um administrador no locatário do Microsoft Entra ID na assinatura-1.
Aprove o aplicativo spn-2-peer-vnet. A página inicial do microsoft.com será exibida se a autenticação tiver sido bem-sucedida.
Atribuir spn-2-peer-vnet a vnet-1
Depois que o administrador aprovar o spn-2-peer-vnet, adicione-o à rede virtual vnet-1 como um Colaborador de Rede.
Use az login para entrar na assinatura-1.
az login
Use az ad sp list para encontrar o appId para spn-2-peer-vnet e coloque em uma variável para uso posterior.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv)
Use Use az network vnet show para obter o ID de recurso de vnet-1 em uma variável para uso nas etapas posteriores.
vnetid=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Use az role assignment create the seguinte comando para adicionar spn-2-peer-vnet a vnet-1 como um Colaborador de Rede.
az role assignment create --assignee $appid2 \ --role "Network Contributor" \ --scope $vnetid
Registre o spn-1-peer-vnet na assinatura-2 e atribua permissões ao vnet-2
Uma conta de usuário com permissões de administrador no locatário do Microsoft Entra ID deve concluir o processo de adição do spn-1-peer-vnet à assinatura-2. Uma vez concluído, o spn-1-peer-vnet pode receber permissões para vnet-2.
Registrar o aplicativo spn-1-peer-vnet na assinatura-2
Um administrador no locatário de ID do Microsoft Entra de assinatura 2 deve aprovar a entidade de serviço spn-1-peer-vnet para que ela possa ser adicionada à rede virtual vnet-2. Use o comando a seguir para entrar na assinatura-1 para localizar o appID do spn-1-peer-vnet.
Use az login para entrar na assinatura-1.
az login
Use az ad sp list para obter o appId do spn-1-peer-vnet. Observe o appID na saída. Esse appID é usado na URL de autenticação nas etapas posteriores.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv) echo $appid1
Use o appid para spn-1-peer-vnet e o ID de locatário do Microsoft Entra ID para assinatura-2 para criar a URL de entrada para a aprovação. A URL é criada a partir do exemplo a seguir:
https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
O URL é semelhante ao exemplo abaixo.
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
Abra a URL em um navegador da Web e entre com um administrador no locatário do Microsoft Entra ID na assinatura-2.
Aprove o aplicativo spn-1-peer-vnet. A página inicial do microsoft.com será exibida se a autenticação tiver sido bem-sucedida.
Atribuir spn-1-peer-vnet a vnet-2
Assim que o administrador aprovar o spn-1-peer-vnet, adicione-o à rede virtual vnet-2 como Colaborador de Rede.
Use az login para entrar na assinatura-2.
az login
Use az ad sp list para encontrar o appId para spn-1-peer-vnet e coloque em uma variável para uso posterior.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Use az network vnet show para obter o ID de recurso de vnet-2 em uma variável para uso nas etapas posteriores.
vnetid=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Use az role assignment create para adicionar spn-1-peer-vnet a vnet-2 como um Colaborador de Rede.
az role assignment create --assignee $appid1 \ --role "Network Contributor" \ --scope $vnetid
Peer vnet-1 para vnet-2 e vnet-2 para vnet-1
Para emparelhar vnet-1 a vnet-2, use o appId e a senha da entidade de serviço para entrar no locatário do Microsoft Entra ID associado à assinatura-1.
Obtenha o appId do spn-1-peer-vnet e do spn-2-peer-vnet
Para os fins deste artigo, entre em cada assinatura e obtenha o appID de cada SPN e o ID de recurso de cada rede virtual. Use esses valores para entrar em cada assinatura com o SPN nas etapas posteriores. Essas etapas não são necessárias para emparelhar as redes virtuais se ambos os lados já tiverem o appID dos SPNs e o ID do recurso das redes virtuais.
Use az login para entrar na assinatura-1 com uma conta de usuário regular.
az login
Use az network vnet show para obter o ID de recurso de vnet-1 em uma variável para uso nas etapas posteriores.
vnetid1=$(az network vnet show \ --resource-group test-rg-1 \ --name vnet-1 \ --query id \ --output tsv)
Use az ad sp list para obter o appId do spn-1-peer-vnet e coloque em uma variável para uso nas etapas posteriores.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)
Use az login para entrar na assinatura-2 com uma conta de usuário regular.
az login
Use az network vnet show para obter o ID de recurso de vnet-2 em uma variável para uso nas etapas posteriores.
vnetid2=$(az network vnet show \ --resource-group test-rg-2 \ --name vnet-2 \ --query id \ --output tsv)
Use az ad sp list para obter o appId do spn-2-peer-vnet e coloque em uma variável para uso nas etapas posteriores.
appid2=$(az ad sp list \ --display-name spn-2-peer-vnet \ --query [].appId \ --output tsv) echo $appid2
Use az logout para sair da sessão da CLI do Azure com o seguinte comando. Não feche o terminal.
az logout
Emparelhar as redes virtuais
Use az login para entrar na assinatura-1 com spn-1-peer-vnet. Você precisa da ID do locatário do Microsoft Entra ID associado à assinatura-1 para concluir o comando. A senha é mostrada no exemplo com um espaço reservado variável. Substitua pela senha que você anotou durante a criação do recurso. Substitua o espaço reservado pela
--tenant
ID do locatário do Microsoft Entra ID associado à assinatura-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
Use az login para entrar na assinatura-2 com spn-2-peer-vnet. Você precisa da ID do locatário do Microsoft Entra ID associada à assinatura-2 para concluir o comando. A senha é mostrada no exemplo com um espaço reservado variável. Substitua pela senha que você anotou durante a criação do recurso. Substitua o espaço reservado pela
--tenant
ID do locatário do Microsoft Entra ID associado à assinatura-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
Use az account set para alterar o contexto para subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
Use az network vnet peering create para criar o emparelhamento de rede virtual entre vnet-1 e 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
Use az network vnet peering list para verificar o emparelhamento de rede virtual entre vnet-1 e vnet-2.
az network vnet peering list \ --resource-group test-rg-1 \ --vnet-name vnet-1 \ --output table
Use az account set para alterar o contexto para subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
Use az network vnet peering create para criar o emparelhamento de rede virtual entre vnet-2 e 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
Use az network vnet peering list para verificar o emparelhamento de rede virtual entre vnet-2 e vnet-1.
az network vnet peering list \ --resource-group test-rg-2 \ --vnet-name vnet-2 \ --output table