

# Amazon EC2: requiere MFA (GetSessionToken) para operaciones EC2 específicas
<a name="reference_policies_examples_ec2_require-mfa"></a>

En este ejemplo se muestra cómo crear una política basada en identidad que permita el acceso completo a todas las operaciones de API de AWS en Amazon EC2. Sin embargo, deniega de forma explícita el acceso a las operaciones de API `StopInstances` y `TerminateInstances` si el usuario no está autenticado mediante la [Multi-Factor Authentication (MFA)](id_credentials_mfa.md). Para hacer esto mediante programación, el usuario debe incluir los valores opcionales `SerialNumber` y `TokenCode` al llamar a la operación `GetSessionToken`. Esta operación devuelve las credenciales temporales que se hayan autenticado con MFA. Para obtener más información acerca del GetSessionToken, consulte [Solicitud de credenciales para usuarios de entornos que no son de confianza](id_credentials_temp_request.md#api_getsessiontoken).

¿Qué hace esta política?
+ La instrucción `AllowAllActionsForEC2` permite todas las acciones de Amazon EC2.
+ La declaración `DenyStopAndTerminateWhenMFAIsNotPresent` rechaza las acciones `StopInstances` y `TerminateInstances` cuando falta el contexto de MFA. Esto significa que las acciones se deniegan cuando falta el contexto de la autenticación multifactor (lo que indica que no se ha utilizado MFA). Una denegación anula el permiso.

**nota**  
La verificación de la condición de `MultiFactorAuthPresent` en la instrucción `Deny` no debe ser `{"Bool":{"aws:MultiFactorAuthPresent":false}}` ya que dicha clave no está presente y no puede evaluarse cuando no se utiliza MFA. Por lo tanto, utilice la verificación `BoolIfExists` para ver si la clave está presente antes de comprobar el valor. Para obtener más información, consulte [Operadores de condición …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}
            }
        }
    ]
}
```

------