Lo que de verdad cuesta Azure Virtual Desktop

Azure Virtual Desktop entrega un escritorio de Windows en un navegador. Eso es de verdad lo que hace, y funciona. La pregunta es qué cuesta mantenerlo funcionando.

El precio de etiqueta no es el precio. La pila de licencias de Microsoft para AVD va más o menos así1:

  • Una licencia de Microsoft 365 que incluye el derecho a Windows Enterprise — E3 o E5, o el equivalente Business Premium
  • Cómputo de Azure bajo el escritorio — una VM facturada por hora, o una instancia reservada facturada por mes
  • Almacenamiento de Azure para el disco del SO y el perfil de usuario
  • Redes de Azure para el tráfico entre el escritorio y todo lo demás
  • Opcionalmente, Microsoft Entra ID P1 o P2 para políticas de acceso condicional

Windows 365 Cloud PC simplifica la facturación en un número plano por usuario y por mes, pero el número no es pequeño. Una configuración de 2 vCPU / 8 GB / 128 GB — que es un escritorio de oficina modesto — es £35,60 por usuario y por mes2. Añade una GPU y salta a £269,40 por el nivel GPU Standard. Multiplica por la plantilla y es una partida de factura de verdad, cada mes, para siempre.

Ese es el producto que este artículo reemplaza.

Navegadorcualquier dispositivosin cliente RDPsin VPNHTTPSCloudflareAccess + IdPautentica al usuariorenderiza RDP en el navegadorgratis ≤ 50 usuariossin puertos expuestossin VPN necesariapolítica zero trusttúnelLXCcloudflaredVLAN propiacortafuegos asolo destinos RDPRDPVM WindowsGPU VF 0 · RDPVM WindowsGPU VF 1 · RDPVM WindowsGPU VF 2 · RDPHost Proxmox · Intel Arc Pro SR-IOVArc Proserie BPF → hostVF 0 → VMVF 1 → VMVF 2 → VMUn navegador, un proveedor de identidad y un túnel — sin VPN, sin puertos expuestos, sin factura de nube por puesto
El camino entero: un navegador, Cloudflare Access para la identidad, un túnel hacia un LXC con cortafuegos, y RDP a VM de Windows con funciones virtuales Intel Arc Pro. Sin VPN, sin puertos expuestos, sin factura de nube por puesto.

Qué aspecto tiene la pila de reemplazo

Tres capas, cada una independiente, ninguna facturada por puesto:

La capa de GPU es el montaje Intel Arc Pro SR-IOV del artículo anterior. Una sola tarjeta Arc Pro se divide en funciones virtuales por hardware mediante SR-IOV de PCIe estándar — sin licencia de vGPU, sin suscripción de NVIDIA. Cada VM de Windows obtiene su propia VF y su propio escritorio acelerado por GPU. La tarjeta fija el número de puestos, no un servidor de licencias.

La capa de acceso es Cloudflare Access con RDP renderizado en el navegador. El usuario abre una URL en cualquier navegador, se autentica contra tu proveedor de identidad, y Cloudflare renderiza la sesión RDP directamente en la pestaña del navegador. Sin cliente RDP instalado. Sin VPN. Sin puertos expuestos a internet. Access se federa con cualquier proveedor OAuth u OIDC — eso incluye proveedores on-prem como Keycloak o Authentik apilados sobre tu Active Directory existente, ya sea un AD de Samba 4 o un controlador de dominio de Windows. El directorio sigue haciendo lo que ya hace: cuentas de usuario, directiva de grupo, VM unidas al dominio. Keycloak o Authentik se federa contra él y añade la capa OAuth/OIDC y de MFA que Cloudflare Access necesita. El plano de identidad se queda en tu propio hardware. No hace falta ninguna suscripción de Entra ID. Cloudflare Access maneja lo que pasa después de eso: controla lo que el usuario autenticado puede alcanzar en tu red — qué aplicaciones, qué protocolos, qué hosts. El escritorio está detrás de un túnel de Cloudflare e inalcanzable desde cualquier sitio salvo a través de la política de Access, y la política decide tanto la identidad como el alcance.

La capa de túnel es un proceso cloudflared corriendo en un contenedor LXC sobre Proxmox, en su propia VLAN — un /30 para IPv4 con su propio prefijo IPv6 dedicado, nada más en el dominio de difusión. El cortafuegos de Proxmox controla lo que el LXC puede alcanzar, y la respuesta es corta: TCP 3389 a las VM de escritorio y nada más. Si el extremo del túnel se ve comprometido, el radio de explosión es un contenedor en una VLAN por lo demás vacía, y lo único con lo que puede hablar es lo que el cortafuegos ya permite. Esa es una superficie mucho más pequeña que un concentrador de VPN que reparte una subred enrutada.

Cloudflare Zero Trust es gratis hasta 50 usuarios3. Pagas a partir del usuario 51. Azure Virtual Desktop cobra desde el puesto uno.

La arquitectura

UsuariodispositivonavegadorHTTPSCloudflareAccessEl IdP OAuth haceidentidad + MFAAccess controlaalcance de redrenderiza RDPtúnelTus instalacionesLXCcloudflaredVLAN propia/30 IPv4CortafuegosProxmoxsolo TCP 3389RDPWindowsVMfunciones virtualesde GPUArc Pro SR-IOV
El camino de la sesión: el usuario se autentica en el borde de Cloudflare, el túnel aterriza en un LXC con cortafuegos en su propia VLAN, y el cortafuegos permite solo RDP a las VM de escritorio.

El camino que toma una sesión de escritorio:

  1. El usuario abre https://vdi.example.com en cualquier navegador, en cualquier dispositivo
  2. Cloudflare Access intercepta la petición y redirige a tu proveedor de identidad — Keycloak o Authentik federado contra tu Active Directory
  3. El proveedor OAuth valida la identidad del usuario contra AD y maneja el MFA
  4. Access evalúa la política — el proveedor confirmó quién es, Access decide qué puede alcanzar en tu red
  5. Cloudflare establece una sesión RDP a través del túnel hacia la VM objetivo
  6. La sesión RDP se renderiza en el navegador — sin cliente, sin plugin, sin descarga
  7. El túnel termina en un contenedor LXC sobre el host de Proxmox, en una VLAN bien cerrada
  8. El LXC reenvía RDP a la VM de Windows, que tiene una función virtual de GPU de la tarjeta Arc Pro

En ningún momento la VM de Windows tiene una IP pública. En ningún momento el puerto 3389 está abierto a internet. Lo único escuchando en la internet pública es Cloudflare, y lo único que pasa de Cloudflare es un usuario que superó la política de Access.

El extremo del túnel: un LXC en su propia VLAN

El proceso cloudflared necesita correr en algún sitio, y dónde lo pones es una decisión de seguridad.

Correrlo directamente en el host de Proxmox es la opción más simple y la peor. Un extremo de túnel que comparte el espacio de nombres de red del host puede alcanzar todo lo que el host puede alcanzar, que en un hipervisor es todo. Un túnel comprometido se convierte en un pivote hacia el plano de gestión.

Correrlo en una VM completa es limpio pero pesado. Un relé de túnel es un único binario de Go que usa casi nada de CPU y unos pocos cientos de megabytes de RAM. Darle un kernel completo y un disco virtual es pasarse.

Un contenedor LXC es la forma correcta. Obtiene su propio espacio de nombres de red, su propia VLAN — un /30 de IPv4 y un prefijo IPv6 dedicado, sin nada más compartiendo el dominio de difusión — y sus propias reglas de cortafuegos en el cortafuegos de Proxmox. Comparte el kernel del host pero no su pila de red. El cortafuegos permite TCP 3389 a las VM de escritorio, DNS para resolverlas, y HTTPS de salida al borde de Cloudflare. Como tal, incluso un extremo de túnel comprometido solo puede hablar con las cosas con las que ya se suponía que debía hablar — y la VLAN en la que se sienta no tiene otros residentes que alcanzar.

La configuración del LXC, las reglas de cortafuegos de Proxmox para la VLAN, y la configuración del túnel cloudflared están todas en el siguiente artículo.

Cómo encaja todo Cloudflare Access

Hay dos mitades en esto. El proveedor OAuth — Keycloak o Authentik, federado contra tu Active Directory (Samba 4 o Windows) — maneja la validación de identidad y el MFA. Prueba que el usuario es quien dice ser, usando el mismo directorio al que las VM están unidas por dominio. Cloudflare Access maneja todo lo que viene después: qué se le permite alcanzar al usuario autenticado, a través de qué protocolo, y cómo se renderiza la sesión.

Cloudflare Access renderiza la sesión RDP directamente en el navegador. Esto no es una descarga ni un plugin — el borde de Cloudflare corre un cliente RDP headless y transmite el resultado como un canvas en la pestaña del navegador. El usuario ve un escritorio de Windows. El navegador ve HTTPS a Cloudflare. La VM de Windows ve una conexión RDP desde el túnel cloudflared.

La aplicación de Access es una app autohospedada apuntada al ingreso RDP del túnel. La política de Access es donde las dos mitades se encuentran. El proveedor OAuth ya ha confirmado la identidad y pasado el reto de MFA. Access toma ese token y decide qué hacer con él — qué aplicación puede alcanzar el usuario, si la postura de su dispositivo pasa, si su ubicación está permitida. El proveedor dice quién. Access dice qué.

La creación del túnel, las reglas de ingreso, la configuración del LXC, las reglas de cortafuegos de Proxmox y la propia política de Access están todas en el siguiente artículo — este expone qué es la pila y por qué existe. El siguiente la construye.

Lo que ve el usuario

Cloudflare Access incluye un App Launcher — un portal de recursos que lista cada aplicación que el usuario autenticado tiene permitido alcanzar. Después de que el usuario inicie sesión a través del proveedor OAuth, el portal le muestra sus escritorios disponibles, aplicaciones web internas, y cualquier otro recurso tunelizado, todo en un sitio. Una URL, un inicio de sesión, y un mosaico por cada cosa a la que tiene acceso. Es la página de aterrizaje de la pila entera, no solo RDP.

El usuario hace clic en un mosaico de escritorio, y obtiene un escritorio de Windows en una pestaña del navegador. Sin cliente, sin plugin, sin descarga. Funciona en cualquier dispositivo que ya tenga — un portátil de empresa, una máquina personal, un Chromebook, una tableta. Ese es el objeto. El sistema está construido para empresas que dejan a la gente usar su propio equipo.

El portapapeles, el audio y los múltiples monitores no están soportados a través de la sesión renderizada en el navegador. Eso es por diseño, no por accidente. Cada uno de esos canales es un camino de exfiltración de datos. Un portapapeles que cruza la frontera saca ficheros. La captura de audio saca conversaciones. Los múltiples monitores con un escritorio local al lado del remoto hacen trivial el arrastrar y soltar. Cortar esos canales significa que un usuario puede trabajar dentro del escritorio pero no puede sacar el trabajo de él por un canal lateral. La política de Access controla quién entra. El renderizado en el navegador controla qué sale.

Si la empresa necesita portapapeles o audio para un flujo de trabajo concreto, Cloudflare Access también soporta un cliente RDP nativo a través del túnel — el mismo túnel, la misma política, la misma comprobación de identidad. El camino nativo da el conjunto completo de funciones RDP a los usuarios que las necesitan y mantiene el camino del navegador bien cerrado para todos los demás. Dos métodos de acceso, un motor de políticas, un túnel.

La comparación de costes

Un ejemplo concreto. Un servidor, 42 escritorios acelerados por GPU:

  • Una CPU de 64 núcleos con hyperthreading te da 128 hilos. Cada VM obtiene 8 vCPU — una asignación de escritorio en condiciones, no un cliente ligero. 42 × 8 = 336 vCPU, que sobre el papel está muy por encima de 128 hilos. Pero esto es VDI. Los escritorios de oficina están inactivos la mayor parte del tiempo. Un usuario leyendo un documento o escribiendo un correo no está cargando 8 núcleos. La sobresuscripción no es un riesgo aquí, es el diseño. Proxmox te deja asignar más vCPU que hilos físicos porque el planificador sabe que la mayoría están durmiendo. La CPU se dimensiona para el pico, y el pico es un puñado de usuarios compilando o renderizando a la vez, no los 42. Esto no es un atajo — los hiperescaladores de la nube sobresuscriben del mismo modo. Cada VM de Azure que alquilas comparte núcleos físicos con otros inquilinos del mismo host. El modelo de rendimiento es idéntico. La diferencia es quién posee el host.
  • 12 GB de RAM por VM es un escritorio de oficina sólido. 42 × 12 GB = 504 GB, más 4 GB para el propio Proxmox = 508 GB sobre el papel. En la práctica KSM colapsa las páginas idénticas entre esas 42 imágenes de Windows, así que la RAM física necesaria es sustancialmente menor — pero presupuesta 512 GB de DIMM y deja que KSM te dé el margen.
  • Tres tarjetas Intel Arc Pro B60 duales en una placa como la Supermicro H13SSL-NT. Cada tarjeta física presenta dos GPU al SO, así que tres tarjetas te dan 6 GPU. Cada GPU soporta 7 funciones virtuales SR-IOV4. Eso son 42 escritorios acelerados por GPU desde tres ranuras PCIe. La B60 se lista alrededor de $599–799 por tarjeta. La B70 es la opción mayor a $949 de lanzamiento por 32 GB y 4 funciones virtuales por GPU5 — menos puestos pero más VRAM por puesto.

Windows 365 Cloud PC para 42 usuarios2:

Incluso sin una GPU, los números no son pequeños. El nivel Basic — 2 vCPU, 4 GB, 128 GB — es £26,90/usuario/mes. El nivel Standard — 2 vCPU, 8 GB, 128 GB, que es un escritorio de oficina modesto — es £35,60/usuario/mes. Para 42 usuarios en Standard, eso son £1 495,20/mes, £17 942,40/año, antes de cualquiera de los extras de abajo.

Con una GPU se pone peor. El nivel GPU Standard es £269,40/usuario/mes. Para 42 usuarios, eso son £11 314,80/mes, £135 777,60/año.

Ambos niveles luego añaden:

  • Licencias de Microsoft 365 si no las tienes ya
  • Redes de Azure — la entrada y la salida se facturan por separado, y un escritorio que transmite a un navegador no es ligero en salida
  • Azure Backup o una solución de copia de seguridad de terceros — las instantáneas de VM y el almacenamiento de perfiles no se respaldan gratis
  • Direcciones IPv4 públicas — Azure cobra por cada IP pública adjuntada a un recurso, y el precio solo ha subido
  • El precio subyacente de Azure está en USD, así que los costes en GBP se mueven con el tipo de cambio — una libra débil hace cada partida más cara y no tienes control sobre ninguno de los dos lados de eso
  • La factura nunca para. El año cinco cuesta lo mismo que el año uno.

Esta pila para 42 usuarios — el coste de construcción:

  • Placa base Supermicro H13SSL-NT: ~£700
  • CPU AMD EPYC de 64 núcleos: ~£1 500
  • 512 GB DDR5 ECC RDIMM (8 × 64 GB): ~£5 200
  • Tres tarjetas B60 duales: ~£1 800
  • Chasis, PSU, SSD de arranque: ~£800
  • Hardware total: unas £10 000

Amortizado a lo largo de una vida de cinco años, eso son £2 000/año en coste de capital. Añade:

  • Cloudflare Zero Trust: gratis hasta 50 usuarios
  • Derechos de VDI de Windows 11 Enterprise — Software Assurance sobre Pro actualiza a Enterprise, que incluye acceso VDI para hasta cuatro VM por usuario, o licencia a través de Microsoft 365 E3/E56
  • Electricidad — y esto vale la pena ponerle un número

El presupuesto de potencia en tirón de pico: un EPYC de 64 núcleos a 360 W de TDP, tres tarjetas B60 duales a 400 W cada una (1 200 W), 512 GB de RAM a unos 80 W, más almacenamiento, ventiladores y pérdidas de PSU a unos 150 W. Eso son aproximadamente 1 800 W en la toma bajo plena carga. Los escritorios VDI no están bajo plena carga — el uso de oficina es mayormente CPU inactiva y GPU ligera, así que una media realista está más cerca de 1 000 a 1 200 W. Digamos 1 100 W.

A 35p por kWh, 1,1 kW corriendo 24/7 es:

  • 1,1 × 24 × 365 = 9 636 kWh/año
  • 9 636 × £0,35 = £3 373/año en electricidad

Así que el coste anual total de esta pila es de unas £5 400/año — £2 000 en hardware amortizado y £3 400 en electricidad, antes de las licencias de Windows y la internet. Pon eso al lado de la factura de Azure: £5 400 contra £135 778 por el nivel GPU, o £17 942 por escritorios básicos sin GPU. Incluso en el nivel de Azure más barato, esta pila cuesta menos de un tercio. En el nivel GPU, es el 4 % de la factura de Azure.

Por qué el VDI encaja en Proxmox

El VDI es una de las cargas de trabajo en las que Proxmox es discretamente muy bueno, por dos razones que nada tienen que ver con el hipervisor en sí.

KSM. Proxmox habilita KSMd — el demonio de fusión de páginas iguales del kernel — de serie. Veinte VM de Windows construidas a partir de la misma imagen comparten enormes cantidades de páginas de memoria idénticas: el SO, las bibliotecas base, las partes sin cambiar del perfil de usuario. KSMd encuentra esos duplicados y los colapsa en una sola página física, copia-en-escritura. El resultado es que veinte escritorios caben en la memoria que si no necesitarías para ocho o diez. En un host de VDI donde cada VM corre la misma imagen, KSM no es una optimización marginal. Es lo que hace la densidad asequible.

bcache. Si tu almacenamiento es Ceph con HDD y bcache Optane, el VDI es la carga de trabajo de mejor caso para él. Las tormentas de arranque y las tormentas de inicio de sesión son cargadas de lectura y repetitivas — exactamente el patrón que un cache absorbe. Una vez que el conjunto de trabajo está caliente, los escritorios leen de la Optane a latencia de NVMe y los platos apenas se mueven. Las escrituras son cambios de perfil de usuario y ficheros temporales, que son lo bastante pequeños y secuenciales como para que el writeback de bcache los maneje sin llegar nunca a hacer cuello de botella en el HDD.

Perfiles — dos opciones, ambas en Ceph. Los perfiles de usuario son la otra mitad del almacenamiento de VDI, y hay dos maneras limpias de manejarlos sin salir del clúster.

Los contenedores de perfil FSLogix son la manera estándar de itinerar un perfil de escritorio de Windows, y funcionan sobre almacenamiento de objetos compatible con S3. El Ceph de Proxmox expone una pasarela S3 a través del RADOS Gateway, así que el almacén de perfiles vive en el mismo clúster que los discos de las VM. Sin servidor de ficheros aparte, sin factura de Azure Files, sin dependencia externa.

La otra opción es saltarse FSLogix del todo y usar la redirección de carpetas de Windows a recursos compartidos SMB servidos por Samba en clúster sobre CephFS. Los escritorios redirigen Documentos, Escritorio, AppData y el resto a un recurso Samba respaldado por CephFS, y el clúster de Samba maneja la conmutación por error. Sin contenedor de perfil en absoluto — los ficheros viven en el sistema de ficheros como ficheros llanos, y CephFS maneja la replicación. Esto es más simple de gestionar, más simple de respaldar, y esquiva las licencias de FSLogix del todo — útil si el coste de licencia es un problema o simplemente quieres menos piezas móviles. De cualquier modo, los perfiles se sientan en tu propio almacenamiento, respaldados por el mismo pool de Ceph, y el coste es el disco que ya compraste.

Entre KSM recuperando memoria, bcache recuperando latencia de almacenamiento y los perfiles aterrizando en Ceph — ya sea a través de FSLogix en S3 o de redirección de carpetas en CephFS — un solo host de Proxmox con HDD y una cantidad modesta de RAM sirve más escritorios de lo que la hoja de especificaciones sugiere. Azure cobra por cada gigabyte de los tres. Aquí, la infraestructura hace el trabajo gratis.

Copia de seguridad, resiliencia y cumplimiento

Mantener todo dentro del VDI no es solo una decisión de coste. Es una decisión de cumplimiento y resiliencia.

Cuando el escritorio vive en el servidor, los datos viven en el servidor. Nada aterriza en el dispositivo del usuario. Un portátil robado es una pantalla perdida, no un conjunto de datos perdido. No hay disco local que cifrar, no hay copia local que exfiltrar, no hay endpoint que imaginar forensemente tras una brecha. Los datos nunca salieron de la infraestructura que controlas.

Eso hace la copia de seguridad sencilla. Los discos de las VM y los almacenes de perfiles están en Ceph, y las instantáneas de Ceph son atómicas e instantáneas. Una política de instantáneas cubre cada escritorio y cada perfil. Restaurar un escritorio al estado de ayer es una reversión de instantánea, no una reconstrucción. Restaurar un perfil es la misma operación en un pool distinto. El objetivo de la copia es el clúster, no veinte endpoints dispersos.

También simplifica el cumplimiento. La residencia de datos es fácil de probar cuando los datos están en hardware que posees, en un rack al que puedes señalar, en una jurisdicción que elegiste. Los registros de auditoría se sientan en tus propios logs. El acceso lo controlan políticas de Cloudflare que escribiste, autenticado por un IdP que corres, y registrado por sistemas que controlas. No hay un proveedor de nube de terceros entre tú y la evidencia que un auditor pide.

La resiliencia sigue la misma línea. Una VM de escritorio muerta es una VM nueva de la imagen dorada con el perfil readjuntado. El usuario inicia sesión de nuevo y el escritorio está de vuelta. No hay endpoint que reconstruir, no hay SO que reimaginar, no hay hardware que enviar. La unidad de recuperación es la VM, y levantar una lleva minutos.

A qué renuncias

Esto no es gratis en todos los sentidos. Las cosas que Azure Virtual Desktop maneja y que esta pila no:

  • Microsoft gestiona el parcheado y las actualizaciones. Aquí, lo haces tú.
  • Intune y Endpoint Manager se integran de forma nativa con AVD. Aquí, estás gestionando las VM de Windows tú mismo o a través de cualquier herramienta que elijas.
  • La red de Azure es problema de Azure. Aquí, tu conexión a internet es el camino al escritorio. Si se cae, los escritorios son inalcanzables hasta que vuelva.
  • Escalar está a una tarjeta de crédito de distancia en Azure. Aquí, escalar significa comprar otra tarjeta u otro host.
  • AVD da al usuario un conjunto completo de funciones RDP por defecto. Aquí, el camino renderizado en el navegador quita portapapeles, audio y múltiples monitores a propósito. Los usuarios que necesitan esas funciones obtienen un cliente RDP nativo a través del mismo túnel y la misma política — pero el valor por defecto es el navegador bien cerrado, y ese es el valor por defecto correcto para una plantilla BYOD.

Nada de eso es trivial. Que importe depende de lo que tengas: si ya corres Proxmox, ya gestionas Windows, y ya tienes a alguien que puede cuidar de un hipervisor, entonces todas esas son cosas que ya estás haciendo. Si no, entonces Azure te está vendiendo el personal que no tienes, y eso vale de verdad algo.

La pregunta es si vale £18 000 al año por 42 escritorios básicos — o £136 000 por los de GPU — cada año, más redes, copia de seguridad, IPv4 y licencias encima, con el precio fijado por otro, el hardware perteneciente a otro, y la factura denominada en una moneda que no controlas. O si gastas £5 400 al año en hardware y electricidad y te quedas el resto.

Eso es lo que este artículo expone. El siguiente lo construye — el túnel cloudflared, el LXC, las reglas de cortafuegos de Proxmox, la política de Cloudflare Access, y el escritorio funcionando en una pestaña del navegador.

Referencias


  1. Azure Virtual Desktop pricing — cómputo, almacenamiento y redes facturados por separado sobre el derecho a Microsoft 365. ↩︎

  2. Windows 365 plans and pricing — plano por usuario y por mes, configuraciones con GPU en el nivel Enterprise. ↩︎ ↩︎

  3. Cloudflare Zero Trust pricing — gratis hasta 50 usuarios, pago por uso a partir del usuario 51. ↩︎

  4. Intel Arc Pro B60 specifications — 24 GB GDDR6, 20 núcleos Xe2, PCIe 5.0 x8, SR-IOV con hasta 7 funciones virtuales. ↩︎

  5. Intel Arc Pro B70 specifications — 32 GB GDDR6, 32 núcleos Xe2, PCIe 5.0 x16, SR-IOV con hasta 4 funciones virtuales. ↩︎

  6. Windows 11 Licensing for Virtual Desktops — Software Assurance sobre un SO cualificado (p. ej. Pro) actualiza a Enterprise, otorgando derechos de VDI para hasta cuatro VM por usuario en tu propio servidor local. ↩︎