Uso de la autenticación flexible - Amazon Cognito

Uso de la autenticación flexible

Con la autenticación flexible, puede configurar el grupo de usuarios para bloquear los inicios de sesión sospechosos o agregar la autenticación de segundo factor en respuesta a un aumento del nivel de riesgo. Para cada intento de inicio de sesión, Amazon Cognito genera una puntuación de riesgo que indica la probabilidad de que la solicitud de inicio de sesión proceda de un origen comprometido. Esta puntuación de riesgo se basa en los factores de dispositivo y usuario que su aplicación proporciona y otros factores que Amazon Cognito deduce de la solicitud. Algunos factores que contribuyen a la evaluación del riesgo por parte de Amazon Cognito son la dirección IP y el agente de usuario, el agente de usuario y la distancia geográfica con respecto a otros intentos de inicio de sesión. La autenticación adaptativa puede activarse o requerir la autenticación multifactor (MFA) para un usuario de su grupo de usuarios cuando Amazon Cognito detecta un riesgo en la sesión de un usuario y este aún no ha elegido un método de MFA. Cuando se activa la MFA para un usuario, siempre se le presenta el desafío de proporcionar o configurar un segundo factor durante la autenticación, independientemente de cómo se haya configurado la autenticación adaptativa. Desde el punto de vista del usuario, la aplicación ofrece ayuda para configurar la MFA y, opcionalmente, Amazon Cognito le impide volver a iniciar sesión hasta que haya configurado un factor adicional.

Amazon Cognito publica en Amazon CloudWatch métricas sobre los intentos de inicio de sesión, sus niveles de riesgo y los desafíos que no se han completado de forma correcta. Para obtener más información, consulte Visualización de las métricas de protección contra amenazas.

Para añadir la autenticación flexible a un grupo de usuarios, consulte Características de seguridad avanzada del grupo de usuarios.

Información general sobre la autenticación flexible

En la consola de Amazon Cognito, en la pestaña Seguridad avanzada, puede elegir la configuración de la autenticación flexible, como las acciones que se deben realizar en los distintos niveles de riesgo y la personalización de los mensajes de notificación para los usuarios. Puede asignar una configuración de seguridad avanzada global a todos sus clientes de aplicaciones, pero aplicar una configuración de nivel de cliente a los clientes de aplicaciones individuales.

La autenticación adaptativa de Amazon Cognito asigna uno de los siguientes niveles de riesgo a cada sesión de usuario: alto, medio, bajo o sin riesgo.

Estudie bien sus opciones cuando cambie Enforcement method (Método de aplicación) de Audit-only (Solo auditoría) a Full-function (Función completa). Las respuestas automáticas que se aplican a los niveles de riesgo influyen en el nivel de riesgo que Amazon Cognito asigna a las sesiones de usuario posteriores con las mismas características. Por ejemplo, si decide no realizar ninguna acción o marcar Allow (Permitir) en las sesiones de usuario que Amazon Cognito evalúa inicialmente como de alto riesgo, Amazon Cognito considera que las sesiones similares tienen un riesgo menor.

Para cada nivel de riesgo, puede elegir entre las opciones siguientes:

Opción

Acción

Permitir Los usuarios pueden iniciar sesión sin un factor adicional.
Optional MFA (MFA opcional) Los usuarios que tengan configurado un segundo factor deberán superar un segundo desafío de segundo factor para iniciar sesión. Los segundos factores disponibles son un número de teléfono para SMS y un token de software TOTP. Los usuarios que no tienen un segundo factor configurado pueden iniciar sesión con un solo conjunto de credenciales.
Require MFA (Requerir MFA) Los usuarios que tengan configurado un segundo factor deberán superar un desafío de segundo factor para iniciar sesión. Amazon Cognito bloquea el inicio de sesión de los usuarios que no hayan configurado un segundo factor.
Bloque Amazon Cognito bloquea todos los intentos de inicio de sesión con el nivel de riesgo designado.
nota

No es necesario verificar los números de teléfono para utilizarlos como segundo factor de autenticación para SMS.

Adición de datos de sesión y dispositivos de usuario a las solicitudes de API

Puede recopilar y transferir información sobre la sesión de su usuario a la seguridad avanzada de Amazon Cognito cuando usa la API para registrarlo, iniciarlo y restablecer su contraseña. Esta información incluye la dirección IP de su usuario y un identificador de dispositivo único.

Es posible que tenga un dispositivo de red intermedio entre sus usuarios y Amazon Cognito, como un servicio proxy o un servidor de aplicaciones. Puede recopilar los datos de contexto de los usuarios y pasarlos a Amazon Cognito para que la autenticación adaptativa calcule el riesgo en función de las características del punto de conexión de usuario, en lugar de su servidor o proxy. Si la aplicación del lado del cliente llama directamente a las operaciones de la API de Amazon Cognito, la autenticación adaptativa registra automáticamente la dirección IP de origen. Sin embargo, no registra otra información del dispositivo, como el user-agent, a menos que también recoja una huella digital del dispositivo.

Genere estos datos con la biblioteca de recopilación de datos contextuales de Amazon Cognito y envíelos a la seguridad avanzada de Amazon Cognito con los parámetros ContextData y UserContextData. La biblioteca de recopilación de datos de contexto se incluye en los SDK de AWS. Para obtener más información, consulte Integración de Amazon Cognito en aplicaciones web y móviles. Puede enviar ContextData si ha activado características de seguridad avanzadas en su grupo de usuarios. Para obtener más información, consulte Configuración de las características de seguridad avanzadas.

Cuando llame a las siguientes operaciones de API autenticadas de Amazon Cognito desde el servidor de aplicaciones, pase la IP del dispositivo del usuario en el parámetro ContextData. Además, debe transferir el nombre del servidor, la ruta del servidor y los datos de la huella dactilar codificada del dispositivo.

Cuando llama a operaciones de API sin autenticar de Amazon Cognito, puede enviar UserContextData a las características de seguridad avanzadas de Amazon Cognito. Estos datos incluyen una huella digital de dispositivo en el parámetro EncodedData. También puede enviar un parámetro IpAddress en su UserContextData si cumple las condiciones siguientes:

Su aplicación puede rellenar el parámetro UserContextData con datos codificados de huellas digitales del dispositivo y la dirección IP del dispositivo del usuario en las siguientes operaciones de API no autenticadas de Amazon Cognito.

Aceptación de datos de contexto de usuario adicionales (AWS Management Console)

El grupo de usuarios acepta una dirección IP en un parámetro UserContextData después de activar la característica Accept additional user context data (Aceptar datos de contexto de usuario adicionales). No es necesario activar esta característica si:

  • Los usuarios solo inician sesión con operaciones de API autenticadas como AdminInitiateAuth y usan el parámetro ContextData.

  • Solo desea que las operaciones de API no autenticadas envíen una huella digital del dispositivo, pero no una dirección IP, a las características de seguridad avanzadas de Amazon Cognito.

Actualice el cliente de aplicación como se indica a continuación en la consola de Amazon Cognito para agregar compatibilidad con datos de contexto de usuario adicionales.

  1. Inicie sesión en la consola de Amazon Cognito.

  2. En el panel de navegación, elija Manage your User Pools (Administrar sus grupos de usuarios) y elija el grupo de usuarios que desea editar.

  3. Elija la pestaña App integration (Integración de aplicaciones).

  4. En App clients and analytics (Clientes de aplicaciones y análisis), elija o cree un cliente de aplicación. Para obtener más información, consulte Configuración de un cliente de aplicación para grupos de usuarios.

  5. Elija Edit (Editar) desde el contenedor de App client information (Información del cliente de aplicación).

  6. En Advanced authentication settings (Configuración avanzada de autenticación) del cliente de aplicación, elija Accept additional user context data (Aceptar datos de contexto de usuario adicionales).

  7. Elija Guardar cambios.

Para configurar el cliente de aplicación para que acepte datos de contexto de usuario en la API de Amazon Cognito, establezca EnablePropagateAdditionalUserContextData en true en una solicitud CreateUserPoolClient o UpdateUserPoolClient. Para obtener información sobre cómo activar la seguridad avanzada desde la aplicación web o móvil, consulte Activación de la seguridad avanzada del grupo de usuarios desde la aplicación. Recopile los datos contextuales del usuario desde el lado del cliente cuando la aplicación llame a Amazon Cognito desde el servidor. A continuación se muestra un ejemplo que utiliza el método del SDK de JavaScript getData.

var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);

Cuando diseñe la aplicación para utilizar la autenticación flexible, le recomendamos que incorpore el último SDK de Amazon Cognito a la aplicación. La última versión del SDK recopila la información de las huellas dactilares del dispositivo como el ID, el modelo y la zona horaria del dispositivo. Para obtener más información sobre los SDK de Amazon Cognito, consulte Instalación de un SDK de grupo de usuarios. La seguridad avanzada de Amazon Cognito solo guarda y asigna una puntuación de riesgo a los eventos que la aplicación envía en el formato correcto. Si Amazon Cognito devuelve una respuesta de error, compruebe que su solicitud incluya un hash de secreto válido y que el parámetro IPaddress sea una dirección IPv4 o IPv6 válida.

Recursos ContextData y UserContextData

Visualización y exportación del historial de eventos de los usuarios

Amazon Cognito genera un registro por cada evento de autenticación realizado por un usuario cuando se habilita la protección avanzada contra amenazas a la seguridad. De forma predeterminada, puede ver los registros de los usuarios en la pestaña Usuarios de la consola de Amazon Cognito o con la operación de API AdminListUserAuthEvents. También puede exportar estos eventos a un sistema externo como los registros de CloudWatch, Amazon S3 o Amazon Data Firehose. La característica de exportación hace que la información de seguridad sobre la actividad de los usuarios en la aplicación sea más accesible a sus propios sistemas de análisis de seguridad.

Visualización del historial de eventos de los usuarios (AWS Management Console)

Para ver el historial de inicios de sesión de un usuario, puede elegir el usuario en Users (Usuarios) en la consola de Amazon Cognito. Amazon Cognito conserva el historial de eventos del usuario durante de dos años.

Historial de eventos del usuario

Cada evento de inicio de sesión tiene un ID de evento. El evento también tiene los datos contextuales correspondientes, como la ubicación, los detalles del dispositivo y los resultados de detección de riesgos.

También puede correlacionar el ID de evento con el token que Amazon Cognito emitió en el momento en que registró el evento. El ID y los tokens de acceso incluyen este ID de evento en su carga. Amazon Cognito también correlaciona el uso de tokens de actualización con el ID de evento original. El ID de evento original permite localizar el ID de evento del inicio de sesión que dio lugar a la emisión de los tokens de Amazon Cognito. Esto le permite realizar un seguimiento del uso de un token en su sistema hasta un evento de autenticación en concreto. Para obtener más información, consulte Descripción de los tokens web JSON (JWT) de los grupos de usuarios.

Visualización del historial de eventos de los usuarios (API/CLI)

Puede consultar el historial de eventos de usuario con la operación de la API de Amazon Cognito AdminListUserAuthEvents o con la AWS Command Line Interface (AWS CLI) admin-list-user-auth-events.

AdminListUserAuthEvents request

El siguiente cuerpo de la solicitud de AdminListUserAuthEvents devuelve el registro de actividad más reciente de un usuario.

{ "UserPoolId": "us-west-2_EXAMPLE", "Username": "myexampleuser", "MaxResults": 1 }
admin-list-user-auth-events request

La siguiente solicitud de admin-list-user-auth-events devuelve el registro de actividad más reciente de un usuario.

aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
Response

Amazon Cognito devuelve el mismo cuerpo de respuesta JSON a ambas solicitudes. El siguiente es un ejemplo de respuesta para un evento de inicio de sesión en la interfaz de usuario alojada que no contenía factores de riesgo:

{ "AuthEvents": [ { "EventId": "[event ID]", "EventType": "SignIn", "CreationDate": "[Timestamp]", "EventResponse": "Pass", "EventRisk": { "RiskDecision": "NoRisk", "CompromisedCredentialsDetected": false }, "ChallengeResponses": [ { "ChallengeName": "Password", "ChallengeResponse": "Success" } ], "EventContextData": { "IpAddress": "192.168.2.1", "DeviceName": "Chrome 125, Windows 10", "Timezone": "-07:00", "City": "Bellevue", "Country": "United States" } } ], "NextToken": "[event ID]#[Timestamp]" }

Exportación de eventos de autenticación de usuarios

Configure el grupo de usuarios para exportar eventos de los usuarios desde la protección avanzada contra amenazas a la seguridad hasta un sistema externo. Los sistemas externos compatibles (Amazon S3, los registros de CloudWatch y Amazon Data Firehose) pueden añadir costos a la factura de AWS por los datos que envíe o recupere. Para obtener más información, consulte Exportación de registros de actividad de usuarios de seguridad avanzada.

AWS Management Console
  1. Inicie sesión en la consola de Amazon Cognito.

  2. Elija User Pools (Grupos de usuarios).

  3. Elija un grupo de usuarios existente en la lista o cree un grupo de usuarios.

  4. Seleccione la pestaña Seguridad avanzada. Busque Exportar registros de actividad de los usuarios y seleccione Editar.

  5. En Estado de registro, seleccione la casilla de verificación situada junto a Activar la exportación del registro de actividad del usuario.

  6. En Destino del registro, elija el Servicio de AWS que quiera que se encargue de los registros: el grupo de registro de CloudWatch, los flujos de Amazon Data Firehose o los buckets de S3.

  7. La opción que elija rellenará el selector de recursos con el tipo de recurso correspondiente. Seleccione un grupo de registro, un flujo o un bucket de la lista. También puede seleccionar el botón Crear AWS Management Console para ir al servicio seleccionado y crear un recurso nuevo.

  8. Seleccione Guardar cambios.

API

Elija un tipo de destino para los registros de actividad de los usuarios.

A continuación se muestra un ejemplo de cuerpo de solicitud SetLogDeliveryConfiguration que establece un flujo de Firehose como destino del registro.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "FirehoseConfiguration": { "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

A continuación se muestra un ejemplo de cuerpo de solicitud SetLogDeliveryConfiguration que establece un bucket de Amazon S3 como destino del registro.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "S3Configuration": { "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

A continuación se muestra un ejemplo de cuerpo de solicitud SetLogDeliveryConfiguration que establece un grupo de registro de CloudWatch como destino del registro.

{ "LogConfigurations": [ { "EventSource": "userAuthEvents", "CloudWatchLogsConfiguration": { "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP" }, "LogLevel": "INFO" } ], "UserPoolId": "us-west-2_EXAMPLE" }

Suministro de comentarios sobre los eventos

Los comentarios sobre los eventos afectan a la evaluación de riesgos en tiempo real y mejoran el algoritmo de evaluación de riesgos a lo largo del tiempo. Puede proporcionar comentarios sobre la validez de los intentos de inicio de sesión a través de las operaciones de API y la consola de Amazon Cognito.

nota

Sus comentarios sobre el evento influyen en el nivel de riesgo que Amazon Cognito asigna a las sesiones de usuario posteriores con las mismas características.

En la consola de Amazon Cognito, elija un usuario en la pestaña Users (Usuarios) y seleccione Provide event feedback (Proporcionar comentarios sobre el evento). Puede revisar los detalles del evento y marcar Set as valid (Establecer como válido) o Set as invalid (Establecer como no válido).

La consola enumera el historial de inicios de sesión en la pestaña Users and groups (Usuarios y grupos). Si selecciona una entrada, puede marcar el evento como válido o no válido. También puede proporcionar comentarios a través del método AdminUpdateAuthEventFeedback de la API de grupos de usuarios y del comando admin-update-auth-event-feedback de la AWS CLI.

Al seleccionar Set as valid (Establecer como válido) en la consola de Amazon Cognito o proporcionar un valor FeedbackValue de valid en la API, le está indicando a Amazon Cognito que confía en una sesión de usuario en la que Amazon Cognito ha determinado que hay cierto nivel de riesgo. Al seleccionar Set as invalid (Definir como no válido) en la consola de Amazon Cognito o proporcionar un valor FeedbackValue de invalid en la API, le está indicando a Amazon Cognito que no confía en una sesión de usuario o no cree que Amazon Cognito haya determinado que tiene un nivel de riesgo suficiente.

Envío de mensajes de notificación

Con protecciones de seguridad avanzadas, Amazon Cognito puede notificar a los usuarios los intentos de inicio de sesión de riesgo. Amazon Cognito también puede solicitar a los usuarios que seleccionen enlaces para indicar si el inicio de sesión es válido o no. Amazon Cognito utiliza estos comentarios para mejorar la precisión de la detección de riesgos de su grupo de usuarios.

En la sección Automatic risk response (Respuesta automática al riesgo) elija Notify Users (Notificar a los usuarios) para los casos de riesgo bajo, medio y alto.

Notificación a los usuarios

Amazon Cognito envía notificaciones por correo electrónico a sus usuarios independientemente de si han verificado su dirección de correo electrónico.

Puede personalizar los mensajes de correo electrónico de notificación y proporcionar versiones de texto sin formato y HTML de dichos mensajes. Para personalizar las notificaciones por correo electrónico, abra Email templates (Plantillas de correo electrónico) desde Adaptive authentication messages (Mensajes de autenticación flexible) en su configuración de seguridad avanzada. Para obtener más información sobre las plantillas de correo electrónico, consulte Plantillas de mensaje.