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á.
Controle de acesso com base em função
Os grupos de identidades do Amazon Cognito atribuem aos usuários autenticados um conjunto de credenciais temporárias e de privilégio limitado para acessar os recursos da AWS. As permissões para cada usuário são controladas por meio das funções do IAM que você criou. É possível definir regras para escolher a função de cada usuário com base em reivindicações no token de ID do usuário. Você pode definir uma função padrão para usuários autenticados. Você também pode definir uma função da IAM separada com permissões limitadas para usuários convidados que não são autenticados.
Criação de funções para mapeamento de função
É importante adicionar a política de confiança apropriada para cada função para que ela só possa ser assumida pelo Amazon Cognito para os usuários autenticados no grupo de identidades. Aqui está um exemplo dessa política de confiança:
{ "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": "authenticated" } } } ] }
Essa política permite que os usuários federados do cognito-identity.amazonaws.com
(o emissor do token do OpenID Connect) assumam 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 o amr
do token contém o valor authenticated
.
Concessão da permissão de função de transmissão
Para permitir que um usuário do IAM configure funções com permissões além das permissões
existentes para o usuário em um grupo de identidades, conceda a esse usuário permissão
iam:PassRole
para transmitir a função para a API set-identity-pool-roles
. Por exemplo, se o usuário não pode gravar no Amazon S3, mas a função do IAM que
o usuário configurou no grupo de identidades concede permissão de gravação no Amazon
S3, o usuário só pode configurar essa função se a permissão for concedida para a função
iam:PassRole
. O exemplo a seguir mostra como conceder a permissão iam:PassRole
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
Neste exemplo de política, a permissão iam:PassRole
é concedida para a função myS3WriteAccessRole
. A função é especificada usando o ARN da função. Também é necessário anexar essa
política ao usuário ou função do IAM a que o usuário pertence. Para obter mais informações,
consulte Trabalho com políticas gerenciadas.
As funções do Lambda usam política baseada em recursos, em que a política é anexada
diretamente à própria função do Lambda. Ao criar uma regra que invoca uma função do
Lambda você não transmite uma função. Assim, o usuário que está criando a regra não
precisa da permissão do iam:PassRole
. Para obter mais informações sobre a autorização de funções Lambda, consulte Gerenciar permissões: usar uma política de funções Lambda.
Uso de tokens para atribuir funções a usuários
Para os usuários que fazem login por meio de grupos de usuários do Amazon Cognito, as funções podem ser passadas no token de ID que foi atribuído pelo grupo de usuários. As funções são exibidas nas seguintes solicitações no token de ID:
-
A solicitação
cognito:preferred_role
é o nome de região da Amazon (ARN) da função. -
A solicitação
cognito:roles
é uma string separada por vírgulas que contém um conjunto de ARNs de função permitidos.
As solicitações são configuradas da seguinte forma:
-
A solicitação
cognito:preferred_role
é configurada como a função do grupo com o melhor (menor) valorPrecedence
. Se há somente uma função permitida,cognito:preferred_role
é configurado para essa função. Se há várias funções e nenhuma função única tem a melhor precedência, essa solicitação não é configurada. -
A solicitação
cognito:roles
é configurada se há pelo menos uma função.
Ao usar tokens para atribuir funções, se houver várias funções que podem ser atribuídas ao usuário, os grupos de identidades do Amazon Cognito (identidades federadas) escolherão a função da seguinte forma:
-
Use o parâmetro GetCredentialsForIdentity
CustomRoleArn
se ele está configurado e corresponde a uma função na solicitaçãocognito:roles
. Se esse parâmetro não corresponde a uma função emcognito:roles
, negue o acesso. -
Se a solicitação
cognito:preferred_role
está configurada, use-a. -
Se a solicitação
cognito:preferred_role
não está configurada, a solicitaçãocognito:roles
está configurada eCustomRoleArn
não é especificado na chamada paraGetCredentialsForIdentity
, a configuração da Role resolution (Resolução de função) no console ou o campoAmbiguousRoleResolution
(no parâmetroRoleMappings
da API SetIdentityPoolRoles) é usado para determinar a função a ser atribuída.
Uso do mapeamento com base em regra para atribuir funções a usuários
As regras permitem que você mapeie solicitações de um token de provedor de identidade para funções do IAM.
Cada regra especifica uma solicitação de token (como um atributo de usuário no token
de ID de um grupo de usuários do Amazon Cognito ), o tipo de correspondência, um valor
e uma função do IAM . O tipo de correspondência pode ser Equals
, NotEqual
, StartsWith
ou Contains
. Se um usuário tem um valor correspondente para a solicitação, pode assumir essa
função quando recebe credenciais. Por exemplo, é possível criar uma regra que atribui
uma função do IAM específica para usuários com um valor de atributo personalizado
custom:dept
de Sales
.
Nas configurações da regra, os atributos personalizados exigem o prefixo custom:
para diferenciá-los dos atributos padrão.
As regras são avaliadas em ordem, e a função do IAM é usada para a primeira regra
de correspondência, a menos que CustomRoleArn
seja especificado para substituir a ordem. Para obter mais informações sobre atributos
de usuário em grupos de usuários do Amazon Cognito, consulte Configurar atributos do grupo de usuários.
Você pode definir várias regras para um provedor de autenticação no console do grupo
de identidades (identidades federadas). As regras são aplicadas em ordem. É possível
arrastar as regras para alterar a ordem. A primeira regra de correspondência tem precedência.
Se o tipo de correspondência é NotEqual
e a solicitação não existe, a regra não é avaliada. Se nenhuma regra corresponder,
a configuração de resolução de função é aplicada a Use default Authenticated role ou DENY.
Na API e CLI, você pode especificar a função a ser atribuída quando não há regras
correspondentes no campo AmbiguousRoleResolution
do tipo RoleMapping, que é especificado no parâmetro RoleMappings
da API SetIdentityPoolRoles.
Para cada grupo de usuários ou outro provedor de autenticação configurado para um grupo de identidades, é possível criar até 25 regras. Se você precisar de mais de 25 regras para um provedor, abra um caso de suporte de Aumento de limite de serviço.
Solicitações de token para uso em mapeamento com base em regra
Amazon Cognito
Um token de ID do Amazon Cognito é representado como um JSON Web Token (JWT). O token
contém solicitações sobre a identidade do usuário autenticado, como name
, family_name
e phone_number
. Para obter mais informações sobre solicitações padrão, consulte a especificação
OpenID Connect
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
As solicitações a seguir, juntamente com valores possíveis para essas solicitações, podem ser usadas com o Login with Amazon:
-
iss
: www.amazon.com -
aud
: ID do aplicativo -
sub
:sub
do token do Login with Amazon
As solicitações a seguir, juntamente com valores possíveis para essas solicitações, podem ser usadas com o Facebook:
-
iss
: graph.facebook.com -
aud
: ID do aplicativo -
sub
:sub
do token do Facebook
Um token do Google contém solicitações padrão da especificação do OpenID Connect
Apple
Um token da Apple contém solicitações padrão da especificação do OpenID Connectemail
.
OpenID
Todas as solicitações no token do OpenID estão disponíveis para mapeamento com base
em regras. Para obter mais informações sobre solicitações padrão, consulte a especificação
OpenID Connect
SAML
As solicitações são analisadas a partir da declaração do SAML recebida. Todas as solicitações disponíveis na declaração do SAML podem ser usadas no mapeamento com base em regras.
Melhores práticas para controle de acesso com base em função
Se a solicitação que você está mapeando para uma função pode ser modificada pelo usuário final, qualquer usuário final pode assumir a função e definir a política de acordo com a necessidade. Somente mapeie as solicitações que não podem ser configuradas diretamente pelo usuário final para funções com permissões elevadas. Em um grupo de usuários do Amazon Cognito, é possível configurar permissões de leitura e gravação por aplicativo para cada atributo de usuário.
Se você configura funções para grupos em um grupo de usuários do Amazon Cognito, essas funções são transmitidas por meio do token de ID do usuário. Para usar essas funções, também é necessário configurar Choose role from token para a seleção de função autenticada para o grupo de identidades.
É possível usar a configuração de Role resolution (Resolução de função) no console e o parâmetro RoleMappings
da API SetIdentityPoolRoles para especificar o comportamento padrão quando a função correta não pode ser determinada
a partir do token.