Perfis do IAM - Amazon Cognito

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Perfis do IAM

No processo de criação de um grupo de identidades, será solicitado que você atualize as funções do IAM assumidas por seus usuários. As funções do IAM funcionam assim: quando um usuário faz login no seu aplicativo, o Amazon Cognito gera AWS credenciais temporárias para o usuário. Essas credenciais temporárias são associadas a uma função do IAM específica. Com a função do IAM, você pode definir um conjunto de permissões para acessar seus AWS recursos.

Você pode especificar funções do IAM padrão para usuários autenticados e não autenticados. Além disso, você pode definir regras para escolher a função de cada usuário com base em reivindicações no token de ID do usuário. Para ter mais informações, consulte Controle de acesso com base em perfil.

Por padrão, o console do Amazon Cognito cria funções do IAM que fornecem acesso ao Amazon Mobile Analytics e ao Amazon Cognito Sync. Se desejar, você pode optar por usar as funções do IAM existentes.

Modifique as funções do IAM para permitir ou restringir o acesso a outros serviços. Para isso, faça login no console do IAM. Em seguida, clique em Roles (Funções) e selecione uma função. As políticas anexadas à função selecionada são listadas na guia Permissions (Permissões). Você pode personalizar uma política de acesso clicando no link Manage Policy (Gerenciar política) correspondente. Para saber mais sobre o uso e a definição de políticas, consulte Visão geral de políticas do IAM.

nota

Como uma prática recomendada, defina políticas que sigam os princípios da concessão do privilégio mínimo. Em outras palavras, as políticas incluem somente as permissões que os usuários exigem para executar suas tarefas. Para obter mais informações, consulte Conceder privilégio mínimo no Guia do usuário do IAM.

Lembre-se de que identidades não autenticadas são assumidas por usuários que não fazem login no seu aplicativo. Normalmente, as permissões que você atribui para identidades não autenticadas devem ser mais restritivas do que aquelas para identidades autenticadas.

Configurar uma política de confiança

O Amazon Cognito utiliza as funções do IAM para gerar credenciais temporárias para os usuários de sua aplicação. O acesso a permissões é controlado pelos relacionamentos de confiança de uma função. Saiba mais sobre Permissões e confiança de função.

O token apresentado AWS STS é gerado por um grupo de identidades, que traduz um token de grupo de usuários, rede social ou provedor OIDC, ou uma declaração SAML, em seu próprio token. O token do banco de identidades contém uma declaração aud que é o ID do banco de identidades.

O exemplo de política de confiança de funções a seguir permite que o diretor do serviço federado chame cognito-identity.amazonaws.com a AWS STS APIAssumeRoleWithWebIdentity. A solicitação só será bem-sucedida se o token do banco de identidades na solicitação da API tiver as declarações a seguir.

  1. Uma declaração aud do ID do banco de identidades us-west-2:abcdefg-1234-5678-910a-0e8443553f95.

  2. Uma declaração amr de authenticated adicionada quando o usuário faz login e não é um usuário convidado.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:abcdefg-1234-5678-910a-0e8443553f95" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }

Políticas de confiança para funções do IAM na autenticação básica (clássica)

Você deve aplicar pelo menos uma condição que limite as políticas de confiança para funções que você usa com grupos de identidades. Quando você cria ou atualiza políticas de confiança de funções para grupos de identidades, o IAM retorna um erro se você tentar salvar suas alterações sem pelo menos uma chave de condição que limite as identidades de origem. AWS STS não permite AssumeRoleWithWebIdentityoperações entre contas, de grupos de identidades a funções do IAM que não tenham uma condição desse tipo.

Este tópico inclui várias condições que limitam as identidades de origem para grupos de identidades. Para obter uma lista completa, consulte Chaves disponíveis para federação de identidades AWS da web.

Na autenticação básica ou clássica com um grupo de identidades, você pode solicitar qualquer função do IAM AWS STS se ela tiver a política de confiança correta. No mínimo, a política de confiança deve permitir que o diretor do serviço assuma cognito-identity.amazonaws.com a função. A autenticação de fluxo aprimorado exige que a função do IAM esteja na Conta da AWS mesma do grupo de identidades, mas esse não é o caso na autenticação básica.

O token que um grupo de identidades emite para uma identidade está vinculado ao Conta da AWS do grupo de identidades. Quando você apresenta um token do grupo de identidades em uma solicitação de AssumeRoleWithWebIdentityAPI, AWS STS verifica se o grupo de identidades de origem está na Conta da AWS mesma função do IAM. Se AWS STS determinar que a solicitação é entre contas, ela verifica se a política de confiança da função tem pelo menos uma condição que limita as identidades de origem. A chamada assume-role falhará se essas condições não estiverem presentes na política de confiança da função. Esse comportamento não afeta as políticas de confiança de funções que não têm condições para identidades de origem, mas são usadas somente com grupos de identidades nas mesmas Conta da AWS. Como prática recomendada, sempre aplique uma condição desse tipo às políticas de confiança das funções do seu grupo de identidades.

Condições adicionais da política de confiança

Reutilizar funções entre grupos de identidades

Para reutilizar uma função entre vários grupos de identidades, pois eles compartilham o mesmo conjunto de permissões, você pode incluir vários grupos de identidades, como:

"StringEquals": { "cognito-identity.amazonaws.com:aud": [ "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "us-east-1:98765432-dcba-dcba-dcba-123456790ab" ] }
Limitar o acesso a identidades específicas

Para criar uma política limitada a um conjunto específico de usuários de aplicativo, verifique o valor de cognito-identity.amazonaws.com:sub:

"StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] }
Limitar o acesso a provedores específicos

Para criar uma política limitada a usuários que fizeram login com um provedor específico (talvez seu próprio provedor de login), verifique o valor de cognito-identity.amazonaws.com:amr:

"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "login.myprovider.myapp" }

Por exemplo, um aplicativo que confia somente no Facebook, teria a seguinte cláusula amr:

"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }

Políticas de acesso

As permissões que você atribui a um perfil se aplicam a todos os usuários que assumem esse perfil. Para particionar o acesso dos usuários, use condições e variáveis de política. Para obter mais informações, consulte Elementos de política do IAM: variáveis e etiquetas. Você pode usar a condição sub para restringir ações aos IDs de identidade do Amazon Cognito nas políticas de acesso. Use essa opção com cuidado, principalmente para identidades não autenticadas, que não têm um ID de usuário consistente. Para obter mais informações sobre as variáveis de política do IAM para federação da web com o Amazon Cognito, consulte IAM e chaves de contexto de AWS STS condição no Guia do AWS Identity and Access Management usuário.

Para proteção de segurança adicional, o Amazon Cognito aplica uma política de restrição de acesso às credenciais que você atribui a usuários não autenticados no fluxo avançado, usando GetCredentialsForIdentity. A política de restrição de acesso adiciona um Política de sessão em linha e um AWS política de sessão gerenciada às políticas do IAM que você aplica ao perfil não autenticado. Como você deve conceder acesso em ambas as políticas do IAM para o perfil e as políticas de sessão, a política de restrição de acesso limita o acesso dos usuários a serviços diferentes dos indicados na lista a seguir.

nota

No fluxo básico (clássico), você faz sua própria solicitação da API AssumeRoleWithWebIdentity e pode aplicar essas restrições à solicitação. Como prática recomendada de segurança, não atribua nenhuma permissão acima dessa política de restrição de acesso a usuários não autenticados.

O Amazon Cognito também impede que usuários autenticados e não autenticados façam solicitações de API aos bancos de identidades do Amazon Cognito e ao Amazon Cognito Sync. Outros Serviços da AWS podem impor restrições ao acesso ao serviço a partir de identidades da web.

Em uma solicitação bem-sucedida com o fluxo avançado, o Amazon Cognito faz uma solicitação da API AssumeRoleWithWebIdentity em segundo plano. Entre os parâmetros dessa solicitação, o Amazon Cognito inclui o seguinte.

  1. ID de identidade do usuário.

  2. O ARN do perfil do IAM que o usuário deseja assumir.

  3. Um parâmetro policy que adiciona uma política de sessão em linha.

  4. Um PolicyArns.member.N parâmetro cujo valor é uma política AWS gerenciada que concede permissões adicionais na Amazon CloudWatch.

Serviços que usuários não autenticados podem acessar

Quando você usa o fluxo aprimorado, as políticas de redução de escopo que o Amazon Cognito aplica à sessão do usuário impedem que ele use qualquer serviço diferente dos listados na tabela a seguir. Para um subconjunto de serviços, somente ações específicas são permitidas.

Categoria Serviço

Análises

Amazon Data Firehose

Amazon Managed Service for Apache Flink

Integração de aplicativo

Amazon Simple Queue Service

AR e VR

Amazon Sumerian¹

Aplicativos de negócios

Amazon Mobile Analytics

Amazon Simple Email Service

Computação

AWS Lambda

Criptografia e PKI

AWS Key Management Service¹

Banco de dados

Amazon DynamoDB

Amazon SimpleDB

Web e móvel de front-end

AWS AppSync

Amazon Location Service

Amazon Simple Notification Service

Amazon Pinpoint

Desenvolvimento de jogos

Amazon GameLift

Internet das Coisas (IoT)

AWS IoT

Machine Learning

Amazon CodeWhisperer

Amazon Comprehend

Amazon Lex

Amazon Machine Learning

Amazon Personalize

Amazon Polly

Amazon Rekognition

Amazon SageMaker ¹

Amazon Textract¹

Amazon Transcribe

Amazon Translate

Gerenciamento e governança

Amazon CloudWatch

CloudWatch Registros da Amazon

Redes e entrega de conteúdo

Amazon API Gateway

Segurança, identidade e conformidade

Grupos de usuários do Amazon Cognito

Armazenamento

Amazon Simple Storage Service

¹ Para a tabela a seguir, a política Serviços da AWS em linha concede um subconjunto de ações. A tabela exibe as ações disponíveis em cada uma delas.

AWS service (Serviço da AWS) Permissões máximas para usuários não autenticados de fluxo avançado
AWS Key Management Service

Encrypt

Decrypt

ReEncrypt

GenerateDataKey

Amazon SageMaker

InvokeEndpoint

Amazon Textract

DetectDocumentText

AnalyzeDocument

Amazon Sumerian

View*

Para conceder acesso Serviços da AWS além dessa lista, ative o fluxo de autenticação básico (clássico) em seu grupo de identidades. Se os usuários receberem erros NotAuthorizedException de Serviços da AWS que forem permitidos pelas políticas atribuídas ao perfil do IAM para usuários não autenticados, avalie se você pode remover esse serviço de seu caso de uso. Se você não conseguir, mude para o fluxo básico.

A política de sessão em linha

A política de sessão em linha impede que as permissões efetivas de seu usuário incluam o acesso a qualquer pessoa Serviços da AWS externa na lista a seguir. Você também deve conceder permissões a eles Serviços da AWS nas políticas que você aplica à função do IAM do usuário. As permissões efetivas de um usuário para uma sessão de perfil assumido são a interseção das políticas atribuídas ao perfil e a política de sessão. Para ter mais informações, consulte Políticas de sessão no Guia do usuário do AWS Identity and Access Management .

O Amazon Cognito adiciona a política em linha a seguir às sessões dos usuários nas  Regiões da AWS que estão habilitadas por padrão.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:*", "logs:*", "dynamodb:*", "kinesis:*", "mobileanalytics:*", "s3:*", "ses:*", "sns:*", "sqs:*", "lambda:*", "machinelearning:*", "execute-api:*", "iot:*", "gamelift:*", "scs:*", "cognito-identity:*", "cognito-idp:*", "lex:*", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "appsync:*", "personalize:*", "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "sagemaker:InvokeEndpoint", "cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*" ], "Resource": [ "*" ] } ] }

Para todas as outras regiões, a política de redução do escopo em linha inclui tudo o que está listado nas regiões padrão, exceto as declarações Action a seguir.

"cognito-sync:*", "sumerian:View*", "codewhisperer:*", "textract:DetectDocumentText", "textract:AnalyzeDocument", "sdb:*"

A política de sessão AWS gerenciada

O Amazon Cognito também limita o escopo das permissões de usuários não autenticados com a política AmazonCognitoUnAuthedIdentitiesSessionPolicy gerenciada pela  AWS  para os usuários não autenticados no fluxo aprimorado. Você também deve conceder essa permissão nas políticas vinculadas ao seu perfil do IAM não autenticado.

A política gerenciada AmazonCognitoUnAuthedIdentitiesSessionPolicy contém as permissões a seguir.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "rum:PutRumEvents", "polly:*", "comprehend:*", "translate:*", "transcribe:*", "rekognition:*", "mobiletargeting:*", "firehose:*", "personalize:*", "sagemaker:InvokeEndpoint" ], "Resource": "*" }] }

Exemplos de políticas de acesso

Nesta seção, você encontrará exemplos de políticas de acesso do Amazon Cognito que concedem aos usuários as permissões necessárias para realizarem uma operação específica. Você pode limitar ainda mais as permissões de um determinado ID de identidade usando variáveis de política sempre que possível. Por exemplo, usando ${cognito-identity.amazonaws.com:sub}. Para obter mais informações, consulte Entender a autenticação do Amazon Cognito, parte 3: Funções e políticas no blog do AWS Mobile.

nota

Como prática recomendada de segurança, as políticas devem incluir somente as permissões que os usuários exigem para executar suas tarefas. Isso significa que, sempre que possível, você deve tentar definir o escopo de acesso de uma identidade individual para objetos.

Conceder acesso de leitura de identidade a um único objeto no Amazon S3

A seguinte política de acesso concede permissões de leitura a uma identidade para recuperar um único objeto de um determinado bucket do S3.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/assets/my_picture.jpg"] } ] }

Conceder a uma identidade acesso de leitura e gravação a caminhos específicos de identidade no Amazon S3

A seguinte política de acesso concede permissões de leitura e de gravação para acessar um prefixo específico "folder" em um bucket do S3 ao mapeá-lo para a variável ${cognito-identity.amazonaws.com:sub}.

Com essa política, uma identidade como us-east-1:12345678-1234-1234-1234-123456790ab inserida por ${cognito-identity.amazonaws.com:sub} poderá obter, colocar e listar objetos no arn:aws:s3:::mybucket/us-east-1:12345678-1234-1234-1234-123456790ab. No entanto, a identidade não receberia acesso a outros objetos no arn:aws:s3:::mybucket.

{ "Version": "2012-10-17", "Statement": [ { "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket"], "Condition": {"StringLike": {"s3:prefix": ["${cognito-identity.amazonaws.com:sub}/*"]}} }, { "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::mybucket/${cognito-identity.amazonaws.com:sub}/*"] } ] }

Atribuir acesso detalhado ao Amazon DynamoDB para identidades

A política de acesso a seguir fornece controle de acesso granular aos recursos do Amazon DynamoDB usando variáveis de ambiente do Amazon Cognito. Essas variáveis concedem acesso a itens no DynamoDB por meio de ID de identidade. Para obter mais informações, consulte Uso de condições de política do IAM para controle de acesso refinado no Guia do desenvolvedor do Amazon DynamoDB.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:BatchGetItem", "dynamodb:Query", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem" ], "Resource": [ "arn:aws:dynamodb:us-west-2:123456789012:table/MyTable" ], "Condition": { "ForAllValues:StringEquals": { "dynamodb:LeadingKeys": ["${cognito-identity.amazonaws.com:sub}"] } } } ] }

Conceder uma permissão de identidade para chamar uma função do Lambda

A política de acesso a seguir concede a uma identidade permissão para invocar uma função do Lambda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-west-2:123456789012:function:MyFunction" ] } ] }

Conceder permissão a uma identidade para publicar registros no Kinesis Data Streams

A seguinte política de acesso permite que uma identidade use a operação PutRecord com qualquer Kinesis Data Stream. Ela pode ser aplicada a usuários que precisam adicionar registros de dados a todos os streams em uma conta. Para obter mais informações, consulte Controle do acesso aos recursos do Amazon Kinesis Data Streams usando o IAM no Guia do desenvolvedor do Amazon Kinesis Data Streams.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": [ "arn:aws:kinesis:us-east-1:111122223333:stream/stream1" ] } ] }

Conceder uma identidade acesso aos respectivos dados no armazenamento do Amazon Cognito Sync

A política de acesso a seguir concede a uma identidade permissões apenas para os respectivos dados no armazenamento do Amazon Cognito Sync.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":"cognito-sync:*", "Resource":["arn:aws:cognito-sync:us-east-1:123456789012:identitypool/${cognito-identity.amazonaws.com:aud}/identity/${cognito-identity.amazonaws.com:sub}/*"] }] }