Skip to content

2026/01

Azure Backup para Confidential VMs: protección de datos en entornos de computación confidencial

Resumen

Desde enero de 2026, Azure Backup soporta en preview pública la protección de Confidential Virtual Machines. Es un paso importante para organizaciones que usan computación confidencial y necesitan garantías de backup sin comprometer el aislamiento de memoria que ofrecen las Confidential VMs. Si tu organización trabaja con datos sensibles bajo regulaciones estrictas y ya usa Confidential VMs, este es el momento de evaluar la integración.

¿Qué son las Confidential VMs?

Las Confidential VMs de Azure usan hardware TEE (Trusted Execution Environment) —basado en AMD SEV-SNP— para cifrar la memoria de la VM durante la ejecución. Ni los administradores del host ni Microsoft pueden acceder a esa memoria.

Esto tiene una implicación directa en backup: los mecanismos tradicionales de snapshot no pueden leer el contenido cifrado de los discos sin el contexto de la VM.

Cómo funciona el backup de Confidential VMs

Azure Backup usa un mecanismo específico que respeta el modelo de confianza de las Confidential VMs:

flowchart TD
    A[Confidential VM\nAMD SEV-SNP] --> B[Disco OS cifrado\nCMK - Customer Managed Key]
    B --> C[Azure Backup Service]
    C --> D{Tipo de snapshot}
    D --> E[Crash-consistent snapshot\nCifrado en reposo con CMK]
    E --> F[Recovery Services Vault\nCMK heredado]
    F --> G[Restore en VM confidencial\ndel mismo tamaño/familia]

Los puntos clave del comportamiento:

  • El snapshot se cifra con la Customer Managed Key (CMK) del disco original
  • Los datos nunca se descifran fuera del entorno confidencial
  • El restore requiere una VM compatible (misma familia, AMD SEV-SNP)

Requisitos previos

  • VM de la serie DCasv5 o ECasv5 (AMD SEV-SNP)
  • OS disk cifrado con CMK (no Platform Managed Key)
  • Recovery Services Vault con cross-region restore habilitado si se necesita DR

Configurar backup desde la CLI

# Variables
VAULT="my-backup-vault"
RG="my-rg"
VM_ID="/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.Compute/virtualMachines/<vm>"

# Crear Recovery Services Vault si no existe
az backup vault create \
  --resource-group $RG \
  --name $VAULT \
  --location eastus

# Habilitar backup en la Confidential VM
az backup protection enable-for-vm \
  --resource-group $RG \
  --vault-name $VAULT \
  --vm $VM_ID \
  --policy-name DefaultPolicy

Limitaciones en preview

Limitación Detalle
Tipo de consistencia Solo crash-consistent (no application-consistent)
Restore cross-subscription No disponible en preview
Familias soportadas DCasv5, ECasv5 únicamente
Key rotation durante backup No soportado; rota la CMK fuera de la ventana de backup

Warning

Durante la preview, no se garantiza SLA de RPO/RTO para Confidential VMs. Evalúa si es adecuado para cargas de producción críticas o úsalo en entornos de pre-producción primero.

Buenas prácticas

  • Almacena la CMK en Azure Key Vault con soft delete y purge protection habilitados. Si pierdes la clave, los backups son irrecuperables.
  • Configura alertas de Azure Backup para detectar fallos en la ventana de backup.
  • Documenta los requisitos de VM para el restore: si necesitas recuperar en otra región, debes tener la familia DCasv5/ECasv5 disponible allí.
# Verificar que el disco está cifrado con CMK
az vm show \
  --resource-group $RG \
  --name <vm-name> \
  --query "storageProfile.osDisk.managedDisk.securityProfile"

Referencias

Azure AI Language completo en Microsoft Foundry: migración desde Language Studio

Resumen

Desde enero de 2026, todas las capacidades de Azure AI Language están disponibles en Microsoft Foundry (portal nuevo). Esto incluye la experiencia completa de Language Studio —gestión de proyectos, entrenamiento, despliegue— y una nueva funcionalidad clave: Orchestration workflow, que permite enrutar consultas de usuario entre proyectos CLU y CQA desde una interfaz unificada. Si aún usas Language Studio clásico, es el momento de migrar.

¿Qué incluye Azure AI Language en Foundry?

Capacidades migradas desde Language Studio

  • Conversational Language Understanding (CLU): intents, entities, entrenamiento de modelos de lenguaje conversacional
  • Custom Question Answering (CQA): bases de conocimiento para responder preguntas
  • Named Entity Recognition, Sentiment Analysis, Key Phrase Extraction y otras capacidades cognitivas
  • Custom Text Classification y Custom NER

Novedad: Orchestration Workflow

El Orchestration Workflow es un orquestador que recibe una consulta de usuario y la enruta al proyecto CLU o CQA más adecuado según la intención detectada.

flowchart LR
    U["Usuario"] --> OW["Orchestration Workflow"]
    OW -->|Intent: soporte técnico| CLU["Proyecto CLU
    Soporte"]
    OW -->|Intent: FAQ producto| CQA["Proyecto CQA
    Documentación"]
    CLU --> R1["Respuesta estructurada"]
    CQA --> R2["Respuesta de KB"]

Esto reduce la complejidad de aplicaciones que antes necesitaban lógica de enrutamiento propia en el backend.

Cómo acceder a las capacidades en Foundry

1. Crear un recurso Azure AI Language

az cognitiveservices account create \
  --name my-language-resource \
  --resource-group myRG \
  --kind TextAnalytics \
  --sku S \
  --location eastus \
  --yes

2. Acceder a Foundry

Navega a https://ai.azure.com y asegúrate de que el toggle New Foundry está activado.

En el panel izquierdo verás las secciones de Language con todos los proyectos disponibles.

3. Crear un Orchestration Workflow

Desde Foundry → Language → Orchestration Workflow → New project:

{
  "projectName": "mi-orquestador",
  "language": "es",
  "projectKind": "Orchestration",
  "intents": [
    {
      "category": "SoporteTecnico",
      "target": {
        "targetProjectKind": "Luis",
        "apiVersion": "2022-10-01",
        "projectName": "soporte-clu"
      }
    },
    {
      "category": "FAQ",
      "target": {
        "targetProjectKind": "QuestionAnswering",
        "projectName": "docs-cqa"
      }
    }
  ]
}

4. Llamar al orquestador desde tu aplicación

from azure.ai.language.conversations import ConversationAnalysisClient
from azure.core.credentials import AzureKeyCredential

client = ConversationAnalysisClient(
    endpoint="https://<resource>.cognitiveservices.azure.com/",
    credential=AzureKeyCredential("<key>")
)

result = client.analyze_conversation(
    task={
        "kind": "Conversation",
        "analysisInput": {
            "conversationItem": {
                "id": "1",
                "participantId": "user",
                "text": "¿Cómo instalo el agente de monitorización?"
            }
        },
        "parameters": {
            "projectName": "mi-orquestador",
            "deploymentName": "production"
        }
    }
)

print(result["result"]["prediction"]["topIntent"])

Migración desde Language Studio

Microsoft ha publicado una guía de migración paso a paso. El proceso consiste en:

  1. Abrir el proyecto existente en Language Studio clásico
  2. Exportar el modelo entrenado (JSON)
  3. Importarlo en Foundry desde Language → Import project
  4. Reentrenar y validar
  5. Actualizar los endpoints en la aplicación (misma API, diferente portal de gestión)

Warning

Language Studio clásico seguirá funcionando durante el período de transición, pero las nuevas funcionalidades —incluyendo Orchestration Workflow mejorado— solo estarán disponibles en el nuevo portal Foundry.

Note

El endpoint y las API keys no cambian al migrar. Lo que cambia es la interfaz de administración.

Buenas prácticas

  • Prueba el Orchestration Workflow en un entorno de desarrollo antes de apuntar tráfico de producción.
  • Configura intents de fallback para evitar que consultas sin match claro lleguen a un proyecto equivocado.
  • Usa Managed Identity en lugar de API keys para acceder al recurso de Language desde tu aplicación.
# Asignar rol Cognitive Services User a la identidad gestionada
az role assignment create \
  --assignee <principal-id> \
  --role "Cognitive Services Language Reader" \
  --scope /subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.CognitiveServices/accounts/<resource>

Referencias

AVD: gestión centralizada de RDP Shortpath vía Intune y GPO ya es GA

Resumen

Azure Virtual Desktop permite desde enero de 2026 configurar todos los modos de transporte de RDP Shortpath —Managed, Public/STUN y Public/TURN— directamente desde Microsoft Intune o Group Policy. Esta funcionalidad es ahora GA y elimina la necesidad de gestionar configuraciones dispersas en múltiples capas. Los admins de VDI pueden controlar el comportamiento de transporte de red desde una sola política, aplicada a nivel de session host.

¿Qué es RDP Shortpath?

RDP Shortpath es una característica de Azure Virtual Desktop que establece una ruta de transporte UDP directa entre el cliente y el session host, evitando el relay de Azure. Esto reduce la latencia y mejora la experiencia de usuario, especialmente en redes con buena conectividad.

Hay tres modos de transporte configurables:

Modo Descripción Cuándo usar
Managed UDP directo sobre Azure ExpressRoute o VPN Usuarios corporativos con red privada
Public/STUN UDP directo con hole punching NAT Usuarios en internet con NAT estándar
Public/TURN UDP con relay cuando STUN falla NAT simétrico, redes restrictivas

Qué cambia con la GA de enero 2026

Antes de este cambio, la configuración de Shortpath requería combinar ajustes en:

  • Host pool properties (portal de AVD)
  • Registry keys en los session hosts (manual o via scripts)

Ahora todo se configura con registry-backed policies desplegadas vía Intune o GPO. Estas configuraciones aplican a nivel de session host, como una capa adicional sobre las host pool settings.

flowchart TD
    A[Admin] --> B{Herramienta de gestión}
    B --> C[Intune / Endpoint Manager]
    B --> D[Group Policy]
    C --> E[Registry-backed policy]
    D --> E
    E --> F[Session Host]
    F --> G{RDP Shortpath Mode}
    G --> H[Managed - ExpressRoute/VPN]
    G --> I[Public/STUN]
    G --> J[Public/TURN]

Configuración vía Intune

1. Crear un perfil de configuración de dispositivo

En el portal de Intune:

  1. Ve a Devices → Configuration profiles → Create profile
  2. Plataforma: Windows 10 and later
  3. Tipo de perfil: Settings catalog

2. Buscar y configurar las políticas de RDP Shortpath

Busca en el catálogo: Remote Desktop

Las claves relevantes están bajo:

Administrative Templates > Windows Components > Remote Desktop Services > 
Remote Desktop Session Host > Connections

3. Valores recomendados para entornos corporativos con red privada

Enable RDP Shortpath for managed networks: Enabled
Enable RDP Shortpath for public networks: Enabled (STUN)
RDP Shortpath maximum transport unit: 1400

Configuración equivalente vía GPO

# Verificar configuración actual en un session host
Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" |
    Select-Object fUseUdpPortRedirector, UdpRedirectorPort
GPO Path: Computer Configuration > Administrative Templates > 
Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections

- Enable RDP Shortpath for managed networks: Enabled
- Enable RDP Shortpath for public networks: Enabled

Cómo verificar que Shortpath está funcionando

En el cliente de Windows App o Remote Desktop, durante una sesión activa:

Connection Information → Transport: UDP (RDP Shortpath)

Desde PowerShell en el session host:

Get-WinEvent -LogName "Microsoft-Windows-RemoteDesktopServices-RdpCoreCDV/Operational" |
    Where-Object { $_.Message -like "*Shortpath*" } |
    Select-Object TimeCreated, Message -First 10

Buenas prácticas

  • Las políticas de Intune/GPO se aplican además de las host pool settings, no las reemplazan. Comprueba que no haya conflicto entre capas.
  • Para usuarios con NAT simétrico o firewalls corporativos restrictivos, habilita Public/TURN como fallback, pero monitoriza el uso de relay: tiene mayor latencia que STUN.
  • Aplica las políticas primero en un grupo piloto antes de desplegarlas a todos los session hosts.
  • Documenta qué modo está activo en cada host pool para facilitar el troubleshooting.

Note

RDP Shortpath es independiente de Private Link. Si usas Private Link para el tráfico de gestión, Shortpath afecta únicamente al canal de datos de la sesión de usuario.

Referencias

AKS v1.34: FIPS, TLS 1.2 EMS y la retirada definitiva de Azure Linux 2.0

Resumen

AKS v1.34 llega con cambios que afectan directamente a entornos en producción: los componentes del plano de control se compilan ahora con Go 1.25 y módulos criptográficos FIPS, lo que impone el Extended Master Secret (EMS) en conexiones TLS 1.2 de nodos FIPS. Además, a partir del 31 de marzo de 2026 los nodos con Azure Linux 2.0 dejan de funcionar. Si tienes clústeres con esa imagen, debes migrar ya.

¿Qué cambió en AKS v1.34?

Enforcement de EMS en TLS 1.2 (nodos FIPS)

Go 1.25 rechaza handshakes TLS 1.2 que no incluyan el Extended Master Secret (EMS) cuando FIPS está activado. Esto afecta a:

  • Aplicaciones cliente que hablan con el API server de Kubernetes
  • Admission webhooks registrados contra kube-apiserver
  • Cualquier componente compilado con Go < 1.21

Las aplicaciones compiladas con Go < 1.21 no enviaban EMS por defecto en TLS 1.2, por lo que fallarán al conectarse a componentes de AKS v1.34 en nodos FIPS.

sequenceDiagram
    participant App as App (Go < 1.21)
    participant AKS as AKS v1.34 API Server (FIPS)
    App->>AKS: TLS 1.2 ClientHello (sin EMS)
    AKS-->>App: ❌ Handshake rechazado
    Note over App,AKS: Go 1.25 + FIPS exige EMS en TLS 1.2

Retirada de Azure Linux 2.0

Fecha Evento
30 nov 2025 Fin de soporte y actualizaciones de seguridad
31 mar 2026 Eliminación de imágenes de nodo

Desde el 31 de marzo no puedes escalar ni recuperar nodos con Azure Linux 2.0. Las operaciones de reimage y redeploy fallarán.

Cómo verificar si estás afectado

Comprobar versión de Kubernetes y osSKU

az aks show \
  --resource-group <rg> \
  --name <cluster> \
  --query "agentPoolProfiles[].{name:name, osSku:osSku, k8sVersion:currentOrchestratorVersion}" \
  -o table

Comprobar si FIPS está habilitado en el node pool

az aks nodepool show \
  --resource-group <rg> \
  --cluster-name <cluster> \
  --name <nodepool> \
  --query "enableFips"

Cómo migrar

Opción 1: Actualizar node pools a Azure Linux 3

az aks nodepool upgrade \
  --resource-group <rg> \
  --cluster-name <cluster> \
  --name <nodepool> \
  --os-sku AzureLinux

Note

AzureLinux en la CLI apunta a la versión 3.x por defecto desde finales de 2025.

Opción 2: Actualizar a versión de Kubernetes compatible

Si el node pool está en una versión antigua, primero actualiza Kubernetes:

az aks upgrade \
  --resource-group <rg> \
  --name <cluster> \
  --kubernetes-version 1.32.x

Resolver problemas de TLS 1.2 EMS

Si tienes aplicaciones compiladas con Go < 1.21:

# Verificar versión de Go en tu aplicación
go version

# Rebuild con Go 1.21+
go build -o myapp .

Para webhooks, verificar que el servidor TLS responde con EMS:

openssl s_client -connect <webhook-endpoint>:443 -tls1_2 2>&1 | grep "extended master secret"

Buenas prácticas

  • Comprueba la versión de Go de todos los componentes que usen la API de Kubernetes antes de activar FIPS.
  • Si usas cert-manager, ingress controllers o admission webhooks de terceros, verifica que estén actualizados.
  • Para migration de AzureLinux 2.0, crea primero un nuevo node pool con AzureLinux 3, drena el antiguo y elimínalo.
  • Suscríbete a las AKS release notes para anticipar cambios similares.

Warning

No esperes al 31 de marzo para migrar Azure Linux 2.0. Una vez eliminadas las imágenes, las operaciones de scaling y remediation fallan sin previo aviso.

Referencias