Comment appliquer l'authentification MFA pour les utilisateurs IAM qui utilisent l'interface de ligne de commande AWS ?

Date de la dernière mise à jour : 16/06/2020

J'ai créé une stratégie de condition Multi-Factor Authentication (MFA) pour limiter l'accès aux services AWS pour les utilisateurs AWS Identity and Access Management (IAM). La stratégie fonctionne avec AWS Management Console, mais pas avec l'interface de ligne de commande AWS (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"
                }
            }
}

Les utilisateurs IAM qui utilisent AWS Management Console sont invités à saisir des informations d'identification d'authentification MFA. Ils peuvent ensuite accéder aux services AWS. Cependant, les utilisateurs IAM avec l'interface de ligne de commande AWS ne sont pas invités à saisir des informations d'identification d'authentification MFA et peuvent accéder aux services AWS.

Solution

La clé MultiFactorAuthPresent s'applique uniquement aux informations d'identification de sécurité temporaires qui vérifient si l'authentification MFA est utilisée. La clé MultiFactorAuthPresent ne refuse pas l'accès aux demandes effectuées à l'aide d'informations d'identification à long terme ou aux demandes MFA avec l'interface de ligne de commande AWS.

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

L'opérateur de condition Bool 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 BoolIfExists 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" } }

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

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