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.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- 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
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
Cree un grupo de recursos con az group create.
az group create \ --name test-rg-1 \ --location eastus2
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.
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)
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" }
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)
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
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
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
Cree un grupo de recursos con az group create.
az group create \ --name test-rg-2 \ --location westus2
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.
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)
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" }
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)
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
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.
Use az login para iniciar sesión en subscription-2.
az login
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
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
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.
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.
Use az login para iniciar sesión en subscription-1.
az login
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)
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)
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.
Use az login para iniciar sesión en subscription-1.
az login
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
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
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.
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.
Use az login para iniciar sesión en subscription-2.
az login
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)
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)
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.
Use az login para iniciar sesión en subscription-1 con una cuenta de usuario normal.
az login
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)
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)
Use az login para iniciar sesión en subscription-2 con una cuenta de usuario normal.
az login
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)
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
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
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
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
Use az account set para cambiar el contexto a subscription-1.
az account set --subscription "subscription-1-subscription-id-NOT-ENTRA-TENANT-ID"
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
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
Use az account set para cambiar el contexto a subscription-2.
az account set --subscription "subscription-2-subscription-id-NOT-ENTRA-TENANT-ID"
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
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