AWS: permite que os usuários do IAM autenticados por MFA gerenciem seus próprios dispositivos com MFA na página My security credentials (Minhas credenciais de segurança) - AWS Identity and Access Management

AWS: permite que os usuários do IAM autenticados por MFA gerenciem seus próprios dispositivos com MFA na página My security credentials (Minhas credenciais de segurança)

Este exemplo mostra como você pode criar uma política baseada em identidade que permita que os usuários do IAM autenticados usando autenticação multifator (MFA) gerenciem seus próprios dispositivos de MFA na página My Security Credentials (Minhas credenciais de segurança). Essa página do AWS Management Console exibe as informações de conta e usuário, mas o usuário só pode visualizar e editar o próprio dispositivo MFA. Para permitir que os usuários gerenciem todas as próprias credenciais com MFA, consulte AWS: permite que os usuários do IAM autenticados por MFA gerenciem as próprias credenciais na página My Security Credentials (Minhas credenciais de segurança).

nota

Se um usuário do IAM com essa política não for autenticado por MFA, essa política negará o acesso a todas as ações da AWS, exceto aquelas necessárias para autenticar usando MFA. Para usar a AWS CLI e a API da AWS, os usuários do IAM devem primeiro recuperar o token de MFA usando a operação GetSessionToken do AWS STS e usar esse token para autenticar a operação desejada. Outras políticas, como políticas baseadas em recurso ou outras políticas baseadas em identidade, podem permitir ações em outros serviços. Esta política negará esse acesso se o usuário do IAM não for autenticado por MFA.

Para saber como os usuários podem acessar a página My Security Credentials (Minhas credenciais de segurança), consulte Como os usuários do IAM alteram a própria senha (console).

O que essa política faz?

  • A instrução AllowViewAccountInfo permite que o usuário visualize detalhes sobre um dispositivo MFA virtual que está habilitado para ele. Essa permissão deve estar em sua própria instrução, pois ele não oferece suporte para especificar um ARN de recurso. Em vez disso, você deve especificar "Resource" : "*".

  • A instrução AllowManageOwnVirtualMFADevice permite que o usuário crie, atualize e exclua o próprio dispositivo MFA virtual. O ARN do recurso dessa instrução permite acesso somente a um dispositivo MFA ou usuário que tenha exatamente o mesmo nome do usuário conectado. Os usuários não podem criar nem excluir nenhum dispositivo MFA virtual que não seja o seu próprio.

  • A instrução AllowManageOwnUserMFA permite que o usuário visualize ou gerencie o próprio dispositivo MFA virtual, U2F ou de hardware. O recurso ARN nesta instrução permite acesso apenas ao próprio usuário do IAM do usuário. Os usuários não podem visualizar ou gerenciar o dispositivo MFA para outros usuários.

  • A instrução DenyAllExceptListedIfNoMFA nega acesso a todas as ações em todos os serviços da AWS, exceto algumas ações listadas, mas somente se o usuário não estiver conectado com MFA. A instrução usa uma combinação de "Deny" e "NotAction" para negar explicitamente acesso a cada ação que não está listada. Os itens listados não são negados ou permitidos por essa instrução. No entanto, as ações são permitidas por outras instruções na política. Para obter mais informações sobre a lógica dessa instrução, consulte NotAction com Deny. Se o usuário está conectado com MFA, ocorrerá uma falha no teste de Condition, e a instrução não negará nenhuma ação. Neste caso, outras políticas ou instruções para o usuário determinam as permissões do usuário.

    Essa instrução garante que quando o usuário não fizer login com MFA, ele só poderá executar as ações listadas. Além disso, eles poderão executar as ações listadas somente se outra instrução ou política permitir acesso a essas ações.

    A versão ...IfExists do operador Bool garante que se a chave aws:MultiFactorAuthPresent estiver ausente, a condição retornará verdadeiro. Isso significa que, ao acessar uma operação de API com credenciais de longo prazo, como uma chave de acesso, o usuário terá seu acesso negado às operações de API não relacionadas ao IAM.

Esta política não permite que os usuários visualizem a página Users (Usuários) no console do IAM ou usem essa página para acessar suas próprias informações de usuário. Para permitir que isso aconteça, adicione ação iam:ListUsers às instruções AllowViewAccountInfo e DenyAllExceptListedIfNoMFA.

Atenção

Não adicione permissão para excluir um dispositivo MFA sem autenticação MFA. Os usuários com essa política podem tentar atribuir um dispositivo MFA a si mesmos e receber um erro informando que eles não estão autorizados a executar iam:DeleteVirtualMFADevice. Se isso acontecer, não adicione essa permissão à instrução DenyAllExceptListedIfNoMFA. Os usuários que não são autenticados usando MFA nunca devem ter permissão para excluir o dispositivo MFA. Os usuários poderão ver esse erro se tiverem começado a atribuir um dispositivo MFA virtual a seu usuário anteriormente e cancelaram o processo. Para resolver esse problema, você ou outro administrador deve excluir o dispositivo MFA existente do usuário usando a AWS CLI ou a API da AWS. Para mais informações, consulte Não estou autorizado a executar: iam:DeleteVirtualMFADevice.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": "iam:ListVirtualMFADevices", "Resource": "*" }, { "Sid": "AllowManageOwnVirtualMFADevice", "Effect": "Allow", "Action": [ "iam:CreateVirtualMFADevice", "iam:DeleteVirtualMFADevice" ], "Resource": "arn:aws:iam::*:mfa/${aws:username}" }, { "Sid": "AllowManageOwnUserMFA", "Effect": "Allow", "Action": [ "iam:DeactivateMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ResyncMFADevice" ], "Resource": "arn:aws:iam::*:user/${aws:username}" }, { "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } } ] }