O que é o Amazon Cognito? - Amazon Cognito

O que é o Amazon Cognito?

O Amazon Cognito é uma plataforma de identidade para aplicações web e aplicativos móveis. É um diretório de usuários, um servidor de autenticação e um serviço de autorização para credenciais da AWS e tokens de acesso do OAuth 2.0. Com o Amazon Cognito, você pode autenticar e autorizar usuários do diretório de usuários integrado, de seu diretório corporativo e de provedores de identidades de consumidores, como Google e Facebook.

Os dois componentes a seguir formam o Amazon Cognito. Eles operam de maneira independente ou em conjunto, com base nas necessidades de acesso dos usuários.

Grupos de usuários

Amazon Cognito user pool authentication flow with app, identity provider, and API/Database.

Crie um grupo de usuários quando quiser autenticar e autorizar usuários em sua aplicação ou API. Os grupos de usuários são um diretório de usuários com criação, gerenciamento e autenticação de usuários por autoatendimento e orientados pelo administrador. O grupo de usuários pode ser um diretório independente e um provedor de identidades (IdP) OIDC e um provedor de serviços (SP) intermediário para provedores de terceiros de identidades de funcionários e clientes. É possível fornecer autenticação única (SSO) em sua aplicação para as identidades da força de trabalho da sua organização nos IdPs do SAML 2.0 e do OIDC com grupos de usuários. Você também pode fornecer autenticação única (SSO) em sua aplicação para identidades de clientes da sua organização nas lojas públicas de identidades do OAuth 2.0 da Amazon, do Google, da Apple e do Facebook. Para obter mais informações sobre o gerenciamento de identidade e acesso de cliente (CIAM), consulte What is CIAM?.

Os grupos de usuários não exigem integração com um banco de identidades. Em um grupo de usuários, você pode emitir tokens web JSON (JWTs) autenticados diretamente para uma aplicação, um servidor web ou uma API.

Bancos de identidades

Diagram showing Amazon Cognito federated identities flow between app, identity pool, provider, and STS.

Configure um banco de identidades do Amazon Cognito quando quiser autorizar usuários autenticados ou anônimos a acessar seus recursos da AWS. Um banco de identidades emite credenciais da AWS para que sua aplicação forneça recursos aos usuários. Você pode autenticar usuários com um provedor de identidades confiável, como um grupo de usuários ou um serviço SAML 2.0. Ele também pode emitir credenciais para usuários convidados. Os bancos de identidades usam controle de acesso por atributo e função com a finalidade de gerenciar a autorização dos usuários para acessar seus recursos da AWS.

Os bancos de identidades não exigem integração com um grupo de usuários. Um banco de identidades pode aceitar declarações autenticadas diretamente dos fornecedores de identidade de funcionários e consumidores.

Um grupo de usuários do Amazon Cognito e um banco de identidades usados juntos

No diagrama que inicia este tópico, você usa o Amazon Cognito para autenticar o usuário e, depois, conceder a ele acesso a um AWS service (Serviço da AWS).

  1. O usuário da aplicação faz login por meio de um grupo de usuários e recebe tokens OAuth 2.0.

  2. Sua aplicação troca um token de grupo de usuários com um banco de identidades por credenciais temporárias da AWS que você pode usar com APIs da AWS e a AWS Command Line Interface (AWS CLI).

  3. Sua aplicação atribui a sessão de credenciais ao usuário e concede acesso autorizado a Serviços da AWS, como o Amazon S3 e o Amazon DynamoDB.

Para ter mais exemplos que usam bancos de identidades e grupos de usuários, consulte Cenários comuns do Amazon Cognito.

No Amazon Cognito, a obrigação de segurança da nuvem do modelo de responsabilidade compartilhada está em conformidade com SOC 1 a 3, PCI DSS e ISO 27001 e é elegível para HIPAA-BAA. Você pode projetar a segurança na nuvem no Amazon Cognito para estar em conformidade com SOC 1 a 3, ISO 27001 e HIPAA-BAA, mas não com PCI DSS. Para mais informações, consulte Serviços da AWS no escopo. Consulta também Considerações sobre dados regionais.

Recursos do Amazon Cognito

Grupos de usuários

Um grupo de usuários do Amazon Cognito é um diretório de usuários. Com um grupo de usuários, os usuários podem fazer login na aplicação web ou no aplicativo móvel por meio do Amazon Cognito ou federar por meio de um IdP de terceiros. Os usuários federados e locais têm um perfil de usuário no grupo de usuários.

Os usuários locais são aqueles que se inscreveram ou que você criou diretamente no grupo de usuários. Você pode gerenciar e personalizar esses perfis de usuário no AWS Management Console, em um AWS SDK ou na AWS Command Line Interface (AWS CLI).

Os grupos de usuários do Amazon Cognito aceitam tokens e declarações de IdPs de terceiros e coletam os atributos do usuário em um JWT que ele emite para sua aplicação. Você pode padronizar sua aplicação em um conjunto de JWTs enquanto o Amazon Cognito lida com as interações com os IdPs, correlacionando as respectivas declarações com um formato de token central.

Um grupo de usuários do Amazon Cognito pode ser um IdP independente. O Amazon Cognito utiliza o padrão OpenID Connect (OIDC) para gerar JWTs para autenticação e autorização. Quando você faz login de usuários locais, o grupo de usuários é oficial para esses usuários. Você tem acesso aos recursos a seguir ao autenticar usuários locais.

  • Implemente um front-end web próprio que chama a API de grupos de usuários do Amazon Cognito para autenticar, autorizar e gerenciar os usuários.

  • Configure a autenticação multifator (MFA) para os usuários. O Amazon Cognito aceita senha de uso único com marcação temporal (TOTP) e MFA de mensagens SMS.

  • Proteja-se contra o acesso de contas de usuários mal-intencionados que estão sob controle.

  • Crie seus próprios fluxos personalizados de autenticação em várias etapas.

  • Procure usuários em outro diretório e migre-os para o Amazon Cognito.

Um grupo de usuários do Amazon Cognito também pode desempenhar uma função dupla como provedor de serviços (SP) para seus IdPs e como IdP para a aplicação. Os grupos de usuários do Amazon Cognito podem se conectar a IdPs de consumidores, como Facebook e Google, ou IdPs de funcionários, como Okta e Active Directory Federation Services (ADFS).

Com os tokens OAuth 2.0 e OpenID Connect (OIDC) emitidos por um grupo de usuários do Amazon Cognito, você pode:

  • Aceitar um token de ID em sua aplicação que autentique um usuário e forneça as informações necessárias para configurar o perfil do usuário.

  • Aceitar um token de acesso em sua API com os escopos do OIDC que autorizam chamadas de API dos usuários.

  • Recuperar credenciais da AWS de um banco de identidades do Amazon Cognito.

Recursos de grupos de usuários do Amazon Cognito
Atributo Descrição
OIDC IdP Issue ID tokens to authenticate users
Authorization server Issue access tokens to authorize user access to APIs
SAML 2.0 SP Transform SAML assertions into ID and access tokens
OIDC SP Transform OIDC tokens into ID and access tokens
OAuth 2.0 SP Transform ID tokens from Apple, Facebook, Amazon, or Google to your own ID and access tokens
Authentication frontend service Sign up, manage, and authenticate users with the hosted UI
API support for your own UI Create, manage and authenticate users through API requests in supported AWS SDKs¹
MFA Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹
Security monitoring & response Secure against malicious activity and insecure passwords¹
Customize authentication flows Build your own authentication mechanism, or add custom steps to existing flows¹
Groups Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools
Customize ID tokens Customize your ID tokens with new, modified, and suppressed claims
Customize user attributes Assign values to user attributes and add your own custom attributes

¹ O recurso está disponível somente para usuários locais.

Para mais informações sobre grupos de usuários, consulte Conceitos básicos dos grupos de usuários e a Referências da API de grupos de usuários do Amazon Cognito Sync.

Bancos de identidades

Um banco de identidades é um conjunto de identificadores exclusivos, ou identidades, que você atribui a usuários ou convidados e que os autorizam a receber credenciais temporárias da AWS. Ao apresentar uma prova de autenticação em um banco de identidades em forma de declarações confiáveis de um provedor de identidades (IdP) social SAML 2.0, OpenID Connect (OIDC) ou OAuth 2.0, você associa o usuário a uma identidade no banco de identidades. O token que o banco de identidades cria para a identidade pode recuperar credenciais de sessão temporárias do AWS Security Token Service (AWS STS).

Para complementar as identidades autenticadas, você também pode configurar um banco de identidades para autorizar o acesso da AWS sem a autenticação do IdP. Você pode oferecer sua própria prova de autenticação personalizada ou nenhuma autenticação. É possível conceder credenciais temporárias da AWS a qualquer usuário da aplicação que as solicite, com identidades não autenticadas. Os bancos de identidades também aceitam declarações e emitem credenciais com base em seu próprio esquema personalizado, com identidades autenticadas pelo desenvolvedor.

Com os bancos de identidades do Amazon Cognito, você tem duas maneiras de se integrar às políticas do IAM em sua Conta da AWS. Você pode usar esses dois recursos juntos ou individualmente.

Controle de acesso com base em função

Quando o usuário transmite declarações ao banco de identidades, o Amazon Cognito escolhe o perfil do IAM que ele solicita. Para personalizar as permissões do perfil de acordo com suas necessidades, aplique as políticas do IAM a cada perfil. Por exemplo, se o usuário demonstrar que está no departamento de marketing, ele receberá credenciais para um perfil com políticas adaptadas às necessidades de acesso do departamento de marketing. O Amazon Cognito pode solicitar um perfil padrão, um perfil baseado em regras que consultam as declarações do usuário ou um perfil baseado na associação do usuário a um grupo de usuários. Você também pode configurar a política de confiança do perfil para que o IAM confie somente em seu banco de identidades para gerar sessões temporárias.

Atributos para controle de acesso

Seu banco de identidades lê os atributos das declarações do usuário e os correlaciona às tags de entidade principal na sessão temporária do usuário. Depois, você pode configurar as políticas baseadas em recursos do IAM para permitir ou negar acesso a recursos com base em entidades principais do IAM que carregam as tags de sessão do banco de identidades. Por exemplo, se o usuário demonstrar que está no departamento de marketing, o AWS STS marcará a sessão dele como Department: marketing. Seu bucket do Amazon S3 permite operações de leitura com base em uma condição aws:PrincipalTag que exige um valor de marketing para a tag Department.

Recursos de bancos de identidades do Amazon Cognito
Atributo Descrição
Amazon Cognito user pool SP Exchange an ID token from your user pool for web identity credentials from AWS STS
SAML 2.0 SP Exchange SAML assertions for web identity credentials from AWS STS
OIDC SP Exchange OIDC tokens for web identity credentials from AWS STS
OAuth 2.0 SP Exchange OAuth tokens from Amazon, Facebook, Google, Apple, and Twitter for web identity credentials from AWS STS
Custom SP With AWS credentials, exchange claims in any format for web identity credentials from AWS STS
Unauthenticated access Issue limited-access web identity credentials from AWS STS without authentication
Role-based access control Choose an IAM role for your authenticated user based on their claims, and configure your roles to only be assumed in the context of your identity pool
Attribute-based access control Convert claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags

Para mais informações sobre grupos de identidades, consulte Conceitos básicos dos bancos de identidades do Amazon Cognito e a Referências da API de grupos de identidades do Amazon Cognito Sync.

Comparação entre grupos de usuários e bancos de identidades do Amazon Cognito

Atributo Descrição Grupos de usuários Bancos de identidades
OIDC IdP Issue OIDC ID tokens to authenticate app users
API authorization server Issue access tokens to authorize user access to APIs, databases, and other resources that accept OAuth 2.0 authorization scopes
IAM web identity authorization server Generate tokens that you can exchange with AWS STS for temporary AWS credentials
SAML 2.0 SP & OIDC IdP Issue customized OIDC tokens based on claims from a SAML 2.0 IdP
OIDC SP & OIDC IdP Issue customized OIDC tokens based on claims from an OIDC IdP
OAuth 2.0 SP & OIDC IdP Issue customized OIDC tokens based on scopes from OAuth 2.0 social providers like Apple and Google
SAML 2.0 SP & credentials broker Issue temporary AWS credentials based on claims from a SAML 2.0 IdP
OIDC SP & credentials broker Issue temporary AWS credentials based on claims from an OIDC IdP
OAuth 2.0 SP & credentials broker Issue temporary AWS credentials based on scopes from OAuth 2.0 social providers like Apple and Google
Amazon Cognito user pool SP & credentials broker Issue temporary AWS credentials based on OIDC claims from an Amazon Cognito user pool
Custom SP & credentials broker Issue temporary AWS credentials based on developer IAM authorization
Authentication frontend service Sign up, manage, and authenticate users with the hosted UI
API support for your own authentication UI Create, manage and authenticate users through API requests in supported AWS SDKs¹
MFA Use SMS messages, TOTPs, or your user's device as an additional authentication factor¹
Security monitoring & response Protect against malicious activity and insecure passwords¹
Customize authentication flows Build your own authentication mechanism, or add custom steps to existing flows¹
Groups Create logical groupings of users, and a hierarchy of IAM role claims when you pass tokens to identity pools
Customize ID tokens Customize your ID tokens with new, modified, and suppressed claims
AWS WAF web ACLs Monitor and control requests to your authentication environment with AWS WAF
Customize user attributes Assign values to user attributes and add your own custom attributes
Unauthenticated access Issue limited-access web identity credentials from AWS STS without authentication
Role-based access control Choose an IAM role for your authenticated user based on their claims, and configure your roles to only be assumed in the context of your identity pool
Attribute-based access control Transform user claims into principal tags for your AWS STS temporary session, and use IAM policies to filter resource access based on principal tags

¹ O recurso está disponível somente para usuários locais.

Conceitos básicos do Amazon Cognito

Veja exemplos de aplicações de grupos de usuários em Conceitos básicos dos grupos de usuários.

Para obter uma introdução aos bancos de identidades, consulte Conceitos básicos dos bancos de identidades do Amazon Cognito.

Para obter links para experiências de configuração guiada com grupos de usuários e bancos de identidades, consulte Opções de configuração guiada para o Amazon Cognito.

Para vídeos, artigos, documentação e mais exemplos de aplicações, consulte Recursos do desenvolvedor do Amazon Cognito.

Para usar o Amazon Cognito, você precisa de uma Conta da AWS. Para ter mais informações, consulte Conceitos básicos do AWS.

Disponibilidade regional

O Amazon Cognito está disponível em várias regiões da AWS em todo o mundo. Em cada região, o Amazon Cognito é distribuído em várias zonas de disponibilidade. Essas zonas de disponibilidade são fisicamente isoladas umas das outras, mas são unidas por conexões de rede privadas, de baixa latência, de alta taxa de transferência e altamente redundantes. Essas zonas de disponibilidade permitem que a AWS forneça serviços, incluindo o Amazon Cognito, com níveis muito altos de disponibilidade e redundância, além de minimizar a latência.

Para ver se o Amazon Cognito está disponível atualmente em alguma Região da AWS, consulte Serviços por região da AWS.

Para saber mais sobre endpoints de serviços de API regionais, consulte Endpoints de serviço da AWS no Referência geral da Amazon Web Services.

Para saber mais sobre quantas zonas de disponibilidade estão disponíveis em cada região, consulte Infraestrutura global da AWS.

Preços do Amazon Cognito

Para informações sobre preços do Amazon Cognito, consulte preços do Amazon Cognito.