Permissões e confiança de função - 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á.

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 do da declaração amr de múltiplo valor do token emitido pela operação da API GetOpenIdToken do Amazon 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, ocorrerá uma exceção no STS, semelhante à 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.