Compartilhar via


Conectar redes virtuais em diferentes assinaturas com nomes de entidades de serviço

Existem cenários em que é necessário conectar redes virtuais em diferentes assinaturas sem o uso de contas de usuário ou contas de convidado. Nessas instruções sobre redes virtuais, saiba como emparelhar duas redes virtuais com SPNs (nomes de entidades de serviço) em assinaturas diferentes. Os emparelhamentos de rede virtual entre redes virtuais em diferentes assinaturas 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 diferentes assinaturas.

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.

  • Este artigo de instruções exige a versão 2.31.0 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.

Recursos usados

SPN Grupo de recursos Assinatura/Locatário Rede virtual Localidade
spn-1-peer-vnet test-rg-1 assinatura-1 vnet-1 Leste dos EUA 2
spn-2-peer-vnet test-rg-2 assinatura-2 vnet-2 Oeste dos EUA 2

Criar recursos de subscription-1

  1. Use o az sign-in para entrar em subscription-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 a subscription-1

    az login
    
  2. Crie um grupo de recursos com az group create.

    az group create \
        --name test-rg-1 \
        --location eastus2  
    
  3. 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. Esse SPN é adicionado ao escopo de vnet-2 em uma etapa futura para permitir o par de rede virtual.

  1. Use az network vnet show para colocar a ID do recurso da rede virtual criada 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)
    
  2. 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ó será exibida aqui nessa saída. Copie a senha para um local seguro para uso nas etapas de entrada posteriores.

    {
    "appId": "11112222-bbbb-3333-cccc-4444dddd5555",
    "displayName": "spn-1-peer-vnet",
    "password": "",
    "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"    
    }
    
  3. A appId da entidade de serviço é usada nas etapas seguintes para concluir a configuração do SPN. Use az ad sp list para colocar a 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)
    
  4. 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 o multilocatário em spn-1-peer-vnet.

    az ad app update \
        --id $appid1 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. A entidade de serviço deve ter permissões de 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 subscription-2

  1. Use az login para entrar em subscription-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 a subscription-2

    az login
    
  2. Crie um grupo de recursos com az group create.

    az group create \
        --name test-rg-2 \
        --location westus2  
    
  3. Use az network vnet create para criar uma rede virtual chamada vnet-2 em subscription-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 spn-2-peer-vnet com um escopo para a rede virtual criada na etapa anterior. Esse SPN é adicionado ao escopo de vnet-2 em uma etapa futura para permitir o par de rede virtual.

  1. Use az network vnet show para colocar a ID do recurso da rede virtual criada 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)
    
  2. 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 senha para um local seguro para uso nas etapas de entrada posteriores. A senha não será exibida novamente.

    A saída é semelhante à seguinte saída.

    {
    "appId": "22223333-cccc-4444-dddd-5555eeee6666",
    "displayName": "spn-2-peer-vnet",
    "password": "",
    "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
    }    
    
  3. A appId da entidade de serviço é usada nas etapas seguintes para concluir a configuração do SPN. Use az ad sp list para colocar a 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)
    
  4. 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 o multilocatário em spn-2-peer-vnet.

    az ad app update \
        --id $appid2 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. A entidade de serviço deve ter permissões de 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 $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
    

Registrar spn-2-peer-vnet em subscription-1 e atribuir permissões à 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 de spn-2-vnet-peer a subscription-1. Após a conclusão, spn-2-vnet-peer poderá receber permissões para vnet-1.

Registrar aplicativo spn-2-peer-vnet em subscription-1

Um administrador no locatário do Microsoft Entra ID de subscription-1 deve aprovar a entidade de serviço spn-2-peer-vnet para que ela possa ser adicionada à rede virtual vnet-1. Use o seguinte comando para entrar em subscription-2 e localizar a appID de spn-2-peer-vnet.

  1. Use az login para entrar em subscription-2.

    az login
    
  2. Use az ad sp list para obter a appId de spn-2-peer-vnet. Observe a appID na saída. Essa appID é usada 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
    
  3. Use o appid para spn-2-peer-vnet e o ID do locatário do Microsoft Entra ID para subscription-1 para criar a URL de login para a aprovação. A URL será criada com base no 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
    

    A URL será 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
    
  4. Abra a URL em um navegador da Web e entre com um administrador no locatário do Microsoft Entra ID em subscription-1.

  5. Aprove o aplicativo spn-2-peer-vnet. A página inicial do microsoft.com será exibida se a autenticação for bem-sucedida.

Atribuir spn-2-peer-vnet à vnet-1

Depois que o administrador aprovar o spn-2-peer-vnet, adicione-o à rede virtual vnet-1 como um Colaborador de Rede.

  1. Use az login para entrar em subscription-1.

    az login
    
  2. Use az ad sp list para localizar a 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)
    
  3. Use az network vnet show para obter a ID do recurso da 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)
    
  4. Use az role assignment create e o comando a seguir 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
    

Registrar spn-1-peer-vnet em subscription-2 e atribuir permissões à 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 de spn-1-peer-vnet à subscription-2. Após a conclusão, spn-1-peer-vnet poderá receber permissões para vnet-2.

Registrar aplicativo spn-1-peer-vnet em subscription-2

Um administrador do locatário do Microsoft Entra ID da subscription-2 deve aprovar a entidade de serviço spn-1-peer-vnet para que ela possa ser adicionada à rede virtual vnet-2. Use o seguinte comando para entrar em subscription-1 e localizar a appID de spn-1-peer-vnet.

  1. Use az login para entrar em subscription-1.

    az login
    
  2. Use az ad sp list para obter a appId de spn-1-peer-vnet. Observe a appID na saída. Essa appID é usada 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
    
  3. Use a appid para spn-1-peer-vnet e a ID do locatário do Microsoft Entra ID para subscription-2 para criar a URL de entrada para a aprovação. A URL será criada com base no 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
    

    A URL será 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
    
  4. Abra a URL em um navegador da Web e entre com um administrador no locatário do Microsoft Entra ID em subscription-2.

  5. Aprove o aplicativo spn-1-peer-vnet. A página inicial do microsoft.com será exibida se a autenticação for bem-sucedida.

Atribuir spn-1-peer-vnet à vnet-2

Depois que o administrador aprovar o spn-1-peer-vnet, adicione-o à rede virtual vnet-2 como um Colaborador de Rede.

  1. Use az login para entrar em subscription-2.

    az login
    
  2. Use az ad sp list para localizar a 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)
    
  3. Use az network vnet show para obter a ID do recurso da 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)
    
  4. Use az role assignment create para adicionar spn-1-peer-vnet à vnet-2 como um Colaborador de Rede.

    az role assignment create --assignee $appid1 \
        --role "Network Contributor" \
        --scope $vnetid
    

Emparelhar vnet-1 para vnet-2 e vnet-2 para vnet-1

Para emparelhar a vnet-1 para a vnet-2, use a appId da entidade de serviço e a senha para entrar no locatário do Microsoft Entra ID associado a subscription-1.

Obter a appId de spn-1-peer-vnet e spn-2-peer-vnet

Para os propósitos desse artigo, entre em cada assinatura e obtenha a appID de cada SPN e a ID do recurso de cada rede virtual. Use esses valores para entrar em cada assinatura com o SPN nas etapas posteriores. Essas etapas não serão necessárias para emparelhar as redes virtuais se ambos os lados já tiverem a appID dos SPNs e a ID do recurso das redes virtuais.

  1. Use az login para entrar na subscription-1 com uma conta de usuário regular.

    az login
    
  2. Use az network vnet show para obter a ID do recurso da 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)
    
  3. Use az ad sp list para obter a appId de spn-1-peer-vnet e colocar em uma variável para uso nas etapas posteriores.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. Use az login para entrar na subscription-2 com uma conta de usuário regular.

    az login
    
  5. Use az network vnet show para obter a ID do recurso da 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)
    
  6. Use az ad sp list para obter a appId de spn-2-peer-vnet e colocar 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
    
  7. Use az logout para sair da sessão da CLI do Azure com o comando a seguir. Não feche o terminal.

    az logout
    

Emparelhar as redes virtuais

  1. Use az login para entrar na subscription-1 com spn-1-peer-vnet. Você precisa da ID do locatário do Microsoft Entra ID associado à subscription-1 para concluir o comando. A senha será 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 --tenant pela ID do locatário do Microsoft Entra ID associado a subscription-1.

    az login \
        --service-principal \
        --username $appid1 \
        --password $password \
        --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
    
  2. Use az login para entrar na subscription-2 com spn-2-peer-vnet. Você precisa da ID do locatário do Microsoft Entra ID associado à subscription-2 para concluir o comando. A senha será 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 --tenant pela ID do locatário do Microsoft Entra ID associado a subscription-2.

    az login \
        --service-principal \
        --username $appid2 \
        --password $password \
        --tenant bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
    
  3. Use az account set para alterar o contexto para subscription-1.

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. Use az network vnet peering create para criar um emparelhamento de rede virtual entre a vnet-1 e a 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
    
  5. Use az network vnet peering list para verificar um emparelhamento de rede virtual entre a vnet-1 e a vnet-2.

    az network vnet peering list \
        --resource-group test-rg-1 \
        --vnet-name vnet-1 \
        --output table
    
  6. Use az account set para alterar o contexto para subscription-2.

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. Use az network vnet peering create para criar um emparelhamento de rede virtual entre a vnet-2 e 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-access
    
  8. Use az network vnet peering list para verificar um emparelhamento de rede virtual entre a vnet-2 e a vnet-1.

    az network vnet peering list \
        --resource-group test-rg-2 \
        --vnet-name vnet-2 \
        --output table