Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 conectar duas redes virtuais com nomes de entidade de serviço (SPNs) em assinaturas diferentes. Os emparelhamentos de rede virtual entre redes virtuais em diferentes assinaturas e entidades do Microsoft Entra ID devem ser realizados através do Azure CLI ou 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 de ID Microsoft Entra. Crie uma conta gratuitamente.
Permissões de conta para criar um principal de serviço, atribuir permissões de aplicação e criar recursos no locatário do Microsoft Entra ID associado a cada subscrição.
Use o ambiente Bash no Azure Cloud Shell. Para mais informações, veja Get started with 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 Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a 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 | Localização |
|---|---|---|---|---|
| spn-1-peer-vnet | test-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 loginCrie um grupo de recursos com az group create.
az group create \ --name test-rg-1 \ --location eastus2Use 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 de vnet-2 numa etapa futura para possibilitar a conexão entre redes virtuais.
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 a atribuição à rede virtual vnet-1.
az ad sp create-for-rbac \ --name spn-1-peer-vnet \ --role "Network Contributor" \ --scope $vnetidAnote 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 do principal de serviço é usado nas etapas subsequentes para concluir a configuração do SPN. Utilize az ad sp list para colocar o appId do SPN numa 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.comA entidade de serviço deve poder 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 ao principal 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 utilizador com permissões para criar um grupo de recursos, uma rede virtual e um SPN no tenant do Microsoft Entra ID associado à assinatura-2
az loginCrie um grupo de recursos com az group create.
az group create \ --name test-rg-2 \ --location westus2Utilize 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 dentro do escopo da rede virtual que foi criada na etapa anterior. Este SPN é adicionado ao escopo de vnet-2 numa etapa futura para possibilitar a conexão entre redes virtuais.
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 $vnetidAnote 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.
O resultado é semelhante ao seguinte.
{ "appId": "22223333-cccc-4444-dddd-5555eeee6666", "displayName": "spn-2-peer-vnet", "password": "", "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f" }O appId do principal 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 ativar o modo multilocatário no spn-2-peer-vnet.
az ad app update \ --id $appid2 \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris https://www.microsoft.comA entidade de serviço deve poder 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 para o principal do 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 utilizador com permissões de administrador no locatário do Microsoft Entra ID deve concluir o processo de adicionar spn-2-vnet-peer a 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 do locatário de ID de assinatura-1 do Microsoft Entra deve aprovar a entidade de serviço spn-2-peer-vnet para que possa ser adicionada à rede virtual vnet-1. Utilize o seguinte comando para iniciar sessão em assinatura-2 para encontrar o appID do spn-2-peer-vnet.
Use az login para fazer login na assinatura-2.
az loginUse 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 $appid2Use o ID da aplicação para spn-2-peer-vnet e o ID de locatário do Microsoft Entra ID para assinatura-1 para criar a URL de início de sessão 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.comO 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.comAbra 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
Após a aprovação do administrador spn-2-peer-vnet, adicione-o à rede virtual vnet-1 como um Colaborador de Rede.
Utilize az login para entrar na assinatura-1.
az loginUse 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 o comando az network vnet show para obter o ID de recurso de vnet-1 numa 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 o seguinte comando az role assignment create 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 direitos 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 subscription-2 Microsoft Entra deve aprovar o principal do serviço spn-1-peer-vnet para que ele possa ser adicionado à rede virtual vnet-2. Use o comando a seguir para entrar na assinatura-1 para localizar o appID do spn-1-peer-vnet.
Utilize az login para entrar na assinatura-1.
az loginUse az ad sp list para obter a identificação da aplicação 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 $appid1Use 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.comO 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.comAbra o link num navegador da Web e inicie sessão como administrador no cliente 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 spn-1-peer-vnet, adicione-o à rede virtual vnet-2 como Colaborador de Rede.
Use az login para fazer login na assinatura-2.
az loginUtilize az ad sp list para encontrar o appId para spn-1-peer-vnet e coloque numa 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
Interligar vnet-1 a vnet-2 e vnet-2 a vnet-1
Para emparelhar vnet-1 a vnet-2, use o appId e a senha do principal de serviço para entrar no locatário do Microsoft Entra ID associado à assinatura-1.
Obtenha o id da aplicação 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 interligar as redes virtuais se ambas as partes 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 loginUse 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 numa variável para uso nos passos seguintes.
appid1=$(az ad sp list \ --display-name spn-1-peer-vnet \ --query [].appId \ --output tsv)Utilize az login para entrar na assinatura-2 com uma conta de utilizador comum.
az loginUse 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 $appid2Use 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 em
--tenantpelo identificador do locatário do Microsoft Entra ID associado à assinatura-1.az login \ --service-principal \ --username $appid1 \ --password $password \ --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4eUse az login para efetuar login em 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 em
--tenantpela identificação do locatário do Microsoft Entra ID associado à assinatura-2.az login \ --service-principal \ --username $appid2 \ --password $password \ --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5fUse o comando az account set para alterar o contexto para subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"Utilize 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-accessUtilize 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 tableUtilize az account set para mudar 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-accessUse 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