Compartir a través de


Conexión de redes virtuales en distintas suscripciones con nombres de entidad de seguridad de servicio

Existen escenarios en los que es necesario conectar redes virtuales en distintas suscripciones sin el uso de cuentas de usuario o cuentas de invitado. En este procedimiento de red virtual, aprenda a emparejar dos redes virtuales con nombres de entidad de seguridad de servicio (SPN) en distintas suscripciones. Los emparejamientos de red virtual entre redes virtuales en distintas suscripciones y los inquilinos de Microsoft Entra ID deben emparejarse a través de la CLI de Azure o PowerShell. Actualmente no hay ninguna opción en Azure Portal para emparejar redes virtuales con SPN en distintas suscripciones.

Requisitos previos

  • Una cuenta de Azure con dos suscripciones activas y dos inquilinos de Microsoft Entra ID. Cree una cuenta gratuita.

  • Permisos de cuenta para crear una entidad de servicio, asignar permisos de aplicación y crear recursos en el inquilino de Microsoft Entra ID asociado a cada suscripción.

  • Este artículo de explicación necesita la versión 2.31.0 o versiones posteriores de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Recursos usados

SPN Resource group Suscripción o inquilino Red virtual Location
spn-1-peer-vnet test-rg-1 subscription-1 vnet-1 Este de EE. UU. 2
spn-2-peer-vnet test-rg-2 subscription-2 vnet-2 Oeste de EE. UU. 2

Creación de recursos de subscription-1

  1. Use el az sign-in para iniciar sesión en la suscripción-1 con una cuenta de usuario con permisos para crear un grupo de recursos, una red virtual y un SPN en el inquilino de Microsoft Entra ID asociado con la subscription-1

    az login
    
  2. Cree un grupo de recursos con az group create.

    az group create \
        --name test-rg-1 \
        --location eastus2  
    
  3. Use az network vnet create para crear una red virtual denominada vnet-1 en 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
    

Creación de spn-1-peer-vnet

Cree spn1-peer-vnet con un ámbito en la red virtual creada en el paso anterior. Este SPN se agrega al ámbito de vnet-2 en un paso futuro para permitir el emparejamiento de red virtual.

  1. Use az network vnet show para colocar el identificador de recurso de la red virtual que creó anteriormente en una variable para usarla en el paso 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 crear spn-1-peer-vnet con un rol de Colaborador de red ámbito de la red virtual vnet-1.

    az ad sp create-for-rbac \
        --name spn-1-peer-vnet \
        --role "Network Contributor" \
        --scope $vnetid
    

    Anote la salida de la creación en el paso. La contraseña solo se muestra aquí en esta salida. Copie la contraseña en un lugar seguro para su uso en los pasos de inicio de sesión posteriores.

    {
    "appId": "11112222-bbbb-3333-cccc-4444dddd5555",
    "displayName": "spn-1-peer-vnet",
    "password": "",
    "tenant": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"    
    }
    
  3. El appId de la entidad de servicio se usa en los pasos posteriores para finalizar la configuración del SPN. Use az ad sp list para colocar el appId del SPN en una variable para su uso posterior.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. El SPN creado en el paso anterior debe tener un URI de redirección para finalizar la aprobación del proceso de autenticación y debe convertirse en un uso multiinquilino. Use az ad app update para agregar https://www.microsoft.com como URI de redirección y habilitar multiinquilino en spn-1-peer-vnet.

    az ad app update \
        --id $appid1 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. La entidad de servicio debe tener permisos User.Read en el directorio. Use az ad app permission add y az ad app permission grant para agregar los permisos de Microsoft Graph de User.Read a la entidad de servicio.

    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
    

Creación de recursos de subscription-2

  1. Use az login para iniciar sesión en suscripción-2 con una cuenta de usuario con permisos para crear un grupo de recursos, una red virtual y un SPN en el inquilino de Microsoft Entra ID asociado a subscription-2

    az login
    
  2. Cree un grupo de recursos con az group create.

    az group create \
        --name test-rg-2 \
        --location westus2  
    
  3. Use az network vnet create para crear una red virtual denominada vnet-2 en 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
    

Creación de spn-2-peer-vnet

Cree spn-2-peer-vnet con un ámbito en la red virtual creada en el paso anterior. Este SPN se agrega al ámbito de vnet-2 en un paso futuro para permitir el emparejamiento de red virtual.

  1. Use az network vnet show para colocar el identificador de recurso de la red virtual que creó anteriormente en una variable para usarla en el paso 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 crear spn-2-peer-vnet con un rol de Colaborador de red ámbito de la red virtual vnet-2.

    az ad sp create-for-rbac \
        --name spn-2-peer-vnet \
        --role "Network Contributor" \
        --scope $vnetid
    

    Anote la salida de la creación en el paso. Copie la contraseña en un lugar seguro para su uso en los pasos de inicio de sesión posteriores. La contraseña no se muestra de nuevo.

    La salida es similar a la siguiente salida.

    {
    "appId": "22223333-cccc-4444-dddd-5555eeee6666",
    "displayName": "spn-2-peer-vnet",
    "password": "",
    "tenant": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
    }    
    
  3. El appId de la entidad de servicio se usa en los pasos posteriores para finalizar la configuración del SPN. Use az ad sp list para colocar el identificador del SPN en una variable para su uso posterior.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. El SPN creado en el paso anterior debe tener un URI de redirección para finalizar la aprobación del proceso de autenticación y debe convertirse en un uso multiinquilino. Use az ad app update para agregar https://www.microsoft.com como URI de redirección y habilitar multiinquilino en spn-2-peer-vnet.

    az ad app update \
        --id $appid2 \
        --sign-in-audience AzureADMultipleOrgs \
        --web-redirect-uris https://www.microsoft.com     
    
  5. La entidad de servicio debe tener permisos User.Read en el directorio. Use az ad app permission add y az ad app permission grantpara agregar los permisos de Microsoft Graph de User.Read a la entidad de servicio.

    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
    

Registro de spn-2-peer-vnet en subscription-1 y asignación de permisos a vnet-1

Una cuenta de usuario con permisos de administrador en el inquilino de Microsoft Entra ID debe completar el proceso de agregar spn-2-vnet-peer a subscription-1. Una vez completado, spn-2-vnet-peer se pueden asignar permisos a vnet-1.

Registro de la aplicación spn-2-peer-vnet en subscription-1

Un administrador del inquilino de subscription-1 Microsoft Entra ID debe aprobar la entidad de servicio spn-2-peer-vnet para que se pueda agregar a la red virtual vnet-1. Use el comando siguiente para iniciar sesión en subscription-2 para buscar el appID de spn-2-peer-vnet.

  1. Use az login para iniciar sesión en subscription-2.

    az login
    
  2. Use az ad sp list para obtener el appId de spn-2-peer-vnet. Anote el appID en la salida. Este appID se usa en la dirección URL de autenticación en los pasos posteriores.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  3. Use el appid para spn-2-peer-vnet y el identificador de inquilino de Id. de Entra de Microsoft Entra ID para subscription-1 para compilar la dirección URL de inicio de sesión para la aprobación. La dirección URL se compila a partir del ejemplo siguiente:

    https://login.microsoftonline.com/entra-tenant-id-subscription-1/oauth2/authorize?client_id={$appid2}&response_type=code&redirect_uri=https://www.microsoft.com
    

    La dirección URL es similar al ejemplo siguiente.

    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 la dirección URL en un explorador web e inicie sesión con un administrador en el inquilino de Microsoft Entra ID en subscription-1.

  5. Apruebe la aplicación spn-2-peer-vnet. La página principal del microsoft.com muestra si la autenticación se realizó correctamente.

Asignación de spn-2-peer-vnet a vnet-1

Después de que el administrador apruebe spn-2-peer-vnet, agréguelo a la red virtual vnet-1 como colaborador de red.

  1. Use az login para iniciar sesión en subscription-1.

    az login
    
  2. Use az ad sp list para buscar el appId de spn-2-peer-vnet y colocarlo en una variable para su uso posterior.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. Use az network vnet show para obtener el identificador de recurso de vnet-1 en una variable para usarlo en los pasos posteriores.

    vnetid=$(az network vnet show \
                --resource-group test-rg-1 \
                --name vnet-1 \
                --query id \
                --output tsv)
    
  4. Use az role assignment create el comando siguiente para agregar spn-2-peer-vnet para vnet-1 como Colaborador de red.

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

Registro de spn-1-peer-vnet en subscription-2 y asignación de permisos a vnet-2

Una cuenta de usuario con permisos de administrador en el inquilino de Microsoft Entra ID debe completar el proceso de agregar spn-1-peer-vnet a subscription-2. Una vez completado, spn-1-peer-vnetse pueden asignar permisos a vnet-2.

Registro de la aplicación spn-1-peer-vnet en subscription-2

Un administrador del inquilino de subscription-2 Microsoft Entra ID debe aprobar la entidad de servicio spn-1-peer-vnet para que se pueda agregar a la red virtual vnet-2. Use el comando siguiente para iniciar sesión en subscription-1 para buscar el appID de spn-1-peer-vnet.

  1. Use az login para iniciar sesión en subscription-1.

    az login
    
  2. Use az ad sp list para obtener el appId de spn-1-peer-vnet. Anote el appID en la salida. Este appID se usa en la dirección URL de autenticación en los pasos posteriores.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid1
    
  3. Use el appid para spn-1-peer-vnet y el identificador de inquilino de Id. de Entra de Microsoft Entra ID para subscription-2 para compilar la dirección URL de inicio de sesión para la aprobación. La dirección URL se compila a partir del ejemplo siguiente:

    https://login.microsoftonline.com/entra-tenant-id-subscription-2/oauth2/authorize?client_id={$appid1}&response_type=code&redirect_uri=https://www.microsoft.com
    

    La dirección URL es similar al ejemplo siguiente.

    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 la dirección URL en un explorador web e inicie sesión con un administrador en el inquilino de Microsoft Entra ID en subscription-2.

  5. Apruebe la aplicación spn-1-peer-vnet. La página principal del microsoft.com muestra si la autenticación se realizó correctamente.

Asignación de spn-1-peer-vnet a vnet-2

Una vez que el administrador apruebe spn-1-peer-vnet, agréguelo a la red virtual vnet-2 como colaborador de red.

  1. Use az login para iniciar sesión en subscription-2.

    az login
    
  2. Use az ad sp list para buscar el appId de spn-1-peer-vnet y colocarlo en una variable para su uso posterior.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  3. Use az network vnet show para obtener el identificador de recurso de vnet-2 en una variable para su uso en los pasos 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 agregar spn-1-peer-vnet a vnet-2 como Colaborador de red.

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

Emparejamiento de vnet-1 a vnet-2 y vnet-2 a vnet-1

Para emparejar vnet-1 para vnet-2, use el appId de la entidad de servicio y la contraseña para iniciar sesión en el inquilino de Microsoft Entra ID asociado a subscription-1.

Obtención del appId de spn-1-peer-vnet y spn-2-peer-vnet

Para los fines de este artículo, inicie sesión en cada suscripción y obtenga el appID de cada SPN y el identificador de recurso de cada red virtual. Use estos valores para iniciar sesión en cada suscripción con el SPN en los pasos posteriores. Estos pasos no son necesarios para emparejar las redes virtuales si ambos lados ya tienen el appID de los SPN y el identificador de recurso de las redes virtuales.

  1. Use az login para iniciar sesión en subscription-1 con una cuenta de usuario normal.

    az login
    
  2. Use az network vnet show para obtener el identificador de recurso de vnet-1 en una variable para su uso en los pasos 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 obtener el appId de spn-1-peer-vnet y colocar en una variable para su uso en los pasos posteriores.

    appid1=$(az ad sp list \
                --display-name spn-1-peer-vnet \
                --query [].appId \
                --output tsv)
    
  4. Use az login para iniciar sesión en subscription-2 con una cuenta de usuario normal.

    az login
    
  5. Use az network vnet show para obtener el identificador de recurso de vnet-2 en una variable para su uso en los pasos 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 obtener el appId de spn-2-peer-vnet y colocar en una variable para su uso en los pasos posteriores.

    appid2=$(az ad sp list \
                --display-name spn-2-peer-vnet \
                --query [].appId \
                --output tsv)
    echo $appid2
    
  7. Use az logout para cerrar la sesión de la CLI de Azure con el comando siguiente. No cierre el terminal.

    az logout
    

Emparejar las redes virtuales

  1. Use az login para iniciar sesión en subscription-1 con spn-1-peer-vnet. Necesita el identificador de inquilino del inquilino de Microsoft Entra ID asociado a subscription-1 para completar el comando. La contraseña se muestra en el ejemplo con un marcador de posición variable. Reemplace por la contraseña que anotó durante la creación del recurso. Reemplace el marcador de posición en --tenant por el identificador de inquilino del inquilino de Microsoft Entra ID asociado a subscription-1.

    az login \
        --service-principal \
        --username $appid1 \
        --password $password \
        --tenant aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
    
  2. Use az login para iniciar sesión en subscription-2 con spn-2-peer-vnet. Necesita el identificador de inquilino del inquilino de Microsoft Entra ID asociado a subscription-2 para completar el comando. La contraseña se muestra en el ejemplo con un marcador de posición variable. Reemplace por la contraseña que anotó durante la creación del recurso. Reemplace el marcador de posición en --tenant por el identificador de inquilino del inquilino de Microsoft Entra ID asociado a subscription-2.

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

    az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
    
  4. Use az network vnet peering create para crear el emparejamiento de red virtual entre vnet-1 y 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 comprobar el emparejamiento de red virtual entre vnet-1 y vnet-2.

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

    az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
    
  7. Use az network vnet peering create para crear el emparejamiento de red virtual entre vnet-2 y 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 comprobar el emparejamiento de red virtual entre vnet-2 y vnet-1.

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