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á.
IAMfunções
Ao criar um grupo de identidades, você é solicitado a atualizar as IAM funções que seus usuários assumem. IAMAs funções 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 estão associadas a uma IAM função específica. Com a IAM função, você pode definir um conjunto de permissões para acessar seus AWS recursos.
Você pode especificar IAM funções 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 obter mais informações, consulte Controle de acesso com base em perfil.
Por padrão, o console do Amazon Cognito cria IAM funções que fornecem acesso ao Amazon Mobile Analytics e ao Amazon Cognito Sync. Como alternativa, você pode optar por usar as IAM funções existentes.
Modifique as IAM funções para permitir ou restringir o acesso a outros serviços. Para fazer isso, faça login no IAM console
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égios mínimos no Guia do IAM usuário.
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 usa IAM funções para gerar credenciais temporárias para os usuários do seu aplicativo. 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 OIDC provedor, ou uma SAML afirmação, 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 a seguir de política de confiança de função permite que o diretor do serviço cognito-identity.amazonaws.com
federado chame o. AWS STS API AssumeRoleWithWebIdentity
A solicitação só será bem-sucedida se o token do grupo de identidades na API solicitação tiver as seguintes afirmações.
-
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 IAM funções 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ção para grupos de identidades, 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, desde grupos de identidades até IAM funções 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 assumir qualquer IAM função AWS STS se ela tiver a política de confiança correta. IAMas funções dos grupos de identidade do Amazon Cognito confiam no diretor do serviço cognito-identity.amazonaws.com
para assumir a função. Essa configuração não é suficiente para proteger suas IAM funções contra o acesso não intencional aos recursos. Funções desse tipo devem aplicar uma condição adicional à política de confiança da função. Você não pode criar ou modificar funções para grupos de identidades sem pelo menos uma das seguintes condições.
cognito-identity.amazonaws.com:aud
-
Restringe a função às operações de um ou mais grupos de identidades. O Amazon Cognito indica o grupo de identidade de origem na
aud
declaração no token do grupo de identidades. cognito-identity.amazonaws.com:amr
-
Restringe a função a um
authenticated
ou a usuáriosunauthenticated
(convidados). O Amazon Cognito indica o estado de autenticação naamr
declaração no token do grupo de identidades. cognito-identity.amazonaws.com:sub
-
Restringe a função a um ou mais usuários por UUID. Esse UUID é o ID de identidade do usuário no grupo de identidades. Esse valor não é o
sub
valor do provedor de identidade original do usuário. O Amazon Cognito indica isso UUID nasub
declaração no token do grupo de identidade.
A autenticação de fluxo aprimorado exige que a IAM função esteja no mesmo Conta da AWS grupo de identidades, mas esse não é o caso na autenticação básica.
Considerações adicionais se aplicam aos grupos de identidade do Amazon Cognito que IAMassumem funções entre contas. As políticas de confiança dessas funções devem aceitar o diretor do cognito-identity.amazonaws.com
serviço e devem conter a cognito-identity.amazonaws.com:aud
condição específica. Para evitar o acesso não intencional aos seus AWS recursos, a chave de aud
condição restringe a função aos usuários dos grupos de identidades no valor da condição.
O token que um grupo de identidades emite para uma identidade contém informações sobre a origem Conta da AWS do grupo de identidades. Quando você apresenta um token do grupo de identidades em uma AssumeRoleWithWebIdentityAPIsolicitação, AWS STS verifica se o grupo de identidades de origem está na Conta da AWS mesma IAM função. Se AWS STS determinar que a solicitação é entre contas, ela verifica se a política de confiança da função tem uma aud
condição. A chamada assume-role falhará se essas condições não estiverem presentes na política de confiança da função. Se a solicitação não for entre contas, essa AWS STS restrição não será aplicada. 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 IAM da política: Variáveis e tags. Você pode usar a sub
condição para restringir ações à identidade do Amazon Cognito IDs em suas 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 IAM de política para federação da web com o Amazon Cognito, consulte IAMe AWS STS condicione as chaves de contexto 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 redução de escopo adiciona um Política de sessão em linha e um AWS política de sessão gerenciada às IAM políticas que você aplica à sua função não autenticada. Como você deve conceder acesso às IAM políticas de sua função e às políticas de sessão, a política de redução de escopo limita o acesso dos usuários a serviços diferentes dos da lista a seguir.
nota
No fluxo básico (clássico), você cria o seu AssumeRoleWithWebIdentityAPIsolicitação 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 aos grupos de identidade do Amazon Cognito e ao API 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 aprimorado, o Amazon Cognito faz uma AssumeRoleWithWebIdentity
API solicitação em segundo plano. Entre os parâmetros dessa solicitação, o Amazon Cognito inclui o seguinte.
-
ID de identidade do usuário.
-
ARNA IAM função que seu 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 |
---|---|
Analytics |
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 Amazon Location Service |
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 |
|
Amazon Location Service |
|
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 seus usuários virem NotAuthorizedException
erros Serviços da AWS que são permitidos pelas políticas atribuídas à IAM função para usuários não autenticados, avalie se você pode remover esse serviço do seu caso de uso. Se você não conseguir, mude para o fluxo básico.
A política de sessão em linha para usuários convidados
O Amazon Cognito primeiro aplica uma política em linha na solicitação de credenciais. IAM A política de sessão em linha restringe as permissões efetivas do usuário de incluir o acesso a qualquer Serviços da AWS fora daqueles na lista a seguir. Você também deve conceder permissões a eles Serviços da AWS nas políticas que você aplica à IAM função 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. Para obter uma visão geral do efeito líquido da política em linha e de outras políticas de sessão, consulteServiços que usuários não autenticados podem acessar.
{ "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ões AWS gerenciadas para convidados
O Amazon Cognito também aplica uma política AWS gerenciada como política de sessão às sessões de fluxo aprimorado de convidados não autenticados. Essa política limita o escopo das permissões de usuários não autenticados com a política. AmazonCognitoUnAuthedIdentitiesSessionPolicy
Você também deve conceder essa permissão nas políticas que você anexa à sua função não autenticadaIAM. As permissões efetivas de um usuário para uma sessão de função assumida são a interseção das IAM políticas atribuídas à sua função e suas políticas 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 .
Para obter uma visão geral do efeito líquido dessa política AWS gerenciada e de outras políticas de sessão, consulteServiços que usuários não autenticados podem acessar.
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", "geo:GetMap*", "geo:SearchPlaceIndex*", "geo:GetPlace", "geo:CalculateRoute*", "geo:*Geofence", "geo:*Geofences", "geo:*DevicePosition*" ], "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:::
amzn-s3-demo-bucket
/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:::amzn-s3-demo-bucket/us-east-1:12345678-1234-1234-1234-123456790ab
. No entanto, a identidade não receberia acesso a outros objetos no arn:aws:s3:::amzn-s3-demo-bucket
.
{ "Version": "2012-10-17", "Statement": [ { "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
amzn-s3-demo-bucket
"], "Condition": {"StringLike": {"s3:prefix": ["${cognito-identity.amazonaws.com:sub}/*"]}} }, { "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket
/${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 Como usar condições IAM políticas para controle de acesso refinado no Amazon DynamoDB Developer Guide.
{ "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 Como controlar o acesso aos IAM recursos do Amazon Kinesis Data Streams usando o 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}/*"] }] }
Permissões e confiança de função
A diferença dessas funções está em seus relacionamentos de confiança. Veja a seguir um exemplo de política de confiança para uma função não autenticada:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
Essa política concede a usuários federados do cognito-identity.amazonaws.com
(o emissor do token do OpenID Connect) permissão para assumir essa função. Além disso, a política restringe o aud
do token, neste caso o ID do grupo de identidades, de acordo com o grupo de identidades. Por fim, a política especifica que um dos membros da matriz da amr
declaração de vários valores do token emitido pela operação do Amazon GetOpenIdToken
API Cognito tem o valor. unauthenticated
Quando o Amazon Cognito cria um token, ele define o amr
do token como unauthenticated
ou authenticated
. Se amr
for authenticated
, o token incluirá todos os provedores usados durante a autenticação. Isso significa que você pode criar uma função que confie apenas nos usuários que fizeram login por meio do Facebook, alterando a condição amr
tal como mostrado a seguir:
"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }
Tenha cuidado ao alterar os relacionamentos de confiança em suas funções ou tentar usar funções entre grupos de identidades. Se você não configurar sua função corretamente para confiar em seu grupo de identidades, uma exceção dos STS resultados, como a seguinte:
AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity
Se você vir essa mensagem, verifique se seu grupo de identidades e o tipo de autenticação têm uma função apropriada.