Guía de implementación de Protección de tokens: aplicaciones web (versión preliminar)

En esta guía se describen los pasos necesarios para implementar y aplicar la protección contra tokens de sesión de inicio de sesión que usan las aplicaciones web (basadas en explorador) que acceden a Azure Resource Manager (ARM).

Para obtener información general sobre la Protección de Tokens y las plataformas compatibles, consulte Protección de Token en Microsoft Entra Acceso Condicional. Revise la documentación de información general antes de usar esta guía de implementación.

Note

La protección de tokens para aplicaciones web está actualmente en versión preliminar. Las características en versión preliminar siguen en desarrollo y sus funcionalidades pueden cambiar con el tiempo. Estas características están disponibles antes del lanzamiento oficial para que los clientes puedan tener un acceso anticipado y proporcionar comentarios.

Note

Puesto que la compatibilidad con aplicaciones web está en versión preliminar, se recomienda implementar primero la protección de tokens para aplicaciones nativas, incluida la aplicación de la directiva para al menos un grupo piloto de usuarios, antes de probar esta versión preliminar para las aplicaciones web. Para obtener instrucciones, consulte las guías de implementación para dispositivos Windows y Apple.

Prerequisites

Para utilizar esta función se requieren licencias Microsoft Entra ID P1. Para encontrar la licencia que más se ajuste a sus requisitos, consulte la Comparación de las características de disponibilidad general de Microsoft Entra ID.

Aplicaciones, recursos y exploradores admitidos

APLICACIONES

  • Azure portal
  • centro de administración de Microsoft Intune
  • Centro de administración de Microsoft Entra
  • centro de participación de Microsoft
  • Microsoft Engage Hub

Solo se admiten las aplicaciones web anteriores. El acceso de los usuarios a otras aplicaciones web que acceden a ARM se bloquea cuando se aplica la directiva. Las principales aplicaciones web que acceden a ARM, pero que no son compatibles , incluyen, pero no se limitan a:

  • Centro de seguridad y cumplimiento de Microsoft 365
  • Microsoft AppSource
  • Azure Data Factory
  • aplicación de AI Studio de Azure
  • Azure Synapse Studio
  • Microsoft Power BI
  • Portal para desarrolladores de Microsoft
  • Azure OpenAI Studio
  • Centro de administración de Power Platform

Recursos soportados

  • Azure Resource Manager (ARM), configurado en Acceso condicional como recurso de api de administración de servicios de Windows Azure.

Plataformas y exploradores compatibles

Platform Exploradores compatibles Requisito del dispositivo
Windows 11 (compilación 26100.8246 / 26200.8246 o posterior) Microsoft Edge, Google Chrome Microsoft Entra unidos, unidos híbridos oregistrados 1
macOS Microsoft Edge, Google Chrome Solo administrado por MDM

1 Algunos tipos de registro de dispositivos no se admiten. Consulte la lista de tipos de registro de dispositivos no admitidos.

Habilitación de la protección de tokens para ARM en Windows y macOS

Para minimizar la probabilidad de interrupción del usuario debido a la incompatibilidad de aplicaciones, exploradores o dispositivos, siga estas recomendaciones:

  • Comience con un grupo piloto de usuarios y expanda con el tiempo.
  • Cree una directiva de acceso condicional para la protección de tokens en modo de solo informe antes de aplicarla.
  • Capture registros de inicio de sesión interactivos y no interactivos.
  • Analice estos registros durante suficiente tiempo como para cubrir el uso normal de la aplicación. En las secciones siguientes se describen instrucciones para analizar y comprender el impacto del usuario.
  • Agregue usuarios conocidos y confiables a un grupo de usuarios y aplique la directiva.

Este proceso ayuda a evaluar la preparación de los usuarios para la aplicación de la protección de tokens.

Paso 1: Configurar dispositivos de usuario final

Complete lo siguiente en cada dispositivo manualmente o a través de la directiva de grupo o Intune.

Windows

  1. Asegúrese de que el dispositivo se ejecuta Windows 11 compilación 26100.8246 / 26200.8246 o posterior.

  2. Habilite esta versión preliminar estableciendo el siguiente valor del Registro:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\BrowserCore]
    "EnablePlatformAuth"=dword:00000001
    
  3. Instale la extensión Microsoft explorador single Sign-On:

    • Google Chrome: Instale Microsoft inicio de sesión único desde Chrome Web Store, seleccione Agregar a laextensión Agregara Chrome> y confirme que aparece en la barra de herramientas.
    • Microsoft Edge: vaya a edge://extensions, active Permitir extensiones de otros almacenes, instale la extensión de inicio de sesión único de Microsoft y confirme que está habilitada.

macOS

  1. Instale microsoft Portal de empresa o impleméntelo a través de la solución MDM. Portal de empresa actúa como agente de autenticación para los inicios de sesión de Microsoft Entra.
  2. Habilite el registro respaldado por hardware mediante una de las siguientes opciones:
  3. Instale la extensión del explorador Microsoft inicio de sesión único en Microsoft Edge o Google Chrome, como se describe en la sección anterior de Windows.

Qué esperar después del paso 1

Una vez que el dispositivo cumple los requisitos previos y la configuración se propaga, las solicitudes de autenticación de las aplicaciones y exploradores compatibles dejan de completarse completamente dentro del explorador y, en su lugar, se controlan mediante el agente de autenticación de plataforma. Este comportamiento es lo que permite a esas aplicaciones usar tokens de sesión de inicio de sesión enlazados al dispositivo, como tokens de actualización principal (PRT) y satisfacer la directiva de acceso condicional de protección de tokens.

Planee lo siguiente:

  • Permita al menos 24 horas para que el cambio surta efecto. El cambio a la autenticación basada en broker no es inmediato después de aplicar el valor del Registro, la extensión o el perfil de SSO de la plataforma. No pase al paso 2 hasta que esta ventana pase, o los datos de solo informe no muestran con precisión la preparación.
  • La transición es automática en la mayoría de los casos. Por lo general, los usuarios no realizan ninguna acción; Las sesiones del explorador existentes siguen funcionando mientras el cambio se propaga.
  • Algunos usuarios ven un breve cuadro de diálogo de inicio de sesión. Durante la versión preliminar, los usuarios que acceden al portal de Azure pueden ver brevemente un mensaje "Iniciar sesión... " mensaje que indica que se abre una nueva ventana. No aparece ninguna ventana nueva y no se requiere ninguna acción de usuario y el inicio de sesión se completa por sí mismo. Opcionalmente, comunique este comportamiento con antelación al grupo piloto para que no se notifique como un error.

Paso 2: Crear la directiva de acceso condicional en modo de solo informe

Una vez que espere 24 horas después de finalizar el paso 1, puede seguir configurando una directiva en modo de solo informe para revisar la preparación de la aplicación.

  1. Inicie sesión en el Centro de administración Microsoft Entra como al menos un administrador de acceso condicional.
  2. Vaya a Entra ID>Directivas de acceso> condicionaly, a continuación, seleccione Nueva directiva y asígnele un nombre.
  3. En Asignaciones>Usuarios, incluya los usuarios piloto o de prueba. No incluya las cuentas de acceso de emergencia ni de emergencia de su organización.
  4. En Recursos de> destino(anteriormente aplicaciones en la nube)>Incluir>recursos, seleccione Windows Azure Service Management API.
  5. En Condiciones Plataformas>de dispositivos, establezca Configurar en e incluya Windows, macOS o ambos.
  6. En Condiciones Aplicaciones>cliente, establezca Configurar en e incluya explorador. Asegúrese de no seleccionar Aplicaciones móviles y clientes de escritorio para esta versión preliminar.
  7. En Controles de acceso>Sesión, seleccione Requerir protección de tokens para las sesiones de inicio de sesión y, a continuación, seleccione Seleccionar.
  8. Establezca Habilitar directiva en Solo informe y seleccione Crear.

Tip

Dado que las directivas de acceso condicional que requieren protección de tokens solo están disponibles actualmente para dispositivos de Windows y Apple, es necesario proteger el entorno frente a la posible omisión de directivas cuando un atacante podría parecer provenir de una plataforma diferente.

Además, debe configurar las siguientes directivas:

Paso 3: Revisión de la preparación para la aplicación con registros y métricas

Una vez que la directiva de solo informe esté en funcionamiento, debe revisar el impacto de la Directiva, analizar los registros de inicio de sesión e investigar con Log Analytics para revisar la preparación para la aplicación.

Registros de inicio de sesión

Para ver los eventos de inicio de sesión relacionados con la protección de tokens en el Centro de administración:

  1. Inicie sesión en el Centro de administración de Microsoft Entra al menos como Administrador de acceso condicional.
  2. Vaya a Entra ID>, luego a Supervisión y salud>, y por último a Registros de inicio de sesión.
  3. Agregue la columna token Protection – Sign-in session status code (Protección de tokens: código de estado de sesión de inicio de sesión ) a la vista para ver rápidamente los eventos de inicio de sesión relacionados. Además, filtre por el recurso Azure Resource Manager y establezca Aplicación cliente en Explorador para aislar las solicitudes de inicio de sesión relacionadas con esta versión preliminar.
  4. Seleccione el evento de inicio de sesión que está investigando.
  5. Revise las pestañas Acceso condicional y Solo informe , en función del estado de la directiva y seleccione la directiva de protección de tokens.
  6. En Controles de sesión, compruebe si se han cumplido los requisitos de directiva.
  7. Seleccione la pestaña Información básica y active el campo Protección de tokens: sesión de inicio de sesión para obtener más información.

Los registros de inicio de sesión incluyen una tokenProtectionStatusDetails propiedad que indica si una solicitud usa un token enlazado al dispositivo:

"tokenProtectionStatusDetails": {
  "signInSessionStatus": "bound | unbound",
  "signInSessionStatusCode": <code>
}

Note

Solo en macOS, se pide a los usuarios de dispositivos registrados en Microsoft Entra ID antes de que se aplique la directiva de protección de tokens para volver a autenticarse una vez que se aplique la directiva. Completan una actualización de registro de dispositivo único, lograda iniciando sesión de nuevo para acceder a los recursos. Puede identificar estos usuarios por códigos de estado 1003 y 1004. Dado que los usuarios de este estado pueden corregirse automáticamente, son aptos para la aplicación de directivas.

Códigos de estado de sesión de inicio de sesión

Para comprender por qué una solicitud se muestra como independiente o para identificar a qué usuarios puede aplicar la directiva, consulte los siguientes códigos de estado.

Código de estado Descripción Acción requerida
1002 Unbound: la solicitud no está delimitada debido a la falta de Microsoft Entra ID estado del dispositivo. El usuario debe registrar o unirse al dispositivo.
1003 Unbound: dispositivo no registrado con credenciales seguras (registro heredado). Windows: este error podría deberse a un tipo de registro de dispositivo no compatible o al dispositivo no se registró con credenciales de inicio de sesión nuevas.
macOS: El usuario realiza una actualización de registro de dispositivos única (automediable).
1004 (solo macOS) Sin enlazar: el registro de dispositivos no está respaldado por hardware. El usuario realiza una actualización de registro de dispositivos única (automediable).
1005 Unbound: motivo no especificado. Varía; investigue con el identificador de correlación.
1006 Sin enlazar: no se admite la versión del sistema operativo. El usuario actualiza el sistema operativo a Windows 11 compilación 26100.8246 / 26200.8246 o posterior, o a una versión compatible de macOS.
1007 Sin enlazar: no respaldado por hardware; el usuario que ha iniciado sesión no es el propietario del dispositivo registrado. El usuario vuelve a registrar o el propietario registrado realiza la actualización.
1008 Unbound: el cliente no usa un agente de autenticación, como WAM. El cliente no está integrado con el agente de plataforma o no está instalado el agente o la extensión. En el caso de los exploradores, instale y habilite la extensión de Sign-On único Microsoft y habilite la autenticación de plataforma.

Tip

Para el escenario del explorador, 1008 y 1002 son los códigos que se ven con más frecuencia durante la incorporación. Normalmente significan que falta o deshabilita la extensión de explorador Sign-On único Microsoft, la autenticación de plataforma no está habilitada (en Windows, no se establece el valor del EnablePlatformAuth Registro), un explorador no compatible como Firefox o Safari está en uso o la aplicación no admite la protección de tokens.

Identificación de usuarios automediables (solo macOS)

En macOS, los códigos 1003 y 1004 se corrigen automáticamente a través de una actualización de registro de dispositivos de un solo uso.

Para identificar las solicitudes compatibles o actualizables con la acción del usuario, filtre por:

  • signInSessionStatus == bound o
  • signInSessionStatus == unbound con signInSessionStatusCode de 1003 o 1004.

Consulta de Microsoft Graph de ejemplo para inicios de sesión no interactivos:

GET https://graph.microsoft.com/beta/auditLogs/signIns?$filter=(
  signInEventTypes/any(t: t eq 'nonInteractiveUser')
  and resourceDisplayName eq 'Azure Resource Manager'
  and (tokenProtectionStatusDetails/signInSessionStatusCode eq 1003
    or tokenProtectionStatusDetails/signInSessionStatusCode eq 1004
    or tokenProtectionStatusDetails/signInSessionStatus eq 'bound'))

Cuando se aplica la protección de tokens para estos usuarios, se les pide que vuelvan a iniciar sesión y puedan acceder a los recursos una vez que terminen de autenticarse.

Log Analytics

También puede usar Log Analytics para consultar registros de inicio de sesión interactivos y no interactivos para las solicitudes bloqueadas debido a un error de cumplimiento de la protección de tokens. Estas consultas son solo ejemplos y están sujetas a cambios. Filtran por el recurso de Azure Resource Manager y agregan métricas de preparación para que pueda distinguir bloques duros de los que se pueden corregir automáticamente.

Solicitudes por aplicativo

La consulta de ejemplo siguiente busca en los registros de inicio de sesión no interactivos durante los últimos siete días, resaltando las solicitudes bloqueadas frente a las solicitudes permitidas a ARM por aplicación y los bloques de marcas que los usuarios pueden corregir automáticamente. Cambie a SigninLogs para revisar los inicios de sesión del explorador interactivo en su lugar.

// Select the log to query (SigninLogs or AADNonInteractiveUserSignInLogs)
// SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, Status, UserPrincipalName, AppDisplayName,
    ResourceDisplayName, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Azure Resource Manager"
// Add UserPrincipalName if you want to filter to a specific user
// | where UserPrincipalName == "<user_principal_name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
    or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result != "reportOnlyNotApplied"
    and ConditionalAccessPolicies.result != "notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies["sessionControlsNotSatisfied"]
| extend Result = case(
    SessionNotSatisfyResult contains 'SignInTokenProtection'
        or SessionNotSatisfyResult contains 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
    and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
    Users = dcount(UserPrincipalName),
    Allow = countif(Result == "Allow"),
    Block = countif(Result == "Block"),
    BlockSelfRemediable = countif(IsSelfRemediable == true),
    BlockedUsers = dcountif(UserPrincipalName, Result == "Block"),
    BlockedUsersSelfRemediable = dcountif(UserPrincipalName, IsSelfRemediable == true)
    by AppDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project AppDisplayName, Requests, Users, Allow, Block,
    BlockSelfRemediable, BlockedUsers, BlockedUsersSelfRemediable,
    PctAllowed, PctEnforceable
| sort by Requests desc
Solicitudes por usuario

La consulta siguiente examina los registros de inicio de sesión no interactivos de los últimos siete días, resaltando las solicitudes bloqueadas frente a las solicitudes permitidas a ARM por el usuario, con las mismas métricas automediables y aplicables.

// Per-user query for the Azure portal -> ARM web app scenario
// SigninLogs
AADNonInteractiveUserSignInLogs
// Adjust the time range below
| where TimeGenerated > ago(7d)
| project Id, ConditionalAccessPolicies, UserPrincipalName, AppDisplayName,
    ResourceDisplayName, TokenProtectionStatusDetails
| where ConditionalAccessPolicies != "[]"
| where ResourceDisplayName == "Azure Resource Manager"
// Add UserPrincipalName if you want to filter to a specific user
// | where UserPrincipalName == "<user_principal_name>"
| mv-expand todynamic(ConditionalAccessPolicies)
| where ConditionalAccessPolicies["enforcedSessionControls"] contains '["Binding"]'
    or ConditionalAccessPolicies["enforcedSessionControls"] contains '["SignInTokenProtection"]'
| where ConditionalAccessPolicies.result != "reportOnlyNotApplied"
    and ConditionalAccessPolicies.result != "notApplied"
| extend SessionNotSatisfyResult = ConditionalAccessPolicies.sessionControlsNotSatisfied
| extend Result = case(
    SessionNotSatisfyResult contains 'SignInTokenProtection'
        or SessionNotSatisfyResult contains 'Binding', 'Block', 'Allow')
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails)
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"])
| extend IsSelfRemediable = Result == "Block"
    and (bindingStatusCode == "1003" or bindingStatusCode == "1004")
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName, Result, IsSelfRemediable
| summarize Requests = count(),
    Allow = countif(Result == "Allow"),
    Block = countif(Result == "Block"),
    BlockSelfRemediable = countif(IsSelfRemediable == true)
    by UserPrincipalName, AppDisplayName, ResourceDisplayName
| extend PctAllowed = round(100.0 * Allow / (Allow + Block), 2)
| extend PctEnforceable = round(100.0 * (Allow + BlockSelfRemediable) / (Allow + Block), 2)
| project UserPrincipalName, AppDisplayName, ResourceDisplayName,
    Requests, Allow, Block, BlockSelfRemediable,
    PctAllowed, PctEnforceable
| sort by UserPrincipalName asc

Paso 4: Aplicar la directiva

Después de revisar los datos del registro de acceso y confirmar que los usuarios y dispositivos de destino están listos, mueva el conmutador Habilitar directiva de Solo informe a Activado.