Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, se describe cómo configurar y usar una puerta de enlace para el acceso seguro a escritorio remoto a máquinas virtuales de laboratorio en Azure DevTest Labs. El uso de una puerta de enlace mejora la seguridad porque no expone los puertos del Protocolo de escritorio remoto (RDP) de las máquinas virtuales a Internet. Esta solución de puerta de enlace de Escritorio remoto también admite la autenticación de token.
DevTest Labs proporciona una ubicación central para que los usuarios del laboratorio puedan ver y conectarse a sus máquinas virtuales. Al seleccionar Conectar>a través de RDP en la página Información general de una máquina virtual de laboratorio, se crea un archivo RDP específico de la máquina y los usuarios pueden abrir el archivo para conectarse a la máquina virtual.
Con una puerta de enlace de Escritorio remoto, los usuarios del laboratorio se conectan a sus máquinas virtuales mediante una máquina de puerta de enlace. Los usuarios se autentican directamente en la máquina de puerta de enlace y pueden usar credenciales proporcionadas por la empresa en máquinas unidas a un dominio. La autenticación de token proporciona una capa adicional de seguridad.
Otra manera de acceder de forma segura a las máquinas virtuales de laboratorio sin exponer puertos o direcciones IP es mediante un explorador con Azure Bastion. Para más información, consulte Habilitación de la conexión de explorador a máquinas virtuales de DevTest Labs con Azure Bastion.
Arquitectura
En el diagrama siguiente se muestra cómo una puerta de enlace de Escritorio remoto aplica la autenticación de token y se conecta a las máquinas virtuales de DevTest Labs.
Al seleccionar Conectar>a través de RDP desde una máquina virtual de laboratorio, se invoca el comando REST getRdpFileContents :
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualmachines/{name}/getRdpFileContentsCuando el laboratorio está configurado con una puerta de enlace, la
getRdpFileContentsacción invocahttps://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}para solicitar un token de autenticación.{gateway-hostname}o{lb-uri}para un equilibrador de carga, es el nombre de host de puerta de enlace especificado en la página Configuración del laboratorio.{lab-machine-name}es el nombre de la máquina virtual a la que se va a conectar.{port-number}es el puerto que se utilizará para la conexión. Normalmente, este puerto es 3389, pero si la máquina virtual del laboratorio usa una dirección IP compartida, el número de puerto es diferente.
La puerta de enlace de Escritorio remoto usa
https://{function-app-uri}/api/host/{lab-machine-name}/port/{port-number}para diferir la llamada a una aplicación de funciones de Azure Functions.Nota:
El encabezado de solicitud incluye automáticamente la clave de función, obtenida del almacén de claves del laboratorio. El nombre del secreto de clave de función es el valor de Secreto de token de puerta de enlace que se especifica en la página Configuración del laboratorio.
La función de Azure genera y devuelve un token para la autenticación basada en certificados en la máquina de puerta de enlace.
La acción
getRdpFileContentsdevuelve el archivo RDP completo, incluyendo el token de autenticación.
Cuando un programa de conexión RDP abre el archivo RDP, la puerta de enlace de Escritorio remoto autentica el token y la conexión se reenvía a la máquina virtual de laboratorio.
Nota:
No todos los programas de conexión de RDP admiten la autenticación de token.
Importante
La función de Azure establece una fecha de expiración para el token de autenticación. Un usuario debe conectarse a la máquina virtual antes de que expire el token.
Requisitos de configuración
Hay algunos requisitos de configuración para permitir que las máquinas de puerta de enlace, Azure Functions y las redes funcionen con el acceso RDP y la autenticación de tokens de DevTest Labs:
Requisitos de la máquina de puerta de enlace
La máquina de puerta de enlace debe tener la siguiente configuración:
Un certificado TLS/SSL para controlar el tráfico HTTPS. El certificado debe coincidir con el nombre de dominio completo (FQDN) de la máquina de puerta de enlace si solo hay una, o con el equilibrador de carga de la granja de servidores de puerta de enlace. Los certificados TLS/SSL del tipo comodín no son funcionales.
Un certificado de firma. Puede crear un certificado de firma mediante el script Create-SigningCertificate.ps1 de PowerShell.
Un módulo de autenticación acoplable que admita la autenticación de token. Un ejemplo es RDGatewayFedAuth.msi, que se incluye con las imágenes de System Center Virtual Machine Manager (VMM).
La capacidad de enviar las solicitudes a
https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number}.
Puede usar el módulo de Solicitud de Enrutamiento de Aplicaciones para Internet Information Services (IIS) para redirigir https://{gateway-hostname}/api/host/{lab-machine-name}/port/{port-number} las solicitudes a la aplicación de funciones.
Requisitos de Azure Functions
Una aplicación de funciones de Azure Functions controla las solicitudes con el formato https://{function-app-uri}/app/host/{lab-machine-name}/port/{port-number} y crea y devuelve el token de autenticación basado en el certificado de firma de la máquina de puerta de enlace. {function-app-uri} es el URI que se usa para acceder a la función.
El encabezado de solicitud debe pasar la clave de función, que obtiene del almacén de claves del laboratorio.
Para obtener una función de ejemplo, vea CreateToken.cs.
Requisitos de red
El DNS para el FQDN asociado con el certificado TLS/SSL instalado en las máquinas de puerta de enlace debe dirigir el tráfico a la máquina de puerta de enlace o al equilibrador de carga de la granja de servidores de máquina de puerta de enlace.
Si en la máquina del laboratorio se usan direcciones IP privadas, debe haber una ruta de acceso de red desde la máquina de puerta de enlace a la máquina del laboratorio. Las dos máquinas deben compartir la misma red virtual o usar redes virtuales emparejadas.
Crear una puerta de enlace de Escritorio remoto
El repositorio de GitHub de Azure DevTest Labs cuenta con plantillas de Azure Resource Manager (ARM) que ayudan a configurar la autenticación de token de DevTest Labs y los recursos de puerta de enlace de Escritorio remoto. Hay plantillas para la creación de máquinas de puerta de enlace, la configuración del laboratorio y una aplicación de funciones.
Nota:
El uso de las plantillas de ejemplo indica su aceptación de los términos de licencia de la puerta de enlace de Escritorio Remoto.
Siga estos pasos para configurar un ejemplo de granja de servidores de puerta de enlace de Escritorio remoto.
Cree un certificado de firma.
Ejecute Create-SigningCertificate.ps1. Registre la huella digital, la contraseña y la codificación Base64 del nuevo certificado que se usará más adelante.
Obtenga un certificado TLS/SSL. El FQDN asociado al certificado TLS/SSL debe ser para un dominio que controle.
Registre la contraseña, la huella digital y la codificación Base64 para que el certificado TLS/SSL lo use más adelante.
Para obtener la huella digital, use los comandos siguientes de PowerShell.
$cer = New-Object System.Security.Cryptography.X509Certificates.X509Certificate; $cer.Import('path-to-certificate'); $hash = $cer.GetCertHashString()Para obtener la codificación Base64, use el comando de PowerShell siguiente:
[System.Convert]::ToBase64String([System.IO.File]::ReadAllBytes('path-to-certificate'))
Descargue todos los archivos de https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gateway. Copie todos los archivos y RDGatewayFedAuth.msi en un contenedor de blobs en una cuenta de almacenamiento.
Abra azuredeploy.json desde https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/GatewaySample/arm/gatewayy rellene los parámetros siguientes:
Parámetro ¿Obligatorio? Descripción adminUsernameObligatorio Nombre de usuario administrador para las máquinas de puerta de enlace. adminPasswordObligatorio Contraseña de la cuenta de administrador para las máquinas de puerta de enlace. instanceCountNúmero de máquinas de puerta de enlace que se van a crear. alwaysOnIndica si se debe mantener activada la aplicación de Azure Functions creada. Mantener la aplicación en evita retrasos cuando los usuarios intentan conectarse por primera vez a sus máquinas virtuales de laboratorio, pero tiene implicaciones de costo. tokenLifetimeLa longitud de tiempo, en formato HH:MM:SS, durante la cual el token creado es válido. sslCertificateObligatorio La codificación Base64 del certificado TLS/SSL para la máquina de puerta de enlace. sslCertificatePasswordObligatorio La contraseña del certificado TLS/SSL para la máquina de puerta de enlace. sslCertificateThumbprintObligatorio La huella digital del certificado para la identificación en el almacén de certificados local del certificado de firma. signCertificateObligatorio La codificación Base64 del certificado de firma para la máquina de puerta de enlace. signCertificatePasswordObligatorio La contraseña del certificado de firma para la máquina de puerta de enlace. signCertificateThumbprintObligatorio La huella digital del certificado para la identificación en el almacén de certificados local del certificado de firma. _artifactsLocationObligatorio Ubicación del URI para buscar artefactos que requiere esta plantilla. Este valor debe ser un identificador URI completo, no una ruta de acceso relativa. Los artefactos incluyen otras plantillas, scripts de PowerShell y el módulo autenticación conectable de puerta de enlace de Escritorio remoto, que se espera que se llame debaRDGatewayFedAuth.msi y que admite la autenticación de token. _artifactsLocationSasTokenObligatorio Token de firma de acceso compartido (SAS) para acceder a los artefactos, si _artifactsLocationes una cuenta de almacenamiento de Azure.Ejecute el siguiente comando de la CLI de Azure para implementar azuredeploy.json:
az deployment group create --resource-group {resource-group} --template-file azuredeploy.json --parameters @azuredeploy.parameters.json -–parameters _artifactsLocation="{storage-account-endpoint}/{container-name}" -–parameters _artifactsLocationSasToken = "?{sas-token}"Obtenga el
{storage-account-endpoint}mediante la ejecución deaz storage account show --name {storage-account-name} --query primaryEndpoints.blob.Obtenga el
{sas-token}mediante la ejecución deaz storage container generate-sas --name {container-name} --account-name {storage-account-name} --https-only –permissions drlw –expiry {utc-expiration-date}.{storage-account-name}es el nombre de la cuenta de almacenamiento que contiene los archivos que se han cargado.{container-name}es el contenedor de{storage-account-name}que incluye los archivos cargados.{utc-expiration-date}es la fecha, en formato UTC, en la que caduca el token de SAS. Ya no se podrá usar para acceder a la cuenta de almacenamiento.
Registre los valores de
gatewayFQDNygatewayIPdesde la salida de la implementación de la plantilla. Guarde también el valor de la clave para la función recién creada, que puede encontrar en la pestaña Configuración de la aplicación de funciones.Configure el DNS para que el FQDN del certificado TLS/SSL dirija a la dirección IP
gatewayIP.
Después de crear la granja de puertas de enlace de Escritorio remoto y actualizar el DNS, configure DevTest Labs para que use la puerta de enlace.
Configuración del laboratorio para usar la autenticación de token
Antes de actualizar la configuración del laboratorio, guarde la clave de la función de token de autenticación en el almacén de claves del laboratorio. Puede obtener el valor de clave de función en la página Claves de función de la función en Azure Portal. Para buscar el identificador del almacén de claves del laboratorio, ejecute el siguiente comando de la CLI de Azure:
az resource show --name {lab-name} --resource-type 'Microsoft.DevTestLab/labs' --resource-group {lab-resource-group-name} --query properties.vaultName
Para obtener información sobre cómo guardar un secreto en un almacén de claves, consulte Incorporación de un secreto a Key Vault. Registre el nombre del secreto para usarlo más adelante. Este valor no es la propia clave de función, sino el nombre del secreto del almacén de claves que contiene la clave de función.
Para configurar el valor de Nombre de host de puerta de enlace y Secreto de token de puerta de enlace de un laboratorio para usar la autenticación de token con la máquina o las máquinas de puerta de enlace, complete estos pasos:
En la página Información general del laboratorio, en el panel izquierdo, seleccione Configuración y directivas.
En la página Configuración y directivas , en la sección Configuración del panel izquierdo, seleccione Configuración de laboratorio.
En la sección Conexión a Escritorio remoto :
En el cuadro Nombre de host de puerta de enlace, escriba el FQDN o la dirección IP de la granja o máquina de puerta de enlace de los servicios de Escritorio remoto. Este valor debe coincidir con el FQDN del certificado TLS/SSL que se usa en las máquinas de puerta de enlace.
En el cuadro Secreto del token de puerta de enlace, escriba el nombre del secreto que registró anteriormente. Este valor no es la propia clave de función, sino el nombre del secreto del almacén de claves que contiene la clave de función.
Seleccione Guardar.
Nota:
Al seleccionar Guardar, se indica que acepta los términos de licencia de puerta de enlace de Escritorio remoto.
Después de configurar la puerta de enlace y el laboratorio, el archivo de conexión RDP creado cuando el usuario del laboratorio selecciona Conectar incluye la información necesaria para conectarse a la puerta de enlace y usar la autenticación de token.
Automatizar la configuración del laboratorio
PowerShell: Set-DevTestLabGateway.ps1 es un script de PowerShell de ejemplo para configurar automáticamente los ajustes del nombre de host de puerta de enlace y el secreto del token de puerta de enlace.
ARM: use las plantillas de ARM de ejemplo de puerta de enlace en el repositorio de GitHub de Azure DevTest Labs para crear o actualizar laboratorios con la configuración del nombre de host de puerta de enlace y del secreto de token de puerta de enlace.
Configuración de un grupo de seguridad de red
Para proteger aún más el laboratorio, agregue un grupo de seguridad de red (NSG) a la red virtual que usan las máquinas virtuales del laboratorio, como se describe en Creación, cambio o eliminación de un grupo de seguridad de red. Por ejemplo, un grupo de seguridad de red podría permitir que solo el tráfico que pasa primero a través de la puerta de enlace llegue a las máquinas virtuales del laboratorio. El origen de la regla es la dirección IP de la máquina de puerta de enlace o del equilibrador de carga de la granja de puertas de enlace.


