Amazon EC2: Requiere MFA (GetSessionToken) para operaciones EC2 específicas - AWS Identity and Access Management

Amazon EC2: Requiere MFA (GetSessionToken) para operaciones EC2 específicas

En este ejemplo se muestra cómo es posible crear una política de IAM con la que permite acceso completo a todas las operaciones de la 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). Para hacer esto mediante programación, el usuario debe incluir los valores opcionales TokenCode y SerialNumber 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 GetSessionToken: credenciales temporales para usuarios de entornos que no son de confianza.

¿Qué hace esta política?

  • La declaración AllowAllActionsForEC2 permite todas las acciones de Amazon EC2.

  • La declaración DenyStopAndTerminateWhenMFAIsNotPresent rechaza las acciones TerminateInstances y StopInstances 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.

{ "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} } } ] }