J’ai créé une politique de condition d’authentification multifactorielle (MFA) pour restreindre l’accès aux services AWS pour les utilisateurs de la gestion des identités et des accès AWS (AWS IAM). La politique fonctionne avec la console de gestion AWS, mais pas avec l’interface de la ligne de commande AWS (AWS CLI).
Brève description
L’exemple de politique IAM suivant oblige les utilisateurs IAM à utiliser l’authentification multifactorielle (MFA) pour accéder à des services AWS spécifiques :
{ "Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "false"
}
}
}
Dans la politique précédente, les utilisateurs IAM qui utilisent l’AWS Management Console sont invités à saisir des informations d’authentification MFA pour accéder aux services AWS. Cependant, les utilisateurs IAM qui utilisent l’AWS CLI ne sont pas invités à saisir des informations d'authentification MFA pour accéder aux services AWS.
Résolution
**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Étant donné que la clé aws:MultiFactorAuthPresent n’existe pas dans les demandes d’informations d’identification à long terme, elle ne refuse pas l’accès aux demandes. Si la clé de la politique ne correspond pas à l’opérateur de condition booléen, les valeurs ne correspondent pas.
Les utilisateurs IAM qui utilisent l’AWS Management Console génèrent des informations d’identification temporaires et n’autorisent l’accès que lorsqu’ils utilisent l’authentification multifacteur.
Pour appliquer l’authentification MFA à l’aide de l’AWS CLI, ajoutez l’opérateur de condition IfExists pour vérifier si la clé MultifactorAuthPresent figure dans la demande. La condition booléenne vous permet de restreindre l’accès à l’aide d’une valeur de clé définie sur vrai ou faux. Si la clé MultifactorAuthPresent ne figure pas dans la demande, IfExists évalue l’élément de condition comme étant vrai.
Exemple de stratégie IAM :
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "false"
}
}
}
Remarque : les utilisateurs IAM qui utilisent AWS CLI avec des informations d’identification longue durée se voient refuser l’accès et doivent utiliser MFA pour s’authentifier. Veillez à utiliser un jeton MFA pour authentifier votre session CLI.
Informations connexes
Comment demander aux utilisateurs d'autres comptes AWS d'utiliser l'authentification multifacteur pour accéder à mes compartiments Amazon S3 ?
Utilisation de l’authentification multifactorielle
Attribuer des appareils MFA dans l’AWS CLI ou l’API AWS