Controle de acesso com base em perfil - 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á.

Controle de acesso com base em perfil

Os grupos de identidade do Amazon Cognito atribuem aos usuários autenticados um conjunto de credenciais temporárias com privilégios limitados para acessar seus recursos. AWS As permissões de cada usuário são controladas por meio de IAMfunções que você cria. É 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 IAM função separada com permissões limitadas para usuários convidados que não estão autenticados.

Como criar 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 um dos membros da matriz da amr declaração de vários valores do token emitida pela ação do Amazon GetOpenIdToken API Cognito tem o valor. authenticated

Conceder permissão para perfil de transmissão

Para permitir que um usuário defina funções com permissões que excedam as permissões existentes do usuário em um grupo de identidades, conceda a ele iam:PassRole permissão para passar a função para set-identity-pool-roles API o. Por exemplo, se o usuário não puder gravar no Amazon S3, mas a IAM função que o usuário define no grupo de identidades concede permissão de gravação ao Amazon S3, o usuário só poderá definir essa função iam:PassRole se a permissão for concedida para a função. 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 Amazon Resource Name (ARN) da função. Também é necessário anexar essa política ao usuário. Para obter mais informações, consulte Como trabalhar com políticas gerenciadas.

nota

As funções 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 da função do Lambda.

Como usar 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 cognito:preferred_role reivindicação é o papelARN.

  • A cognito:roles afirmação é uma string separada por vírgula contendo um conjunto de funções permitidas. ARNs

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) valor Precedence. 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 GetCredentialsForIdentityCustomRoleArnparâmetro se ele estiver definido e corresponder a uma função na cognito:roles declaração. Se esse parâmetro não corresponde a uma função em cognito:roles, negue o acesso.

  • Se a solicitação cognito:preferred_role está configurada, use-a.

  • Se a cognito:preferred_role declaração não for definida, a cognito:roles declaração será definida e CustomRoleArn não especificada na chamada paraGetCredentialsForIdentity, a configuração de resolução de função no console ou no AmbiguousRoleResolution campo (no RoleMappings parâmetro do SetIdentityPoolRolesAPI) será usada para determinar a função a ser atribuída.

Como usar mapeamento baseado em regras para atribuir funções a usuários

As regras permitem que você mapeie declarações de um token de provedor de identidade para IAM funções.

Cada regra especifica uma declaração de token (como um atributo de usuário no token de ID de um grupo de usuários do Amazon Cognito), tipo de correspondência, valor e IAM função. 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, você pode criar uma regra que atribua uma IAM função específica para usuários com um valor de atributo custom:dept personalizado deSales.

nota

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 IAM função da primeira regra correspondente é usada, a menos que CustomRoleArn seja especificada para substituir a ordem. Para obter mais informações sobre atributos de usuário em grupos de usuários do Amazon Cognito, consulte Trabalhando com atributos do usuário.

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 não houver correspondência com nenhuma regra, a configuração Resolução de perfil será aplicada a Usar perfil autenticado padrão ou Negar solicitação.

No API eCLI, você pode especificar a função a ser atribuída quando nenhuma regra coincide no AmbiguousRoleResolution campo do RoleMappingtipo, que é especificado no RoleMappings parâmetro do SetIdentityPoolRolesAPI.

Para adicionar mapeamento baseado em regras a um provedor de identidade no console do Amazon Cognito, adicione ou atualize um IdP e selecione Escolher função com regras em Seleção de função. A partir daí, você pode adicionar regras que o provedor de mapas reivindica às IAM funções.

Você pode configurar o mapeamento baseado em regras para provedores de identidade no AWS CLI ou API com o RulesConfiguration campo do RoleMappingtipo. Você pode especificar esse campo no RoleMappings parâmetro do SetIdentityPoolRolesAPI.

Por exemplo, o AWS CLI comando a seguir adiciona uma regra que atribui a função arn:aws:iam::123456789012:role/Sacramento_team_S3_admin aos usuários em sua localização em Sacramento que foram autenticados pelo IdP: OIDC arn:aws:iam::123456789012:oidc-provider/myOIDCIdP

aws cognito-identity set-identity-pool-roles --region us-east-1 --cli-input-json file://role-mapping.json

Conteúdo de role-mapping.json:

{ "IdentityPoolId": "us-east-1:12345678-corner-cafe-123456790ab", "Roles": { "authenticated": "arn:aws:iam::123456789012:role/myS3WriteAccessRole", "unauthenticated": "arn:aws:iam::123456789012:role/myS3ReadAccessRole" }, "RoleMappings": { "arn:aws:iam::123456789012:oidc-provider/myOIDCIdP": { "Type": "Rules", "AmbiguousRoleResolution": "AuthenticatedRole", "RulesConfiguration": { "Rules": [ { "Claim": "locale", "MatchType": "Equals", "Value": "Sacramento", "RoleARN": "arn:aws:iam::123456789012:role/Sacramento_team_S3_admin" } ] } } } }

Para cada grupo de usuários ou outro provedor de autenticação configurado para um grupo de identidades, é possível criar até 25 regras. Este limite não é ajustável. Para obter mais informações, consulte Cotas no Amazon Cognito.

Declarações de token para uso em mapeamento baseado em regras

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. Além das solicitações padrão, os itens a seguir são as solicitações adicionais específicas para o Amazon Cognito:

  • 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

Facebook

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

Google

Um token do Google contém solicitações padrão da especificação do OpenID Connect. Todas as solicitações no token do OpenID estão disponíveis para mapeamento com base em regras. Consulte o site do OpenID Connect do Google para saber mais sobre as solicitações disponíveis no token do Google.

Apple

Um token da Apple contém solicitações padrão da especificação do OpenID Connect. Consulte Authenticating Users with Sign in with Apple na documentação da Apple para saber mais sobre a solicitação disponível no token da Apple. O token da Apple nem sempre contém email.

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. Consulte a documentação do provedor do OpenID para saber mais sobre as solicitações adicionais disponíveis.

SAML

As reivindicações são analisadas a partir da SAML afirmação recebida. Todas as declarações que estão disponíveis na SAML declaração podem ser usadas no mapeamento baseado em regras.

Práticas recomendadas para controle de acesso baseado em função

Importante

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 aplicação para cada atributo de usuário.

Importante

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.

Você pode usar a configuração de resolução de função no console e o RoleMappings parâmetro do SetIdentityPoolRolesAPIpara especificar qual é o comportamento padrão quando a função correta não pode ser determinada a partir do token.