Amazon EC2 : requiert MFA (GetSessionToken) pour des opérations EC2 spécifiques
Cet exemple montre comment vous pouvez créer une politique basée sur l'identité qui autorise un accès total à toutes les opérations d'API AWS dans Amazon EC2. Cependant, il refuse explicitement l'accès aux opérations d'API TerminateInstances
et StopInstances
si l'utilisateur n'est pas authentifié à l'aide de l'authentification MFA. Pour le faire par programmation, l'utilisateur doit inclure des valeurs SerialNumber
et TokenCode
facultatives lors de l'appel de l'opération GetSessionToken
. Cette opération renvoie les informations d'identification temporaires qui ont été authentifiées à l'aide de MFA. Pour en savoir plus sur GetSessionToken, consultez Demande d’informations d’identification temporaires pour les utilisateurs dans des environnements non fiables.
À quoi sert cette politique ?
-
L'instruction
AllowAllActionsForEC2
autorise toutes les actions Amazon EC2. -
L'instruction
DenyStopAndTerminateWhenMFAIsNotPresent
rejette les actionsStopInstances
etTerminateInstances
lorsque le contexte de MFA est manquant. Cela signifie que les actions sont refusées lorsque le contexte d'authentification multi-facteur est manquant (c'est-à-dire, quand l'authentification MFA n'a pas été utilisée). Un refus remplace l'autorisation.
Note
Le contrôle de la condition MultiFactorAuthPresent
de l'instruction Deny
ne doit pas être {"Bool":{"aws:MultiFactorAuthPresent":false}}
, car cette clé n'est pas présente et ne peut pas être évaluée quand l'authentification MFA n'est pas utilisée. Utilisez donc plutôt le contrôle BoolIfExists
pour voir si la clé est présente avant de vérifier la valeur. Pour en savoir plus, consultez Opérateurs de condition ...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} } } ] }