

# Amazon EC2: exige MFA (GetSessionToken) para operações específicas do EC2
<a name="reference_policies_examples_ec2_require-mfa"></a>

Este exemplo mostra como você pode criar uma política baseada em identidade que permita acesso total a todas as operações de API da AWS no Amazon EC2. No entanto, ela negará explicitamente o acesso às operações de API `TerminateInstances` e `StopInstances` se o usuário não estiver autenticado usando [Multi-Factor Authentication (MFA).](id_credentials_mfa.md) Para fazer isso de forma programática, o usuário deve incluir os valores opcionais `SerialNumber` e `TokenCode` ao chamar a operação `GetSessionToken`. Essa operação retorna credenciais temporárias que foram autenticadas usando MFA. Para saber mais sobre GetSessionToken, consulte [Solicitar credenciais para usuários em ambientes não confiáveis](id_credentials_temp_request.md#api_getsessiontoken).

O que essa política faz?
+ A instrução `AllowAllActionsForEC2` permite todas as ações do Amazon EC2.
+ A instrução `DenyStopAndTerminateWhenMFAIsNotPresent` nega as ações `StopInstances` e `TerminateInstances` quando o contexto da MFA está ausente. Isso significa que as ações são negadas quando o contexto da autenticação multifator está ausente (o que significa que a MFA não foi usada). Uma negação substitui a permissão.

**nota**  
A verificação da condição de `MultiFactorAuthPresent` na instrução `Deny` não deve ser `{"Bool":{"aws:MultiFactorAuthPresent":false}}` pois essa chave não está presente e não pode ser avaliada quando a MFA não é usada. Em vez disso, use a verificação `BoolIfExists` para ver se a chave está presente antes de verificar o valor. Para obter mais informações, consulte [Operadores de condição ...IfExists](reference_policies_elements_condition_operators.md#Conditions_IfExists).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowAllActionsForEC2",
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": "*"
        },
        {
            "Sid": "DenyStopAndTerminateWhenMFAIsNotPresent",
            "Effect": "Deny",
            "Action": [
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {"aws:MultiFactorAuthPresent": false}
            }
        }
    ]
}
```

------