Comment appliquer l'authentification MFA pour les utilisateurs IAM qui utilisent AWS CLI ?

Dernière mise à jour : 15/09/2021

J'ai créé une politique de condition d'authentification multifacteur (MFA) pour limiter l'accès aux services AWS pour les utilisateurs AWS Identity and Access Management (IAM). La stratégie fonctionne avec la Console de gestion AWS, mais pas avec AWS Command Line Interface (AWS CLI). Comment utiliser la MFA avec l'interface de ligne de commande AWS ?

Brève description

L'exemple de stratégie IAM suivant exige que les utilisateurs IAM utilisent la 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"
    }
  }
}

Les utilisateurs IAM qui utilisent la Console de gestion AWS sont invités à saisir des informations d'identification d'authentification MFA. Ils peuvent ensuite accéder aux services AWS. Cependant, les utilisateurs IAM qui utilisent AWS CLI ne sont pas invités à saisir des informations d'identification d'authentification MFA et peuvent accéder aux services AWS.

Solution

Remarque : en cas d'erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

La clé MultiFactorAuthPresent n'existe pas dans les demandes effectuées à l'aide d'informations d'identification à long terme. Avec l'opérateur de condition booléen, si la clé de la stratégie n'est pas présente, les valeurs ne correspondent pas. La clé MultiFactorAuthPresent ne refuse pas l'accès aux demandes effectuées à l'aide d'informations d'identification à long terme.

Les utilisateurs IAM qui utilisent la Console de gestion AWS génèrent des informations d'identification temporaires et n'autorisent l'accès que si l'authentification MFA est utilisée.

L'opérateur de condition booléen vous permet de restreindre l'accès avec une valeur de clé définie sur true (vrai) ou false (faux). Vous pouvez ajouter l'opérateur de condition IfExists pour vérifier si la clé MultiFactorAuthPresent est présente dans la demande. Si la clé MultiFactorAuthPresent n'est pas présente, l'opérateurIfExists évalue l'élément de condition comme true (vrai) de la manière suivante :

"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false", "aws:ViaAWSService":"false"} }

Les utilisateurs IAM qui utilisent AWS CLI avec des informations d'identification à long terme se voient refuser l'accès et doivent utiliser MFA pour s'authentifier.

Pour plus d'informations, consultez Opérateurs de condition booléens.