Gestión de la identidad de los clientes - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestión de la identidad de los clientes

La gestión de la identidad y el acceso de los clientes (CIAM) es una tecnología que permite a las organizaciones gestionar las identidades de los clientes. Proporciona seguridad y una experiencia de usuario mejorada para registrarse, iniciar sesión y acceder a las aplicaciones de consumo, los portales web o los servicios digitales que ofrece una organización. CIAMle ayuda a identificar a sus clientes, crear experiencias personalizadas y determinar el acceso correcto que necesitan para las aplicaciones y los servicios orientados a los clientes. Una CIAM solución también puede ayudar a una organización a cumplir con los requisitos de conformidad en todos los marcos y estándares regulatorios del sector. Para obtener más información, consulte ¿Qué esCIAM? en el AWS sitio web.

Amazon Cognito es un servicio de identidad para aplicaciones web y móviles que proporciona CIAM funciones a empresas de cualquier escala. Amazon Cognito incluye un directorio de usuarios, un servidor de autenticación y un servicio de autorización para los tokens de acceso OAuth 2.0, y también puede proporcionar credenciales temporalesAWS. Puede usar Amazon Cognito para autenticar y autorizar a los usuarios desde el directorio de usuarios integrado, desde un proveedor de identidad federado, como el directorio de su empresa, o desde proveedores de identidades sociales, como Google y Facebook.

Los dos componentes principales de Amazon Cognito son los grupos de usuarios y los grupos de identidades. Los grupos de usuarios son directorios de usuarios que ofrecen opciones de registro e inicio de sesión para los usuarios de sus aplicaciones web y móviles. Los grupos de identidades proporcionan AWS credenciales temporales para permitir que los usuarios accedan a otros AWS servicios.

Cuándo usar Amazon Cognito

Amazon Cognito es una buena opción si necesita una solución de administración de usuarios segura y rentable para sus aplicaciones web y móviles. A continuación, se muestran algunos escenarios en los que podría decidir utilizar Amazon Cognito:

  • Autenticación. Si está creando un prototipo de una aplicación o desea implementar rápidamente la funcionalidad de inicio de sesión de usuario, puede utilizar los grupos de usuarios y la interfaz de usuario alojada de Amazon Cognito para acelerar el desarrollo. Puede centrarse en las funciones principales de la aplicación, mientras que Amazon Cognito se encarga del registro, el inicio de sesión y la seguridad de los usuarios.

    Amazon Cognito admite varios métodos de autenticación, incluidos nombres de usuario y contraseñas, proveedores de identidad social y proveedores de identidad empresarial mediante SAML OpenID Connect (). OIDC

  • Administración de usuarios. Amazon Cognito admite la administración de usuarios, incluidos el registro de usuarios, la verificación y la recuperación de cuentas. Los usuarios pueden registrarse e iniciar sesión con su proveedor de identidad preferido, y usted puede personalizar el proceso de registro según los requisitos de su aplicación.

  • Acceso seguro a AWS los recursos. Amazon Cognito se integra para proporcionar un control de acceso detallado IAM a los recursos. AWS Puede definir IAM funciones y políticas para controlar el acceso a los AWS servicios en función de la identidad del usuario y la pertenencia a un grupo.

  • Identidad federada. Amazon Cognito admite la identidad federada, que permite a un usuario iniciar sesión con sus identidades sociales o empresariales existentes. Esto elimina la necesidad de que los usuarios creen nuevas credenciales para su aplicación, por lo que mejora la experiencia del usuario y reduce las complicaciones durante el proceso de registro.

  • Aplicaciones móviles y web. Amazon Cognito es ideal para aplicaciones web y móviles. Ofrece SDKs varias plataformas y facilita la integración de la autenticación y el control de acceso en el código de la aplicación. Admite el acceso sin conexión y la sincronización de aplicaciones móviles, de modo que los usuarios pueden acceder a sus datos incluso sin conexión a Internet.

  • Escalabilidad. Amazon Cognito es un servicio totalmente gestionado y de alta disponibilidad que puede ampliarse a millones de usuarios. Procesa más de 100 000 millones de autenticaciones al mes.

  • Seguridad. Amazon Cognito tiene varias funciones de seguridad integradas, como el cifrado de datos confidenciales, la autenticación multifactor (MFA) y la protección contra los ataques web habituales, como las secuencias de comandos entre sitios (XSS) y la falsificación de solicitudes entre sitios (). CSRF Amazon Cognito también ofrece funciones de seguridad avanzadas, como la autenticación adaptativa, la comprobación del uso de credenciales comprometidas y la personalización del token de acceso.

  • Integración con los AWS servicios existentes. Amazon Cognito se integra perfectamente con AWS los servicios. Esto puede simplificar el desarrollo y agilizar la administración de usuarios para una funcionalidad que depende de AWS los recursos.

El siguiente diagrama ilustra algunos de estos escenarios.

Uso de Amazon Cognito como gestión de identidad y acceso de los clientes () CIAM
  1. La aplicación se autentica con los grupos de usuarios de Amazon Cognito y obtiene los tokens.

  2. La aplicación utiliza los grupos de identidades de Amazon Cognito para intercambiar tokens por AWS credenciales.

  3. La aplicación accede a los AWS servicios con credenciales.

Le recomendamos que utilice Amazon Cognito siempre que necesite añadir capacidades de autenticación, autorización y administración de usuarios a sus aplicaciones web o móviles, especialmente si tiene varios proveedores de identidad, necesita un acceso seguro a AWS los recursos y tiene requisitos de escalabilidad.

Consideraciones sobre el diseño
  • Cree un grupo de usuarios o un grupo de identidades de Amazon Cognito en función de sus requisitos.

  • No actualice el perfil de usuario con demasiada frecuencia (por ejemplo, con cada solicitud de inicio de sesión). Si es necesaria una actualización, almacene los atributos actualizados en una base de datos externa, como Amazon DynamoDB.

  • No utilice la gestión de identidad de los empleados de Amazon Cognito.

  • Su aplicación siempre debe validar los JSON Web Tokens (JWTs) antes de confiar en ellos, verificando su firma y validez. Esta validación debe realizarse por parte del cliente sin enviar API llamadas al grupo de usuarios. Una vez verificado el token, puedes confiar en las afirmaciones que contiene y utilizarlas en lugar de realizar getUser API llamadas adicionales. Para obtener más información, consulte Verificación de un token JSON web en la documentación de Amazon Cognito. También puede usar JWTbibliotecas adicionales para la verificación de los tokens.

  • Active las funciones de seguridad avanzadas de Amazon Cognito solo si no utiliza un CUSTOM_AUTH flujo, activadores AWS Lambda para desafíos de autenticación personalizados o inicio de sesión federado. Para conocer las consideraciones y limitaciones relacionadas con las funciones de seguridad avanzadas, consulte la documentación de Amazon Cognito.

  • Permita AWS WAF proteger los grupos de usuarios de Amazon Cognito mediante el uso de reglas basadas en tasas y la combinación de varios parámetros de solicitud. Para obtener más información, consulte la entrada del AWS blog Proteja su grupo de usuarios de Amazon Cognito con. AWS WAF

  • Si desea un nivel de protección adicional, utilice un CloudFront proxy de Amazon para procesar y validar aún más las solicitudes entrantes, tal y como se explica en la entrada del AWS blog Proteja los clientes públicos de Amazon Cognito mediante un proxy de Amazon CloudFront.

  • Todas las API llamadas tras el inicio de sesión del usuario deben realizarse desde los servicios de backend. Por ejemplo, se utiliza AWS WAF para denegar las llamadas al servidor de la aplicación yUpdateUserAttribute, en su lugar, llamar AdminUpdateUserAttribute desde el servidor de la aplicación para actualizar el atributo de usuario.

  • Al crear un grupo de usuarios, usted elige cómo iniciarán sesión los usuarios, por ejemplo, con un nombre de usuario, una dirección de correo electrónico o un número de teléfono. Esta configuración no se puede cambiar una vez creado el grupo de usuarios. Del mismo modo, los atributos personalizados no se pueden cambiar ni eliminar después de agregarlos al grupo de usuarios.

  • Le recomendamos que habilite la autenticación multifactorial (MFA) en su grupo de usuarios.

  • Amazon Cognito no ofrece actualmente funciones integradas de copia de seguridad o exportación. Para hacer copias de seguridad o exportar los datos de sus usuarios, puede utilizar la arquitectura de referencia de exportación de perfiles de Amazon Cognito.

  • Utilice IAM los roles para el acceso general a AWS los recursos. Para obtener requisitos de autorización detallados, usa Amazon Verified Permissions. Este servicio de administración de permisos se integra de forma nativa con Amazon Cognito. También puede utilizar la personalización del token de acceso para enriquecer las afirmaciones específicas de la aplicación a fin de determinar el nivel de acceso y el contenido disponible para el usuario. Si su aplicación utiliza Amazon API Gateway como punto de entrada, utilice la función Amazon Cognito para proteger Amazon API Gateway mediante los permisos verificados de Amazon. Este servicio administra y evalúa las políticas de seguridad detalladas que hacen referencia a los atributos y grupos de los usuarios. Puede asegurarse de que solo los usuarios de los grupos autorizados de Amazon Cognito tengan acceso a la aplicación. APIs Para obtener más información, consulta el artículo Proteger API Gateway con los permisos verificados de Amazon en el sitio web de la AWS comunidad.

  • Se utiliza AWS SDKs para acceder a los datos de los usuarios desde el backend llamando y recuperando los atributos, los estados y la información de los grupos de los usuarios. Puede almacenar datos de aplicaciones personalizados en los atributos de usuario de Amazon Cognito y mantenerlos sincronizados en todos los dispositivos.

En las siguientes secciones se analizan tres patrones de integración de Amazon Cognito con otros AWS servicios: Application Load Balancers, Amazon API Gateway y Amazon Service. OpenSearch

Integración con un Application Load Balancer

Puede configurar un Application Load Balancer con Amazon Cognito para autenticar a los usuarios de la aplicación, como se muestra en el siguiente diagrama.

Configuración de un Application Load Balancer con Amazon Cognito para la gestión de la identificación

Al configurar la regla predeterminada del HTTPS listener, puede transferir la identificación del usuario al Application Load Balancer y crear un proceso de autenticación automático. Para obtener más información, consulte Cómo configurar un Application Load Balancer para autenticar a los usuarios a través de un grupo de usuarios de Amazon Cognito en el Knowledge Center. AWS Si su aplicación está alojada en Kubernetes, consulte la entrada del AWS blog Cómo usar Application Load Balancer y Amazon Cognito para autenticar a los usuarios de sus aplicaciones web de Kubernetes. 

Integración con Amazon API Gateway

Amazon API Gateway es un servicio de API pasarela totalmente gestionado y basado en la nube que facilita la creación, publicación y administración APIs a escala. Es un punto de entrada para el tráfico de usuarios a los servicios de backend. Puede integrar Amazon Cognito con API Gateway para implementar la autenticación y el control de acceso, ya sea para APIs protegerlos del uso indebido o para cualquier otro caso de uso empresarial o de seguridad. Puede implementar la autenticación y el control de acceso para proteger API Gateway APIs mediante un autorizador de Amazon Cognito, Amazon Verified Permissions o un autorizador Lambda. En la siguiente tabla se describe cómo estos tres enfoques respaldan la autorización.

Tipo de autorizador Autorización admitida

Autorizador de Amazon Cognito

Token de acceso: ámbitos

Token de identificación: validez

Permisos verificados: autorizador Lambda

Verified Permissions valida el token (firma, caducidad) del token configurado.

Token de acceso: cualquier atributo simple, atributo complejo, ámbito o grupo.

Token de identificación: cualquier atributo simple, atributo complejo, ámbito o grupo.

Las políticas también pueden usar datos contextuales para la autorización de confianza cero (por ejemplo, la dirección IP, el contexto de la solicitud o la huella digital del dispositivo).

Autorizador Lambda personalizado

Puede implementar un esquema personalizado de validación y autorización de tokens.

Autorizador de Amazon Cognito

Puede integrar Amazon Cognito con API Gateway para implementar la autenticación y el control de acceso, como se muestra en el siguiente diagrama. El autorizador de Amazon Cognito valida el JSON Web Token (JWT) generado por Amazon Cognito y autoriza las solicitudes en función de los ámbitos personalizados del token de acceso o de un token de identificación válido. Para obtener más información sobre la implementación, consulte ¿Cómo configuro un grupo de usuarios de Amazon Cognito como autorizador en una puerta de enlace? API REST API en la base de AWS conocimientos.

Uso de un autorizador de Amazon Cognito con API Gateway para la gestión de la identificación

Permisos verificados: autorizador Lambda

Puede usar Amazon Verified Permissions para integrar Amazon Cognito o su propio proveedor de identidad con API Gateway para la autenticación y el control de acceso detallado. Los permisos verificados admiten la validación de identificadores y tokens de acceso desde Amazon Cognito o cualquier proveedor de OpenID Connect (OIDC) y pueden autorizar el acceso en función de atributos de token simples, atributos de token complejos (como matrices o JSON estructuras), ámbitos y pertenencia a grupos. Para empezar a proteger API Gateway REST APIs mediante permisos verificados, consulte la entrada del blog sobre AWS seguridad Authorize API Gateway APIs using Amazon Verified Permissions with Amazon Cognito o traiga su propio proveedor de identidad y el vídeo Amazon Verified Permissions: Quick Start Overview and Demo.

Uso de un autorizador Lambda de permisos verificados con API Gateway para la administración de la identificación

Autorizador de Lambda

Puede usar un autorizador AWS Lambda para implementar un esquema de autorización personalizado. Su esquema puede usar los parámetros de solicitud para determinar la identidad de la persona que llama o usar una estrategia de autenticación mediante un token portador, como o. OAuth SAML Esta opción proporciona la máxima flexibilidad, pero requiere que codifique la lógica para proteger su. APIs Para obtener más información, consulte Uso de autorizadores Lambda de API Gateway en la API documentación de Gateway.

Integración con Amazon OpenSearch Service

Puede utilizar Amazon Cognito para proteger los dominios de Amazon OpenSearch Service. Por ejemplo, si un usuario pudiera necesitar acceder a los OpenSearch paneles de control desde Internet, como se muestra en el siguiente diagrama. En este escenario, Amazon Cognito puede proporcionar permisos de acceso, incluidos permisos detallados, asignando grupos y usuarios de Amazon Cognito a permisos de servicio internos. OpenSearch Para obtener más información, consulte Configuración de la autenticación de Amazon Cognito para OpenSearch paneles en la documentación del OpenSearch servicio.

Uso de Amazon Cognito para proteger los dominios de Amazon Service OpenSearch