Compartir a través de


Protección de tokens en el acceso condicional de Microsoft Entra

La protección de tokens es un control de sesión de acceso condicional que intenta reducir los ataques de reproducción de tokens al asegurarse de que Entra ID solo acepte tokens de sesión de inicio de sesión asociados al dispositivo, como los tokens de actualización principal (PRT), cuando las aplicaciones solicitan acceso a los recursos protegidos.

Cuando un usuario registra un dispositivo Windows 10 o posterior con Microsoft Entra, se emite un PRT y se enlaza criptográficamente a ese dispositivo. Este enlace garantiza que incluso si un actor de amenazas roba un token, no se puede usar desde otro dispositivo. Con la protección de tokens aplicada, Microsoft Entra valida que solo se utilizan estos tokens de sesión vinculados en las aplicaciones compatibles.

Puede aplicar la directiva de protección de tokens en los recursos de Exchange Online, SharePoint Online y Teams. Es compatible con muchas aplicaciones nativas de Microsoft 365. Para obtener una lista completa de las aplicaciones y recursos admitidos, consulte la sección "Requisitos".

Note

Use esta directiva como parte de una estrategia más amplia contra el robo de tokens, como se describe en Protección de tokens en Microsoft Entra.

Captura de pantalla de una directiva de acceso condicional que requiere protección de tokens como control de sesión.

Requirements

El uso de esta característica requiere licencias de 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.

Los siguientes dispositivos y aplicaciones admiten el acceso a recursos en los que se aplica una directiva de acceso condicional de protección de tokens:

Dispositivos compatibles

  • Dispositivos Windows 10 o más recientes que están integrados en Microsoft Entra, híbridos integrados en Microsoft Entra o registrados en Microsoft Entra. Consulte la sección de limitaciones conocidas para los tipos de dispositivos no admitidos.
  • Windows Server 2019 o versiones posteriores que están unidos a Microsoft Entra híbrido.

Note

Para obtener pasos detallados sobre cómo registrar el dispositivo, consulta Registrar tu dispositivo personal en tu red profesional o educativa.

Aplicaciones admitidas

  • Cliente de sincronización de OneDrive versión 22.217 o posterior
  • Cliente nativo de Teams versión 1.6.00.1331 o posterior
  • Power BI Desktop, versión 2.117.841.0 (mayo de 2023) o posterior
  • Módulo de Exchange PowerShell versión 3.7.0 o posterior
  • Microsoft Graph PowerShell versión 2.0.0 o posterior con la opción EnableLoginByWAM
  • Visual Studio 2022 o posterior al usar la opción de inicio de sesión "Agente de autenticación de Windows"
  • Aplicación de Windows versión 2.0.379.0 o posterior

Los siguientes recursos admiten la protección de tokens:

  • Office 365Exchange Online
  • Office 365 SharePoint Online
  • Servicios de Microsoft Teams
  • Azure Virtual Desktop
  • Windows 365

Limitaciones conocidas

  • No se admiten clientes perpetuos de Office.
  • Las siguientes aplicaciones no admiten el inicio de sesión con flujos de token protegidos y los usuarios se bloquean al acceder a Exchange y SharePoint:
    • Módulos de PowerShell que acceden a SharePoint
    • Extensión de PowerQuery para Excel
    • Extensiones para Visual Studio Code que acceden a Exchange o SharePoint
  • Los siguientes dispositivos cliente Windows no son compatibles:
    • Surface Hub
    • Sistemas de Salas de Microsoft Teams basados en Windows (MTR)
  • Los usuarios externos que cumplen los requisitos de registro de dispositivos de protección de tokens en su inquilino de origen son admitidos. Sin embargo, los usuarios que no cumplen estos requisitos ven un mensaje de error poco claro sin indicar la causa principal.
  • Los dispositivos registrados con el identificador de Microsoft Entra mediante los métodos siguientes no son compatibles:

Para identificar los dispositivos afectados debido a tipos de registro no admitidos enumerados anteriormente, inspeccione el tokenProtectionStatusDetails atributo en los registros de inicio de sesión. Las solicitudes de token bloqueadas debido a un tipo de registro de dispositivo no admitido se pueden identificar con un signInSessionStatusCode valor de 1003.

Para evitar interrupciones durante la incorporación, modifique la directiva de acceso condicional de protección de tokens agregando una condición de filtro de dispositivo que excluye los dispositivos de la categoría de implementación descrita anteriormente. Por ejemplo, para excluir:

  • PCs en la nube que están unidos a Microsoft Entra, pueden usar systemLabels -eq "CloudPC" and trustType -eq "AzureAD".
  • Azure Virtual Desktops unidos a Microsoft Entra, puede usar systemLabels -eq "AzureVirtualDesktop" and trustType -eq "AzureAD".
  • Grupos de equipos hospedados de Power Automate unidos a Microsoft Entra, puede usar systemLabels -eq "MicrosoftPowerAutomate" and trustType -eq "AzureAD".
  • Para los dispositivos Windows Autopilot implementados mediante el modo de autodespliegue, puede utilizar la propiedad enrollmentProfileName. Por ejemplo, si ha creado un perfil de inscripción en Intune para los dispositivos del modo de autodespliegue de Autopilot como "Perfil de autodespliegue de Autopilot", puede usar `enrollmentProfileName -eq "Perfil de autodespliegue de Autopilot".
  • Máquinas virtuales Windows en Azure unidas a Microsoft Entra, puede usar profileType -eq "SecureVM" and trustType -eq "AzureAD".

Deployment

Para los usuarios, la implementación de una directiva de acceso condicional para aplicar la protección de tokens debe ser invisible al usar plataformas cliente compatibles en dispositivos registrados y aplicaciones compatibles.

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

  • Comience con un grupo piloto de usuarios y expanda con el tiempo.
  • Cree una directiva de acceso condicional en modo de solo informe antes de aplicar la protección de tokens.
  • 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.
  • Agregue usuarios conocidos y confiables a una directiva de cumplimiento.

Este proceso ayuda a evaluar la compatibilidad de cliente y aplicaciones de los usuarios para la implementación de protección de tokens.

Creación de una directiva de acceso condicional

Los usuarios que realizan roles especializados como los descritos en Niveles de seguridad de acceso con privilegios son posibles destinos para esta funcionalidad. Se recomienda realizar una prueba piloto con un pequeño subconjunto para comenzar.

Los pasos siguientes le ayudan a crear una directiva de acceso condicional para requerir protección de tokens para Exchange Online y SharePoint Online en dispositivos Windows.

  1. Inicie sesión en el Centro de administración de Microsoft Entra como al menos un administrador de acceso condicional.
  2. Navegue a Entra ID>Acceso condicional>Políticas.
  3. Seleccione Nueva directiva.
  4. Asigne un nombre a la directiva. Se recomienda que las organizaciones creen un estándar significativo para los nombres de sus políticas.
  5. En Asignaciones, selecciona Usuarios o identidades de trabajo.
    1. En Incluir, seleccione los usuarios o grupos que están probando esta directiva.
    2. En Excluir, seleccione Usuarios y grupos y elija las cuentas de acceso de emergencia o 'break-glass' de su organización.
  6. En Recursos de destino>Recursos (anteriormente aplicaciones en la nube)>Incluir>Seleccionar recursos
    1. En Seleccionar, seleccione las siguientes aplicaciones:

      1. Office 365Exchange Online
      2. Office 365 SharePoint Online
      3. Servicios de Microsoft Teams
      4. Si ha implementado la aplicación de Windows en su entorno, incluya:
        1. Azure Virtual Desktop
        2. Windows 365
        3. Inicio de sesión en la nube de Windows

      Warning

      La directiva de acceso condicional solo debe configurarse para estas aplicaciones. Si selecciona el grupo de aplicaciones de Office 365 , podría producirse errores no deseados. Este cambio es una excepción a la regla general que el grupo de aplicaciones de Office 365 debe seleccionarse en una directiva de acceso condicional.

    2. Elija Seleccione.

  7. En Condiciones:
    1. En Plataformas de dispositivos:
      1. Establece Configurar en .
      2. Incluír>Selección de plataformas de dispositivos>Windows.
      3. Seleccione Listo.
    2. En Aplicaciones cliente:
      1. Establece Configurar en .

        Warning

        Si no se configura la condición Aplicaciones cliente , o si se deja el explorador seleccionado, las aplicaciones que usan MSAL.js, como Teams Web, se bloquearán.

      2. En Clientes de autenticación moderna, seleccione Solo aplicaciones móviles y clientes de escritorio. Deje los demás elementos sin marcar.

      3. Seleccione Listo.

  8. En Controles de acceso>Sesión, seleccione Requerir protección de token para sesiones de inicio de sesión y seleccione Seleccionar.
  9. Confirme la configuración y establezca en Habilitar directiva la opción Solo informe.
  10. Seleccione Crear para habilitar la directiva.

Después de confirmar la configuración mediante el impacto de la directiva o el modo de solo informe, mueva el botón de alternancia Habilitar directiva de solo informe a Activado.

Tip

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

Además, debe configurar las siguientes directivas:

Captura de registros y análisis

Supervise la aplicación del acceso condicional de la protección de tokens antes y después de la aplicación mediante características como impacto en la directiva, registros de inicio de sesión y Log Analytics.

Registros de inicio de sesión

Use el registro de inicio de sesión de Microsoft Entra para verificar el resultado de una directiva de aplicación de protección de token en modo de solo informe o en modo activado.

Captura de pantalla que muestra un ejemplo de una directiva que no se cumple.

  1. Inicie sesión en el Centro de administración de Microsoft Entra como al menos un 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. Seleccione una solicitud específica para determinar si la directiva se aplica o no.
  4. Vaya al panel Acceso condicional o Solo informes en función de su estado y seleccione el nombre de la directiva que requiere la protección de tokens.
  5. En Controles de sesión, compruebe si se han cumplido o no los requisitos de la directiva.
  6. Para obtener más detalles sobre el estado de enlace de la solicitud, seleccione el panel Información básica y vea el campo Protección de tokens: sesión de inicio de sesión. Los valores posibles son:
    1. Enlazado: la solicitud usaba protocolos enlazados. Algunos inicios de sesión pueden incluir varias solicitudes y todas las solicitudes deben enlazarse para satisfacer la directiva de protección de tokens. Incluso si una solicitud individual parece estar enlazada, no garantiza el cumplimiento de la directiva si otras solicitudes no están enlazadas. Para ver todas las solicitudes de un inicio de sesión, puede filtrar todas las solicitudes de un usuario específico o buscar por corelationid.
    2. Unbound: la solicitud no usaba protocolos enlazados. Los posibles statusCodes cuando la solicitud no está delimitada son:
      1. 1002: La solicitud no está vinculada debido a la falta de estado del dispositivo de Microsoft Entra ID.
      2. 1003: La solicitud no está vinculada porque el estado del dispositivo de Microsoft Entra ID no cumple con los requisitos de la directiva de acceso condicional para la protección de tokens. 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.
      3. 1005: La solicitud no está vinculada por otras razones no especificadas.
      4. 1006: La solicitud no está vinculada porque no se admite la versión del sistema operativo.
      5. 1008: la solicitud no está vinculada porque el cliente no está integrado con el agente de plataforma, como el Administrador de cuentas de Windows (WAM).

Captura de pantalla que muestra un inicio de sesión de ejemplo con el atributo Token Protection - Sign In Session resaltado.

Log Analytics

También puede utilizar Log Analytics para consultar los registros de inicio de sesión (interactivos y no interactivos) en busca de solicitudes bloqueadas debido a un fallo en la aplicación de la protección mediante token.

Esta es una consulta de Log Analytics de ejemplo en la que se buscan los registros de inicio de sesión no interactivos durante los últimos siete días, donde se resaltan las solicitudes Bloqueadas frente a Permitidas por la Aplicación. Estas consultas son solo muestras y están sujetas a cambios.

Note

Salida de los registros de inicio de sesión: el valor de la cadena usada en "enforcedSessionControls" y "sessionControlsNotSatisfied" cambió de "Binding" a "SignInTokenProtection" a finales de junio de 2023. Las consultas en los datos del registro de inicio de sesión deben actualizarse para reflejar este cambio. En los ejemplos se tratan ambos valores para incluir datos históricos.

//Per Apps query 
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs ) 
//SigninLogs 
AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| project Id,ConditionalAccessPolicies, Status,UserPrincipalName, AppDisplayName, ResourceDisplayName 
| where ConditionalAccessPolicies != "[]" 
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" or ResourceDisplayName =="Azure Virtual Desktop" or ResourceDisplayName =="Windows 365" or ResourceDisplayName =="Windows Cloud Login"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" 
//Add userPrincipalName if you want to filter  
// | 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 'SignInTokenProtection', 'Block','Allow')
| summarize by Id,UserPrincipalName, AppDisplayName, Result 
| summarize Requests = count(), Users = dcount(UserPrincipalName), Block = countif(Result == "Block"), Allow = countif(Result == "Allow"), BlockedUsers = dcountif(UserPrincipalName, Result == "Block") by AppDisplayName 
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2) 
| sort by Requests desc 

El resultado de la consulta anterior debe ser similar a la siguiente captura de pantalla:

Captura de pantalla que muestra los resultados de ejemplo de una consulta de Log Analytics que busca directivas de protección de tokens

En el siguiente ejemplo de consulta se examina el registro de inicio de sesión no interactivo de los últimos siete días, en el que se resaltan las solicitudes Bloqueadas frente a Permitidas por el Usuario.

//Per users query 
// Select the log you want to query (SigninLogs or AADNonInteractiveUserSignInLogs ) 
//SigninLogs 
AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| project Id,ConditionalAccessPolicies, UserPrincipalName, AppDisplayName, ResourceDisplayName 
| where ConditionalAccessPolicies != "[]" 
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" or ResourceDisplayName =="Azure Virtual Desktop" or ResourceDisplayName =="Windows 365" or ResourceDisplayName =="Windows Cloud Login"
| where ResourceDisplayName == "Office 365 Exchange Online" or ResourceDisplayName =="Office 365 SharePoint Online" 
//Add userPrincipalName if you want to filter  
// | 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 'SignInTokenProtection', 'Block','Allow')
| summarize by Id, UserPrincipalName, AppDisplayName, ResourceDisplayName,Result  
| summarize Requests = count(),Block = countif(Result == "Block"), Allow = countif(Result == "Allow") by UserPrincipalName, AppDisplayName,ResourceDisplayName 
| extend PctAllowed = round(100.0 * Allow/(Allow+Block), 2) 
| sort by UserPrincipalName asc   

En el ejemplo de consulta siguiente se examina el registro de inicio de sesión no interactivo durante los últimos siete días, resaltando los usuarios que usan dispositivos, donde el estado del dispositivo de Microsoft Entra ID no cumple los requisitos de la directiva de CA de protección de tokens.

AADNonInteractiveUserSignInLogs 
// Adjust the time range below 
| where TimeGenerated > ago(7d) 
| where TokenProtectionStatusDetails!= "" 
| extend parsedBindingDetails = parse_json(TokenProtectionStatusDetails) 
| extend bindingStatus = tostring(parsedBindingDetails["signInSessionStatus"]) 
| extend bindingStatusCode = tostring(parsedBindingDetails["signInSessionStatusCode"]) 
| where bindingStatusCode == 1003 
| summarize count() by UserPrincipalName 

Experiencia de usuario final

Un usuario que registró o inscribió su dispositivo compatible no experimenta diferencias en la experiencia de inicio de sesión en una aplicación compatible con la protección de tokens cuando se habilita el requisito de protección de tokens.

Un usuario que no ha registrado o inscrito su dispositivo y si la directiva de protección de tokens está habilitada ve la captura de pantalla siguiente después de la autenticación.

Captura de pantalla del mensaje de error de protección de tokens cuando el dispositivo no está registrado o inscrito.

Un usuario que no usa una aplicación compatible cuando la directiva de protección de tokens está habilitada verá la captura de pantalla siguiente después de la autenticación.

Captura de pantalla del mensaje de error cuando una directiva de protección de tokens bloquea el acceso.

¿Qué es un token de actualización principal?