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
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.
-
Uma declaração
aud
do ID do banco de identidadesus-west-2:abcdefg-1234-5678-910a-0e8443553f95
. -
Uma declaração
amr
deauthenticated
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.
-
ID de identidade do usuário.
-
O ARN do perfil do IAM que o usuário deseja assumir.
-
Um parâmetro
policy
que adiciona uma política de sessão em linha. -
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 |
|
Amazon SageMaker |
|
Amazon Textract |
|
Amazon Sumerian |
|
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
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}/*"] }] }